4.1 µC/OS-Ⅱ在S3C44BOX上的移植
µC/OS-Ⅱ是源代码公开的嵌入式操作系统,是基于优先级的抢占式实时多任务内核,代码采用ANSIC编写,具有很强的可移植性和较好的可裁剪性。µC/OS-Ⅱ提供了实时系统所需的基本功能包括任务调度、任务管理、时间管理、任务间的通信与同步及内存管理等,总是执行处于就绪条件下优先级最高的任务,最多可以管理64个任务,它把连续的大块内存按分区来进行动态管理,可以有效地解决内存碎片的问题。在移植过程中只需对与处理器相关的一些代码进行修改,包括:
(1)处理器头文件OS_ CPU.H ,其中包括了用#define定义的与处理器相关的变量、宏和定义类型;
(2)在OS_CPU_A.ASM中编写4个简单的汇编语言函数:OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()和OSTickISR(),分别用于启动当前就绪的优先级最高的任务、任务间的切换,从ISR中执行切换功能以及时钟节拍ISR功能;
(3)在OS_ CPU_C. C中编写任务堆栈初始化函数OSTaskStInit()和5个必须声明但不需包含代码的HOOK()函数。
4.2 应用程序设计
根据胎儿心电采集系统的特性.将系统主要任务划分如下:系统监控任务(优先级4),按键扫描任务(优先级5),LCD显示刷新任务(优先级6)、存储任务(优先级7),优先级0,1,2,3保留以供系统使用。系统初始化以后,µC/OS-Ⅱ根据优先级和就绪状态对任务进行调度和执行。初始化工作包括初始化所有数据结构、分配堆栈空间、建立任务及任务间通信的信号量、消息队列和优先级。在运行OSStart()函数后,最先运行优先级最高的系统监控任务,查询其他任务是否向其发送消息.如果没有则将监控任务挂起。此时,键盘扫描任务从就绪态切换到运行态。该任务执行完毕,如果检测到有按键操作,则向响应任务发送消息,使它们进入就绪态,同时向监控任务发送消息以示此任务工作正常,并且调用延时函数OSTimedly()使该任务进入挂起态。由于监控任务收到消息,将再次进入运行态,重新查询其他被监视任务的运行信息,没有则进入挂起态。此时其他处于就绪态中优先级相对较高的任务开始执行。当键盘延时时间到,系统内核自动将该任务转入就绪态。如果在运行过程中出现异常,监控任务将按照设定处理表对其进行相应处理.使系统顺利运行。
5结束语
本文设计的胎儿心电信号数据采集系统在Embest S3CEV4O开发板的基础上进行改进和实验,充分利用其本身提供的硬件资源,在实时操作系统µC/OS-Ⅱ基础上进行应用程序开发,显示与存储胎儿心电数据。
本文作者创新点:合理有效设计胎儿心电信号提取电路,结合ARM微处理器自身的优势,进行算法分离,具有良好的工程意义。