移植librt库到uclinux

来源:互联网 发布:java agentpath 编辑:程序博客网 时间:2024/05/03 14:28

     最近一个ARM7+uClinux项目需用到定时器,但定时精度要求不是很高。所以想到了LibRT库。Librt库实现的POSIX 100b.3标准的定时器和消息队列接口,在Linux 2.6内核中已普遍支持,部分后期2.4内核版本也已补丁形式提供了librt库。

    

    uClinux 2.4.x 并未提供现成的Librt库,虽然uClibc0.9.7提供了Librt库,但由于2.4内核的不支持,也无法直接使用。网上查阅了很多资料也没有找到针对uclinux的POSIX timer补丁。考虑到uClinux源于Linux,利用Linux 的posix timer patch给uclinux打上,使uclinux 2.4内核也支持posix timer。从而使librt库能在uclinux 2.4下使用。

      以下是librt 简要移植步骤。

     

      1.从 http://home.concepts-ict.nl/~rhdv/posix.html,下载Posix Timer Patch.选较新的Linux 2.4.8版本的。很遗憾,我的uclinux 2.4内核版本是2.4.x的(x>16),而且目录结构不同,不能直接使用patch命令直接给内核打补丁。 呵,patch补丁是使用‘diff’制作的,当然也可以根据补丁内容纯手工修改文件咯。由于我是ARM平台(nommu),所以只修改linux2.4.x/arch/下的arm和armnmmu目录就行了。(当然我现在利用修改后的结果可以制作出针对uclinux 2.4.x的patch文件了)

 

      2.下载uclibc0.9.7,重新编译librt库得到librt.a静态库。记得make config时配置系统Include路径要修改到uclinux/linux2.4.x下。

 

      3.使用patch后的内核和编译出的librt.a,就可以在uclinux上做Real-time的应用开发了。如果是对定时器精度要求很高的场合,可以考虑移植HRT,soureforge上有相应的开源。

 

      需要Posix Timer Patch for uClinux 2.4和librt.a的朋友,可以跟贴。详细的补丁和librt库编译过程就不方便公布了。