rtai_sched 16608 0 unused
rtai_fifos 33468 0 unused
rtai 20728 1 (rati_sched rtai-fifos)
加载上应用程序需要的RTAI模块后,就可以在RTAI-Linux环境下开发应用程序。
3.3 基于RTAI-Linux的应用程序的开发
针对工业测控系统的数据采集、数据处理、控制、通信等具体应用,将应用程序分为实时任务和非实时任务。实时任务利用RTAI提供的API来开发,编写成内核模块,工作在Linux的核心态。用户进程可利用Linux操作系统提供的大量资源,进行TCP/IP网络通信,开发图形用户界面程序等。实时任务之间、实时任务和非实时任务之间可通过Fifo队列和共享内存等方法通信。RTAI-Linux应用程序结构如图3-1所示。
图3-1 RTAI-Linux应用程序结构图
数据采集任务的实现在rt_process.c中的主要函数如下:
static void data_collect()
{
rtf_put(FIFO,&data_value,sizeof(data_value);/*将采集的数据放入实时FIFO中*/
rt_task_wait_period();
}
int int_module(void)
rtime tick_period;
rt_set_perioDIC_mode(); /*将定时器设置为周期模式*/
rt_task_init(&rt_task,data_collect,l,Stack_size,task_priority,1,0);/*初始化数据采集任务*/
return ()
}
void cleanup_module(void)
{
stop_rt_timer();
rtf_destroy(FIFO);
rt_task_delete(&rt_task);
return;
}
数据显示程序的实现在dISAplay.c中的主要函数:
int main(void)
{
if((fifo=open("/dev/rtf()",()_rdonly))<0)
{
FPrintf(stderr,"Error opening/dev/rtf() ");
exit(1);
}
read(fifo,&data_value,sizeof(data_value));/*用户进程从实时FIFO中读取数据*/
printf("data%f ",data_value)
}
4、结论
本文给出了一种应用于测控系统的基于Linux的嵌入式系统的设计方案,能保证测控任务完成的实时性、可靠性,可以连到工业以太网,实现远程监控,在工业控制领域有很好的应用前景。
本文作者的创新点:在嵌入式系统软件的设计与实现上,提供了开发实时应用程序的接口;利用实时应用接口(RTAI)来增强Linux的实时性,并引入实时硬件抽象层结构(rthal)、实时调度器、实时FIFO等实时服务;给出了在RTAI-Linux环境下开发工业测控系统中实时应用程序的方法。
参考文献:
[1] 王跃科等.基于网络互联的分布式测控系统开放体系结构与技术[J].计算机测量与控制,2002.10
[2] 须文波.基于Linux的嵌入式系统在测控系统中的设计与应用[D].江南大学硕士学位论文,2003.3
[3] 胡在华等.一种新型嵌入式测控网络的设计与应用[J].微型机与应用,2002.21
[4] 陈继荣,黄建华.Linux操作系统实时性分析及改进策略[J].微计算机信息,2005年第21卷.第11-2期.P67-P69