新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > RTOS设备驱动向嵌人式Linux的移植

RTOS设备驱动向嵌人式Linux的移植

作者:时间:2012-04-18来源:网络收藏

I/O映射到

上面描述的基于队列的生产者/消费者I/O模型,仅仅是传统多种设计中所采用的特别方法的一种。让我们继续用这个直接的例子,来讨论几种在嵌入式下的实现方法:

大规模到用户空间

对于只是初步了解设计,或者没有经验的开发者,可能将大多数这种基于队列的程序原封不动地到用户空间。在这种程序映射中,内存映射通过函数mmap()提供的指针可以在用户空间操作物理I/O接口。

#include

#defineREG_SIZE0x4/*deviceregistersize*/

#defineREG_OFFSET0xFA400000

/*physicaladdressofdevice*/

void*mem_ptr;/*de-referenceformemory-mappedaccess*/

intfd;

fd=open(/dev/mem,O_RDWR);/*openphysicalmemory(mustberoot)*/

mem_ptr=mmap((void*)0x0,REG_AREA_SIZE,PROT_READ+PROT_WRITE,

MAP_SHARED,fd,REG_OFFSET);

/*actualcalltommap()*/

一个进程下的用户线程运行类似的中断服务例程或延时任务一样的操作,然后使用SVR4进程间通信函数msgsnd()将消息放进队列,等待被另一个本地线程或者另一个进程利用函数msgrcv()获取。

这种快速缺乏技巧的处理方法是一种较好的原型,但同时给代码模型建立带来了巨大的挑战。首先重要的是要在用户空间扫描中断。象DOSEMU项目提供基于信号的I/O中断方式,但用户空间的中断处理过程非常慢(一般毫秒级中断延时相较内核中断服务例程数十微秒中断延时)。进一步讲,即使采用可抢占Linux内核,和实时调度策略,用户空间的切换调度不能保证I/O线程100%的及时得到执行。

linux操作系统文章专题:linux操作系统详解(linux不再难懂)

上一页 1 2 下一页

关键词: 移植 Linux 驱动 设备 RTOS

评论


相关推荐

技术专区

关闭