嵌入式软件设计相关规范

嵌入式软件设计相关规范

ID:38678595

大小:683.71 KB

页数:18页

时间:2019-06-17

嵌入式软件设计相关规范_第1页
嵌入式软件设计相关规范_第2页
嵌入式软件设计相关规范_第3页
嵌入式软件设计相关规范_第4页
嵌入式软件设计相关规范_第5页
资源描述:

《嵌入式软件设计相关规范》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、嵌入式软件设计相关规范3.1CodeWarrior环境下工程组织规范现在,实验室使用的16位、32位芯片的软件开发平台主要是CodeWarriorIDE,所以下面就以CW环境下的工程文件组织方法为例来介绍嵌入式软件工程组织规范。当然,如果使用其他MCU软件开发环境,也应当尽量遵循这个规范。1.工程文件结构如下图给出了小灯闪烁工程相关源文件的树型结构。图1小灯闪烁工程相关源文件的树型结构1)汇编程序文件在“汇编程序”中包含的文件与工程初始化相关,包括工程启动文件“steup.s”与中断向量表文件“vectors.s”,由于源代码完全使用汇编语言编写,故将其

2、独立作为一类。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小灯工程中的G

3、eneralFun.c文件,它提供了常用的功能性子函数,如延时子函数等,像这些框架性的文件,每个工程都要包含。(3)软件构件每个功能实体,或叫作“构件”,都对应一个软件构件程序文件。例如,图1小灯工程中的Light.c就是用于指示灯控制的“Light”构件。由于头文件基本上是与C语言程序文件一一对应的,所以对头文件也是如此分类,这里不再赘述。3)链接文件链接文件的后缀名为.lcf,它是一个地址链接文件,用于告诉编译器代码是如何安放在具体的地址空间的。4)工程说明工程说明文件用来放对构件的描述、测试用例和系统的硬件接线等信息,还可以将调试心得以及工程的变更

4、信息和注意事项放在其中。特别注意,要重视工程说明文件,必要的工程说明对于软件开发者的交互是非常必要的。2.不带操作系统的嵌入式程序组织结构1)保证各模块的松散耦合性质各个模块之间不能有横向联系,从程序中删除某个模块的代码,不能影响到整个系统的运行。模块之间禁止使用全局变量传递参数,底层模块的驱动不能使用全局变量,尽可能少的使用文件级变量。编写底层驱动模块不要考虑具体项目应用,只依照模块本身应有的功能来编写,要保证其通用性。2)嵌入式程序组织无操作系统的嵌入式程序分主程序和中断处理程序两条主线,设计时主程序一定要有流程图的概念,中断处理程序与主程序通过全局

5、变量进行交互。主程序的流程一定要清晰化,中断处理程序一定简单化,不要过多占用系统时间。3)主程序的结构主程序的一般结构为:芯片初始化—>模块初始化—>内存变量初始化—>开放中断—>进入系统总循环。通常各个模块中断的开启与关闭语句,可在相关的头文件中用宏定义来固定成类似函数调用的形式供主函数和中断处理函数调用。在主程序中开放总中断的语句,应该放置在进入系统总循环之前的几句代码处。在开放总中断之前,一定要保证芯片、模块以及内存变量的初始化圆满完成。若检测到看门狗复位,可以视情况决定是否重新执行内存变量初始化过程。若检测到短时间内在同一地方产生多次COP复位,

6、则可判定系统在该处有问题。要考虑主循环周期的两个极限,即最快和最慢时执行一次的时间。尽可能降低最大极限时间的数值,使得最小和最大两个极限时间的差异不是很大。看门狗喂食不要到处加,不能加在中断处理程序中,一般加在主循环中的开头的语句中,要考虑最大极限时间的影响。要留两个小灯用于系统状态的显示:运行指示灯和错误指示灯。在主循环中,对任务进行合理的切分,用全局的状态变量作为信号量来实现各个任务之间的通信。这样可以有效降低主循环的最大极限时间,提高系统的实时性能。4)中断处理程序除非实时要求非常高,否则不要在中断中直接干预硬件,且中断程序尽可能简单化,使用的全局

7、变量也应尽量少。3.注意事项在实际编程过程中,除了要按上述方法组织工程文件之外,还要注意如下几点:(1)工程中可以定义全局变量,但只能在includes.h中定义。(2)只有main.c和isr.c可以直接使用全局变量,其他程序文件尽量不要使用全局变量,如果要用,也要用传址的方式实现,不得直接使用。(3)main.c文件要尽量做到与芯片无关,即主程序不应直接控制底层构件,而要通过调用构件函数来控制构件。(4)主循环中的代码如果太长,可以按功能划分成多个函数,放在主函数之后,这些函数在main.c中声明即可,不必放在includes.h中。(5)在每个软件

8、构件的头文件中,要有对该构件的描述信息,一般用“/*……*/”括起来,以方便软件

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。