- 文安大众论坛 -

 找回密码
 注册

QQ登录

只需一步,快速开始

广告位招租
查看: 346|回复: 0

深圳培训机构移植RTOS代码和API 到Linux的多叉方法

[复制链接]
  • TA的每日心情
    慵懒
    2018-11-1 09:45
  • 签到天数: 111 天

    [LV.6]常住居民II

    发表于 2017-11-1 18:09:29 | 显示全部楼层 |阅读模式

    移植RTOS代码和API 到Linux的多叉方法  
    大多数项目采用混合的方法,映射所有兼容的或者容易转化的API,linux开发培训重新配置那些对运行速度有要求的部分,linux培训机构和“像鼹鼠那样打洞”重新编码剩余的部分直到编译通过和运行。
    在内核和用户空间能够适用的API对于急需重建和“更快又更脏”的API方法,你不得不重新分配RTOS应用程序和I/O代码以Linux内核和用户空的范例。
    Linux分层次特权访问的结果是,通常仅仅内核代码(驱动程序)能够访问物理内存,其它的用户代码必须有根用户权限才能访问。
    一般情况下,用户空间代码与Linux内核相隔离,只有当内核的出口信息出现在/proc/ksyms 时才能被它直接“看见”。更进一步讲,对于内核显示的系统调用不能够被直接调用,但是可以通过用户库调用。在Linux里面这种分隔是有意来加强稳定性和安全性。
    相反的情况存在在写驱动程序的时候。静态链接的驱动程序专属于整个内核名字空间(不是出口),但是对于用户空间基于进程的符号和入口点完全不可见。并且,当你将驱动程序封装成可动态加载的模块时,你的程序在内核里面通过EXPORT_SYMBOL 宏使用显示的接口。
    网络驱动程序移植
    正如上面指出的,将字符和块驱动程序移植到Linux是直截了当的实践活动。移植网络驱动程序,要困难得多了回想Linux伴随TCP/IP一起成长,而大多数的RTOS 到90年代晚期才将网络考虑进去。即使如此,旧的网络存储常常仅有基本的功能,比如只能处理单个的会话或者同时只能访问一个端口,或者只能支持单一网络媒质的物理接口。在某些情况下网络结构,在允许多重接口和物理类型连接后,才能实现(比如Wind River VxWorks MUX代码)。坏消息是,你不得不重新写大部分或者全部的现成网络接口。好消息是,对于Linux重新划分不是太困难,而且有大量的开源网络设备驱动例子程序可供选择。
    Linux 网络驱动程序框图
    写网络驱动程序不是初学者的事,因为许多RTOS网络驱动程序实际上是从GPL的Linux接口程序演变而来,你也许通过代码本身发现程序易用性。更进一步讲,有大量的,并且一直在增长的系统集成和咨询社区,以合理的收费专注于帮助嵌入式开发者将他们的应用移植到Linux。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    删帖申请|小黑屋|手机版|Archiver|Comsenz Inc. ( 冀ICP备12019373号-1 ) 法律顾问:常全根律师

    GMT+8, 2024-11-16 18:49 , Processed in 0.135692 second(s), 22 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表