嵌入式软件设计相关规范.PDF

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式软件设计相关规范

嵌入式软件设计相关规范 3.1 CodeWarrior 环境下工程组织规范 现在,实验室使用的 16 位、32 位芯片的软件开发平台主要是 CodeWarrior IDE,所以 下面就以 CW 环境下的工程文件组织方法为例来介绍嵌入式软件工程组织规范。当然,如 果使用其他 MCU 软件开发环境,也应当尽量遵循这个规范。 1. 工程文件结构 如下图给出了小灯闪烁工程相关源文件的树型结构。 图1 小灯闪烁工程相关源文件的树型结构 1 )汇编程序文件 在“汇编程序”中包含的文件与工程初始化相关,包括工程启动文件“steup.s ”与中断 向量表文件“vectors.s ”,由于源代码完全使用汇编语言编写,故将其独立作为一类。 2 ) C语言程序文件和头文件 C 语言程序文件和头文件基本上是一一对应的,例如,includes.h 与 main.c 、isr.h 与 isr.c、 GeneralFun.h 与 GeneralFun.c、GPIO.h 与 GPIO.c 等。C 语言程序文件又分为如下 3 类: (1)主函数文件和中断函数处理文件 一般嵌入式软件的执行流程有两条线,一条是主循环,另一条就是中断请求处理,分别 对应了 main.c 和 isr.c 文件,因此将这两个文件与其他文件分开管理。 (2 )总体框架程序文件 总体框架程序文件中包含的是通用程序文件,这些文件在每一个工程都会使用到。例如, 图 1 小灯工程中的 GeneralFun.c 文件,它提供了常用的功能性子函数,如延时子函数等,像 这些框架性的文件,每个工程都要包含。 (3 )软件构件 每个功能实体,或叫作“构件”,都对应一个软件构件程序文件。例如,图 1 小灯工程 中的Light.c 就是用于指示灯控制的“Light ”构件。 由于头文件基本上是与 C 语言程序文件一一对应的,所以对头文件也是如此分类,这 里不再赘述。 3 )链接文件 链接文件的后缀名为.lcf,它是一个地址链接文件,用于告诉编译器代码是如何安放在 具体的地址空间的。 4 )工程说明 工程说明文件用来放对构件的描述、测试用例和系统的硬件接线等信息,还可以将调试 心得以及工程的变更信息和注意事项放在其中。特别注意,要重视工程说明文件,必要的工 程说明对于软件开发者的交互是非常必要的。 2. 不带操作系统的嵌入式程序组织结构 1 )保证各模块的松散耦合性质 各个模块之间不能有横向联系,从程序中删除某个模块的代码,不能影响到整个系统的 运行。模块之间禁止使用全局变量传递参数,底层模块的驱动不能使用全局变量,尽可能少 的使用文件级变量。编写底层驱动模块不要考虑具体项目应用,只依照模块本身应有的功能 来编写,要保证其通用性。 2 )嵌入式程序组织 无操作系统的嵌入式程序分主程序和中断处理程序两条主线,设计时主程序一定要有流 程图的概念,中断处理程序与主程序通过全局变量进行交互。主程序的流程一定要清晰化, 中断处理程序一定简单化,不要过多占用系统时间。 3 )主程序的结构 主程序的一般结构为:芯片初始化—模块初始化— 内存变量初始化—开放中断— 进入系统总循环。通常各个模块中断的开启与关闭语句,可在相关的头文件中用宏定义来固 定成类似函数调用的形式供主函数和中断处理函数调用。在主程序中开放总中断的语句,应 该放置在进入系统总循环之前的几句代码处。在开放总中断之前,一定要保证芯片、模块以 及内存变量的初始化圆满完成。若检测到看门狗复位,可以视情况决定是否重新执行内存变 量初始化过程。若检测到短时间内在同一地方产生多次 COP 复位,则可判定系统在该处有 问题。 要考虑主循环周期的两个极限,即最快和最慢时执行一次的时间。尽可能降低最大极限 时间的数值,使得最小和最大两个极限时间的差异不是很大。看门狗喂食不要到处加,不能 加在中断处理程序中,一般加在主循环中的开头的语句中,要考虑最大极限时间的影响。 要留两个小灯用于系统状态的显示:运行指示灯和错误指示灯。 在主循环中,对任务进行合理的切分,用全局的状态变量作为信号量来实现各个任务之 间的通信。这样可以有效降低主循环的最

文档评论(0)

***** + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8016031115000003

1亿VIP精品文档

相关文档