《嵌入式系统前端开发工具的实现.pdf》由会员分享,可在线阅读,更多相关《嵌入式系统前端开发工具的实现.pdf(4页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、嵌入式软件的开发是当今计算机软件发展的一个热点!并在智能电器领域具有广泛的应用前景但嵌入式软件的调试不是件容易的事!目前调试嵌入式软件普遍使用在线仿真器!#调试方法随着嵌入式系统越来越复杂!传统调试方法已遇到了一定的挑战为了缩短嵌入式软件开发周期!降低开发成本!用纯软件方式实现嵌入式软件仿真开发环境是一种有效途径为此我们成功研制了$%系统!即实时嵌入式软件仿真开发集成环境!#$%语言的设计思想&!#(%语言设计模型&()语言需提供对硬件环境及单片机*+,作形式化描述的能力!即需允许用户从硬件的逻辑行为#逻辑组成和硬件延时等三个方面对数字硬件设备进行描述-./&0)语言大体上至少需具有以下几个特
2、点$123支持自顶向下或自底向上的程序设计方法%1.3它能够描述上至系统下至门级的各级逻辑电路%143具有描述电路中并行#并发关系及时序控制的能力%153支持对硬件延时模型的描述%163具有控制面板描述的能力 在用&0)语言进行硬件描述程序完成后!将这个描述文件进行翻译!生成仿真77程序!再经*77编译器编译和连接!生成可以在,8!9和:+&8;!80:;下面运行的仿真程序 构造&0)语言的设计模型如图?*77编译器&)#(%语言程序结构因&0)语言是基于=0)语言模型!所以在程序结构上应符合=0)标准 无论是哪种硬件环境!用&0)语言所编写的描述程序的结构大体相同它们的程序结构如下$A3外部
3、说明部分这里&外部有两层意思其一!它存在于设计实体说明与构造之外%其二!在这一部分可以说明所有的描述程序将要使用的外部函数!这些函数的定义存在于其它77文件或程序库中!它们将在77仿真程序编译时被编译和连接1.3设计实体说明部分实体说明部分所表现的是环境参数和各管脚信息!它的形式$BCDEDF实体名字EGHBCBIEJK环境参数说明3 LMNIDK管脚序列说明3 OBCP实体名字OK43设计实体构造部分实体的构造部分真正对目标硬件环境进行描述它的形式为$QIJREDBJDSIB构造体名字NT实体名字EG构造体说明部分UBHEC刁红宇!李文馨!南阳理工学院!河南 南阳!#$许昌学院电气信息工程学
4、院!河南 许昌!%&$嵌入式系统前端开发工具的实现摘要!在嵌入式系统仿真开发环境中!为了能够对嵌入式系统的硬件环境和单片机()进行仿真!就必然需要对硬件环境以及()作形式化的描述#在硬件描述语言标准*+,-语言基础上!结合.语言的语法规则!设计并实现了嵌入式系统前端开发工具/+,-语言#本文介绍了/+,-语言的设计思想及编译器实现的主要技术#首先介绍了/+,-语言的设计模型和程序结构!然后介绍/+,-语言编译器的主要实现技术#关键词!嵌入式软件嵌入式系统仿真硬件描述语言!*万方数据构造体描述部分!#构造体名字$实体的构造部分主要含有以下两个部分!实体变量的说明存在于构造体的说明部分 它包括信号
5、变量的说明和通用变量的说明#信号变量被用来表示信号通用变量是指作用于实体构造部分的普通变量 信号变量与通用变量的作用域相同 它们对于设计实体外部无效#它们的作用均为联系$协调各个进程这一点好象高级程序设计语言中全局变量 起到联系各个函数的作用#进程语句部分存在于构造体描述部分 是对硬件环境进行形式描述的主要方式#它的语句形式为!进程名%&()!*+激发信号集,内部说明部分-!./内部语句部分!#&()!*$进程语句是0123语言中最重要的部分#在描述程序中 每一个进程语句表示硬件环境中的一个有一定的独立功能的模块 一个程序可能需要诸多的进程语句来表示硬件环境中的诸多模块#在仿真程序中这些进程语
6、句是并发执行的#!#$%编译器&的实现()&工作流程将0123程序翻译成455仿真源程序的工具是67系统提供的04编译器它的任务是对0123源描述文件进行语法检测和语义检查如果没有任何错误出现则生成相应的目标455文件#0123语言程序描述硬件之间的并发和同步关系以及资源共享的特点这些都必须在相应的455程序中得到体现#一个0123程序翻译成什么样的455程序使得仿真程序具有高效是04面临的第一个问题#在89:9 455系统应用程序库中提供了被称作虚拟进程的;来运行#设计实体类的首项工作就是初始化数据类然后启动所有进程将数据类的成员作为每个进程启动的参数#这样就起到了共享数据类的作用#0123
7、编译器内部工作流程如图?#04程序的工作纯属于一个语言识别的过程!&为0123程序的预处理部分我们使用了ABC提供的3 0C和D844工具来辅助实现工作#不必去操心0123源程序语法错误的检查我们关心的只是源程序的语义错误0123大部分语义限制都与455相同#(&中采用的主要数据结构对于语言的编译来说 确定数据结构是第一重要的工作实现某种语言的识别合理的数据结构的设计不止一种EFG#04中所使用的主要数据结构分别是!标识符节点结构$类型节点数据结构$目标树节点结构#例如标识符节点结构定义如下!;H&!#!I*;J);B2K6;J);LB2KM;$*;J);B2K6;J);N!JON B2KAP
8、20$9DM0KAP20$Q860KAP20$60RKAP20$9R00KAP20$S(#!K9H&!$!用于区分节点种类6;/./#KAO!$!表示该标识符的名字B;/#K4T*$!表示该标识符的种类3(./#KUT.*$!表示该标识符的标志9H&!K&;/#K9H&!$!表示该标识符的数据类型9A(#!KM;/#K/;VT$!表示一个标识符的初值/(N4W)WVT$*万方数据!#$#%&()*+,-.-&%&(/#.01 2%&(3*045%*046#.(70489%:(!存放常数标识符的值;#.04=02#?!存放同一说明语句所说明的各个变量!#.04=A#(!存放不同说明语句说明的变量
9、7(每当遇到一个新的标识符!如变量名或者是函数名!就应该将其存贮到一个标识符节点之中!以便将来判定其是否被重新定义本结构是BCD语义检查中最首要最核心的结构!它的各个域作用限于篇幅在此就不详细描述了类型节点数据结构是语言识别中一个最重要的结构之一!它存贮一个标识符或常数的类型属性!以及函数的返回类型!以及各种基本类型!如整型#字符型等对于高级语言来说!它要能够存贮诸如指针#数组#结构等复合类型目标树节点结构是为存入语句#表达式级的信息!当没有错误发生时为生成目标语言提供方便!结束语BCEFGHIJ单片机为例而开发的)BKL演示程序已得到了验证本文仅将BC)M语言开发过程中一些设计思想及主要实现
10、技术作了简单论述!以供读者在设计语言过程中参考参考文献!NIO3&P0Q R!S&.&T&/!U&V2G0W/699P&.#2$&3CM X.*#Y4 X*.Z,QQQ 2T2#Z;BBB.&2&9#0*2*Z6+#.Y044 20_*X;#_. 0.+0#2&4/T2#Z2!Iaab!IJcde$dab!EHbWNfO陈定君!郭晓东!刘积仁等W嵌入式软件仿真开发技术的研究W计算机软件国家工程中心Iaad论文集W沈阳$东北大学出版社!IaadW fFJ!fFaWNgO小华!泓清!晓舟编Wh/M编译器与解释器实用开发技巧W北京$希望电脑公司WNJOB4i:.42/!M:%:_*M!M B#
11、:W20_*XZj444 2T2#Z 2$R*.Z:Z*42!%:04:#0*!2T#P202W h.*X#P;BBB!IaaE!Fbcgk$gdd!gaHWNbO郭晓东!刘积仁等W基于模拟的嵌入式系统开发环境W东北大学学报c自然科学版kIaaa!fHcgk$fgd!fgF W!#!#$%&()*!#$%&()*+,+,-./0123456789:;?AB$%2(2CD2EFGHIJK#LMNMNOPQ34:(RSETGUV?T4-+RSWXYSSZ_567abcKdefgh567aiK:(jk3YS!#$%&(.lmno)*pdqrs/0&11+tuT4567avwxy567LzG567a|
12、?(jkK:(zG?zGOP?s&567?K?:?567def?2?dK?z?k567?(K?f?&EF?C?z?I?tK567?d?&?投稿信箱!#$%&()*+,)(*联系电话!-./0123-324传真!-11/0123-351/6万方数据嵌入式系统前端开发工具的实现嵌入式系统前端开发工具的实现作者:刁红宇,李文馨作者单位:刁红宇(南阳理工学院,河南,南阳,473000),李文馨(许昌学院电气信息工程学院,河南,许昌,461000)刊名:电脑知识与技术(认证考试)英文刊名:COMPUTER KNOWLEDGE&TECHNOLOGY年,卷(期):2004(10)参考文献(5条)参考文献(5
13、条)1.郭晓东;刘积仁 基于模拟的嵌入式系统开发环境期刊论文-东北大学学报(自然科学版)1999(03)2.Edwards S;L avagnoL;Lee E A Design of embedded system s:Formalmodels,validation,synthesis 1997(03)3.小华;泓清;晓舟 PASCAL编译器与解释器实用开发技巧4.陈定君;郭晓东;刘积仁 嵌入式软件仿真开发技术的研究 19965.Vahid F;Narayan S;Gajski D Spec charts:a VHDL front-end for embedded system 1995(06)本文链接:http:/