嵌入式系统通用的应用软件结构研究
为了跟踪每一个内存分区,μC/OS-II使用了内存控制块的数据结构,主要有:
OSMemAddr—指向内存分区起始地址的指针;
OSMemFreeList—指向下一个空闲控制块或下一个空闲内存块的指针;
OSMemBlkSize—内存分区中内存块的大小,是用户建立该内存分区时指定的;
OSMemB1ks—内存分区中总的内存块数量,是用户建立该内存分区时指定的;
OSMemNFree—内存分区中当前可以得到的空闲内存块数量。
在μC/OS-II中,也可以使用常规的malloc()和free()内存管理函数来增强其可移植性,但在使用更严格的场合,应使用系统提供的特殊的内存管理。
2 应用软件
2.1 应用软件原型
对于8051单片机系统的编程,最基本的架构是一个无限循环,应用的所有事情基本上都是在这个超循环中实现的。在这种系统中,系统上只有一个任务在运行,应用就是整个系统,而整个系统就是一个应用。
与这种简单系统相似,超循环结构在复杂的实时操作系统μC/OS-II中也是一个基本结构;但不再是系统级的,而只是任务级的。图1为超循环的结构示意。
(凹丫丫范文网fanwen.oyaya.net收集整理)
在一个应用中,至少有一个这样的任务,它包含这样一个超循环,以使其拥有与应用相同的生存期,并由它完成应用的全部或部分功能。图2为应用软件结构框图。
2.2 基本应用软件结构
应用软件结构存在不同性,是由应用本身决定的;但作为基本结构,则是相似甚至是相同的。因为对于不同的系统,所调用的函数是不同的。下面给出基本应用软件结构的文字描述。
①声明系统的包含文件。
②声明全局数据:任务数、任务的栈空间等。
③主函数:
*系统初始化;
*创建主任务;
*启动多任务执行。
④主任务:
*主任务初始化;
*若必要,可创立多个子任务;
*进入超循环或退出主任务。
⑤子任务:
*子任务初始化;
*进入超循环或退出子任务。
2.3 应用软件实例
(1)样例1
为了简要说明软件结构思想,我们在PC平台、Windows 98系统下,采用了Borland公司的C++命令行编译环境,说明我们的第一应用。
其中文件的主要功能,就是显示一个HelloμC/OS-II embedded world!字符串。由于其是在μC/OS-II下实现的,与原理有相通性,这里就不再更多介绍了。
《嵌入式系统通用的应用软件结构研究(第2页)》