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