基于嵌入式操作系统的控制系统平台设计
3.1.4基于RTAI-Linux的应用程序开发
在编写基于RTAI-Linux的应用程序时,根据实时系统的具体要求,将应用程序分为实时任务和非实时任务。实时任务是实时模块,作为Linux核心可加载模块运行在核心态。一般地,定义init_module()函数,它在执行insmod命令装载模块时被调用,在该函数中一般是作一些初试化工作,并且启动实时任务。同样的,还需要定义cleanup_module()函数,它在执行rmmod卸载模块时被调用,在该函数中一般是做一些资源释放工作。实时任务的设计应该尽可能简单,仅包含那些有强实时要求的处理模块,如实时数据采集、外部设备控制等。
非实时任务是普通的Linux进程,它在用户态运行,运行那些对实时要求不高的任务,如数据处理、图形显示等。
实时任务(RTAI核心态)并不能直接调用系统调用,它必须通过特定的方法和非实时任务(Linux进程)进行通信。它们可以通过共享内存和FIFO等方法通信。
基于RTAI应用程序的结构图如图2所示。
图2 RTAI应用程序结构图
3.2实时数据库管理与通信
本系统的实时数据库管理着全局I/O数据。通过硬件驱动程序,将数据采集,并放入到实时数据库中,同时,上层软件从实时数据库中获得数据。
linux操作系统文章专题:linux操作系统详解(linux不再难懂)
评论