Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->嵌入式系统 ->正文

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

来源: 作者: 时间:2007-04-11 点击: [收藏] [投稿]

基于API的方法

对于急于摆脱旧RTOS,或者尝试把原型综合在一起的开发者, 更倾向于把很多RTOS映射或者转化为相当Linux API。程序的接口几乎是透明的(兼容的API,IPC,系统数据类型等)。其余部分可以通过用#define 重新定义和使用宏来解决。剩下的部分需要重新编码,作为完整抽象层的一部分。

通过使用仿真库-很多商业嵌入式Linux都带有(比如我们公司的针对Wind River VxWorks 和 pSOS的仿真库),或者使用第三方公司提供的API映射包,比如MapuSoft,能够使你在移植基于API的程序时有良好的开端。

移植RTOS代码和API 到Linux的多叉方法

大多数项目采用混合的方法,映射所有兼容的或者容易转化的API,重新配置那些对运行速度有要求的部分,重新编写剩余的部分代码直到编译通过和可以运行为止。

在内核和用户空间适用的API

对于需要重新编写和其他API实现方法,你得重新分配RTOS应用程序和I/O代码和Linux内核/用户空间相对应。

有两个非常重要的区别:

· RTOS平等地让应用程序和I/O代码能够访问任何地址,几乎可以进行任意操作, Linux则更讲究应用级别和权限。

· 旧的RTOS代码能够(至少在链接时)“看见”每一个符号和系统的入口点,Linux 用户代码是分离的,内核程序和用户程序完全分开。

Linux分层权限访问的结果是,仅内核代码(驱动程序)能够访问物理内存,其它用户代码必须有根用户权限才能访问。

一般情况下,用户空间代码与Linux内核相隔离,只有当内核的信息出现在/proc/ksyms 时才能被直接“看见”。进一步讲,不能直接调用对于内核可见的系统调用,只能通过用户库函数调用。Linux这种分隔是有意用来加强稳定性和安全性。

相反的当写驱动程序的时,静态链接的驱动程序专属于整个内核名字空间(不是出口),但是对于基于进程的用户空间,符号和入口点完全不可见。并且,当驱动程序封装成可动态加载的模块时,程序在内核里面通过EXPORT_SYMBOL 宏来使用显示的接口。

 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Linux操作系统的嵌入式领域面临新挑战   下一篇:Linux嵌入式系统与硬件平台的关系

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号