考虑到系统将来可扩展图像采集功能和复杂的人机界面等因素,在S3C44B0X 上移植了μC/OS-II操作系统。μC/OS-II 是目前流行的免费公开源代码的实时操作系统。它不仅具有结构小巧、可固化、可裁剪、多任务和可剥夺型的实时内核等特点,其实时性、稳定性和可靠性也得到了广泛认可。μC/OS-II 的最小内核可编译至1.5KB,可广泛应用于从8 位到64 位单片机的各种不同类型、不同规模的嵌入式系统。在内存使用方面,μC/OS-II 是可裁剪的实时内核,在应用中需要调度的任务越多,需要的RAM 空间越大。
以运行20 个任务进行估算,μC/OS-II 内核占用不到2KB 的RAM 空间,可以使用20 个信号量、邮箱等来完成任务间的同步与通信。
系统以S3C44B0X 的T0 定时器作为操作系统的时钟源,中断频率为10ms。系统每隔10ms 就调用一下键盘查询程序以实时响应键盘事件,串口和CPU之间的SPI 通信采用中断方式接收和发送。任何时候只要没有关中断,中断的执行就高于任何任务以保证通信的实时性。根据控制系统的工作要求,任务可划分为键盘任务,茶杯给水任务,茶杯给水定时设置任务,无影灯任务,LED 指示灯任务,报警信息任务和冲洗痰盂任务。
然后,用OSTaskCreate( )函数建立7 个任务。最后,在起始任务中将它本身删除掉。
(1) 键盘任务:调用OSSemPend(Sem_Keyboard,0,&err)来获得信号量。获得信号量后,任务将调用邮箱发送消息任务OSMboxPost (OS_EVENT*pevent,void*msg)唤醒相应的其它任务。
(2) 茶杯给水任务:向茶杯中加水。该任务通过OSMboxPost(Mbox_Cup,Msg_Cup)被唤醒。
(3) 茶杯给水定时设置任务:设置茶杯给水定时时间。该任务通过OSMboxPost(Mbox_CupSetting,Msg_CupSetting)被唤醒。
(4) 报警信息任务:牙椅运动到达障碍位置报警等的报警信息,并进行相应的处理。该任务调用OSSemPend(Sem_AlARMTask,0,&err)获得信号量。
(5) 冲洗痰盂任务:冲洗痰盂。该任务通过OSMboxPost (Mbox_Ty,Msg_Ty 被唤醒。
(6) LED 灯指示任务:通过动态扫描方式点亮相应的键盘指示灯来指示当前的系统工作状态。该任务通过OSMboxPost (Mbox_LED,Msg_LED)被唤醒。
(7) 无影灯任务:开关及连续调节无影灯亮度。
该任务通过OSMboxPost(Mbox_Move,Msg_Move)被唤醒。
在系统中,设置任务1 的优先级最高,依次为任务2、任务3 至任务6,程序流程如图3所示。
在上述任务中,CPU 主要是接受键盘的输入以唤醒其它相应任务,另外还有相应的记录位置的任务和与上位机通信的任务,这里不再做详细介绍。
3 控制系统调试结果
长时间口腔诊疗应用调试运行,本牙椅控制系统能够及时响应输入并按要求运动,返回的记忆位置误差控制在1mm 内,茶杯水位误差不超过2mm,运行结果表明,控制系统与上位机的通信及两CPU 之间通信实时性、可靠性均满足设计要求,且整个系统运行平稳可靠,便于调试和维护,提高了牙椅自动化水平和档次。
4 结语
本文采用嵌入式处理器和实时多任务操作系统增强了系统的功能,提高了系统的可靠性、实时性并使系统具有良好的可扩展性,便于后续扩展图像采集和人机界面功能,为进一步开发高端产品奠定基础。