您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

Arm+μClinux应用程序开发实战讲解

发布日期:2011-06-03

clinux arm clinux uclinux应用程序 uclinux应用软件     μClinux作为嵌入式体系的上风在于:开源,免费,稳固及强大的网络结果!与标准LINUX的紧张区别在于不支持MMU及文件体系的差别!本身组建ARM+μClinux软件开辟平台的进程:下载编译东西(arm-elf-tools)并摆设,下载内核源码(uClinux-Samsung-20020318.Tar),解压,根据须要淘汰结果模块,编译,终极天生BIN文件!举例阐发白添加配置驱动的进程,紧张为通过register-chrdev()函数注册配置,利用file-operations数据布局实现open()、read()等配置利用结果!举例阐发添加应用步调的进程!
  
  比年来随着信息家电和手持配置的应用,嵌入式体系得到了极大的生长。环球每年生产的CPU中有超过跨过80%是应用于专用性很强的种种嵌入式体系,而最初,这类CPU仅举行一些大抵的控制,体系大多在超等循环加克制的要领下变乱,而随着32位高性能专用CPU的出现(如ARM),嵌入式体系可以大概适应巨大的控制,举行多任务的处理惩罚处罚,极大的提拔了屈从。固然这齐备还需嵌入式利用体系的支持。嵌入式Linux以其特有的魅力在市场中垂垂赢得了众
多用户的青睐,本文即先容了μClinux的开辟环境的组建流程,及应用步调和驱动步调的开辟进程。

    1 ARM-μClinux的简介  
  Linux是在90年代初出现,近几年渐受欢迎的利用体系,其最大特点是开放源代码。它原来被筹划为桌面体系,如今广泛应用于办事器范畴。而在嵌入式体系的范畴中,linux垂垂成为新的热门。
  μClinux便是如今嵌入式linux中最盛行的一种。μClinux是Micro-Control-Linux的缩写,字面上的明白便是”针对微控制范畴而筹划的Linux体系”,它和标准的linux的区别,也即μClinux的小型化表如今以下几点:
  起首,μClinux不支持MMU(内存办理单位),这是μClinux最明显的特性。μClinux采取实存储器办理战略举行存储器的分页办理,这有别于标准linux利用的假造存储器技能,从易用性上来说是一种倒退,由于这对开辟职员提出了更多的恳求。但是MMU须要相应的硬件支持,而在嵌入式体系中出于资源和应用的思量,很多微控制器并没有相应支持MMU的硬件,以是没有MMU并不影响很多嵌入式体系选择μClinux利用体系。
  其次,μClinux默认文件体系为romfs,相敷衍标准linux一样通常采取的ext2文件体系恳求更少的空间,这紧张表如今两个方面,一是内核支持romfs文件体系所需的代码相对更少;二是romfs本身比较大抵,在创建文件体系超等块时所需存储空间较小。但是romfs不支持动态擦写生存。
  再次,μClinux重写了步调库,对标准linux日益巨大的应用步调库和驱动步调库做了相应的修改。值得一提的是,μClinux对步调库采取静态连接的情势,这是由μClinux内存办理情势决定的。
  由此,μClinux的容量有了大幅度的减小,整个利用体系的代码以致小于900 K。纵然云云,μClinux仍旧保持了linux的紧张长处,如稳固性,强大的网络结果和大方的文件体系支持等。同时μClinux已经告成移植到大部分嵌入式处理惩罚处罚器中,海内已有公司告成推出带μClinux利用体系的产品。
  在嵌入式范畴中,32 bit嵌入式处理惩罚处罚器的内核底子采取RISC指令集,此中以ARM公司的ARM核和MOTOROLA公司的68 K/COLDFIRE系列最为盛行,而在手持配置范畴上更是ARM核的天下。
  本文对μClinux开辟应用的简介便是基于μClinux-Samsung-20020318.Tar+readhat9.0+arm-elf-tools-20030314.Sh软件平台,配套的ARM芯片是三星4510。

    2 开辟平台的创建  
  创建μClinux的开辟环境不过乎两种环境:一是购买商家发行的套件;二是利用网上资源本身组建。而后者省钱且能学到更多东西,是很多喜好者或弟子的首选,下面列出本身组建步调,以供参考:
1) 起首摆设reahat9.0,细致见其他干系数据;
  2) 在mac.Os.nctu.Edu.Tw网站(台湾交大的一个专门针对sumsung4510芯片的μClinux网站)上下载源码,μClinux-Samsung-20020318.Tar和arm-elf-tools-20030314.Sh;
  3) 然后解压文件:在redhat的终端中切换到源码目次下实行以下下令:
  sh arm-elf-tools-20030314.Sh  //即摆设ARM-GCC东西
  tar xzfμClinux-Samsung-20020318.Tar.Gz //即解压源码
  4) 编译内核:进到解开的μClinux目次中,依次实行以下下令:
  make menuconfig在出现的对话框选中Samsung/4510B和uC-libc及别的所需选项
    make dep
    make clean
    make lib-only
    make user-only
    make romfs
  make image在这步会出现错误报告,可敷衍连续下面的下令make
  着末在/images目次下可看到二进制的内核文件,即image.Ram和image.Rom,前者是未经压缩的RAM版本内核,后者相反。把image.Rom烧录到flash中,重新上电,在串口1中即可看到启动信息,串口的波特率为19 200。如许Arm-μClinux的开辟环境就搭建告成。

    3 μClinux的应用开辟:  
  在实际项目开辟中,对μClinux的应用开辟会合在两个方面,即驱动步调和用户步调的编写。
μClinux的驱动步调库不大概包括实际项目体系中全部外围硬件的驱动,以是在应用开辟中,编写驱动步调是一个告急步调,驱动步调筹划的优劣直接影响体系运行的稳固性和运行屈从。而嵌入式利用体系的精良结果终极是由应用步调表现出来的,以是应用步调的优劣是影响嵌入式产品的告急因素,稳固高效的应用步调取决于开辟职员对μClinux体系的熟习水温和自身的编程经历。下面对这两个方面作个简介:
  A.驱动步调的编写:
  配置驱动步调是内核和呆板硬件之间的接口。 

    根据差别的配置驱动步调分为两类:字符配置和块配置;前者是直接读取数据,即I/O接口的恳求直接被送到配置上;而后者的数据是通过内核缓冲区举行传输的!Linux驱动步调的编译有两种要领:即静态编译进内核,和编译成模块供动态加载或卸载!由于μClinux不支持动态加载或卸载,故只能采取静态编译的要领!由于涉及到对硬件的利用而容易使体系瓦解,以是编写配置驱动步调时除了夸大高效,同时还恳求沉寂!
  一个典范的驱动步调,大概上可以分为以下两个方面:
  1) 注册配置:在体系初启时,必须将配置登记到相应的配置数组,比喻 :敷衍字符驱动配置来说,要利用register-chrdev()来注册配置的驱动号,然后对这个配置的全部调用都用这个配置号来实现;
  2) 定义结果函数:敷衍每一个驱动函数来说,都有一些和此配置密切干系的结果函数,就最常用的字符配置来说,都存在着诸如open()、read()、write()、ioctrol()这一类的利用。当体系调用这些利用时,将主动的利用file-operations布局中映射的函数来实现细致的利用;
  在编写驱动步调前,不得不提file-operations这个布局,每个配置都有本身的file-operations布局,它定义了配置的底子入口点,即上面提到的结果函数。  下面以一个大抵的演示例子,阐发编写字符配置驱动步调的细致进程,配置取名为“test”,配置号定为254,固然这个配置并没有涉及真正的硬件,仅是从内核空间拷贝了一些特定命据到用户空间:
  第一步:在目次/linux-2.4/drives/char编写源步调test.C,源码如下:
头文件和全局变量:






   4) 修改vendor/Samsung/4510b/Makefile,创配置置装备摆设节点:
  在12---35行间,DEVICE部分添加如下内容test,c,254,0
  5) make menuconfig,在character device选中testdevice
  如许在重新编译的内核中,就包括了名为“test”的配置驱动,下面的例子是用于验证这个配置驱动步调的,至于怎样运行这个验证步调将在下面“应用步调的编写”一节中讲授:


    B.应用步调的编写
  在μCLinux的/user目次下提供很多资源供开辟者参考。下面以上节提到的源步调为例,阐发在
μCLinux中参加本身应用步调的进程。
  第一步:起首在/user/目次下创建本身的文件夹如,取名apptest,然后在新建文件夹(apptest)下编辑本身的应用步调apptest.C(源码为上面的配置驱动验证步调),然后参照user目次下其他应用步调编写本身的makefile,同样生存在文件apptest下;
  第二步:在/user/Makefile中得当位置参加下行语句:
  dir-$(CONFIG-USER-APPTEST-APPTEST)+=apptest
  第三步:在/config/Configure.Help的得当位置添加以下语句:
CONFIG-USER-APPTEST-APPTESTThis programdoes APPTESTthingsto your bars.
  第四步:在/config/config.In的得当位置添加以下语句:
  bool’apptest’CONFIG-USER-APPTEST-A-PPTEST
  着末再重新编译内核,在make menuconfig时,选中本身的应用步调,完成后在/bin目次可以望见ap-ptest的可实行文件,通过控制表面直接输入该文件名即可运行该步调!固然也可以在文件vendor/Sam-sung/4510B/rc中添加文件名apptest,重新编译,在uclinux启动后主动实行该应用步调! 

  
  4 结束语  
  嵌入式体系已垂垂成为后PC时期的主导,而嵌入式利用体系μClinux凭其大方的性能和广泛的技能支持应该有更广阔的应用远景。本文举例阐发白μClinux的开辟应用的进程,可作为入门引导。 

 
   参考文献 

    [1] Alessandro Rubini和Jonathan Corbet着,魏永明等译LINUX配置驱动步调(第二版)中国电力出版社.2002年10月. 
    [2] 邹思轶主编.嵌入式Linux筹划与应用.清华大学出版社.2002. 
    [3] 王学龙着.嵌入式Linux体系筹划与应用.清华大学出版社.2001. 
    [4] Rick Grehan,Robert Moote,lngo Cyliax着,许汝峰译.32位嵌入式体系编程.中国电力出版社.2001年3月.