您当前的位置:五五电子网电子知识单片机-工控设备嵌入式系统-技术基于AT91RM9200的ARM Linux的移植方法 正文
基于AT91RM9200的ARM Linux的移植方法

基于AT91RM9200的ARM Linux的移植方法

点击数:7157 次   录入时间:03-04 11:53:18   整理:http://www.55dianzi.com   嵌入式系统-技术

    3.3 文件系统的移植

    linux采用文件系统组织系统中的文件和设备,为设备和用户程序提供统一接口。linux要启动起来还需要有根文件系统。根文件系统的作用是存放各种工具(如Linux命令)、应用程序、必需的链接库等等。通常用busybox来制作根文件系统,在busybox中包含一百多种Linux上标准的工具程序, 而这些工具程序仅需几百k空间。busybox使用非常方便, 只要建立一个符号连接即可, 用户可以通过配置Config.h 和Makefile文件来定制busybox。将busybox复制到bin目录中,分别使用ln-s 建立每一个命令的符号连接。但应该注意的是busybox需要glibc支持(如果使用静态连接则不需要glibc 库文件),因此还需要将运行busybox所需的库文件copy到lib目录中, 并建立符号连接。到此为止, ARM Linux 的根文件系统就已经建立起来了。

    ARM Linux采用RAMDISK的方式来装载根文件系统,所以在运行内核之前,需要先制作RAMDISK,将必须的文件和设备加人到RAMDISK中。内核启动后,会从指定地址去读取根文件系统,这里我们使用RAMDISK在内存中虚拟一个磁盘,具体方法如下:

    (1)首先创建一个2048k的虚拟磁盘,文件名为initrd.img:# dd  if= dev/zero of=initrd.img bs= lk count= 2048  (2)将该虚拟磁盘文件格式化成Ext2格式:# mkfs ext2 -c initrd.img这就生成了一个支持Ext2文件系统的ramdisk  (3)mount这个文件系统到/tmp下,# mount -o loop -t ext2 initrd.img /tmp  (4)向/tmp中添加linux启动必须的文件和设备。 # cd  /tmp;  # mkdir bin dev etc lib mnt proc sbin sys usr  以上这几个程序和设备是启动Linux必须的,这样得到的ramdisk大约400k  (5)创建设备节点,添加相应的程序,将已经订制好的一个文件系统全部复制过来。# cp –a  myfs/*  /tmp  (6)压缩映像,把loop设备卸载下来,然后用gzip命令把映像压缩一下。# umount /tmp ;  #gzip –best –c initrd.img > initrd.img.gz现在我们就得到了一个压缩的RAMDISK映像initrd.img.gz制作好了。

    32.jpg

   



www.55dianzi.com

  4. 内核的下载和执行

  要想使目标板的Linux系统脱离交叉开发环境,直接在目标机上本地启动运行,必须通过U-boot将U-boot映像,内核映像和RAMDISK 映像烧写到FLASH中,因为使用U-boot引导程序需要使用U-boot格式的内核映像和RAMDISK映像,可以通过以下命令来实现:

  ($U-BOOT-PATH)/tools /mkimage -A arm -O linux -T kernel -C gzip –a 0x20008000 -e 0x20008000 –n “linux-2.4.19”-d linux.bin.gz uImage

  ($U-BOOT-PATH)/tools/mkimage-A arm -O linux -T ramdisk -C gzip –a 0x21100000 -e 0x21100000 –n “RAMDISK”-d ramdisk.bin ramdisk

  通过U-boot将uImage和ramdisk烧写到flash相应的分区中去,烧写到flash相应分区的地址如图7所示:烧写完毕后设置u- boot的环境变量,让系统自动启动,系统复位后,Linux系统就可以完全自动从本地flash启动了,启动后,进行地址映射,u-boot会把u- boot压缩映像,kernel压缩映像,ramdisk压缩映像全部拷贝到SDRAM的相应地址,SDRAM的映射地址如图8所示,这时Linux系统完全在SDRAM中运行了,Linux系统真正启动起来了。

  5. 总结

  本文根据一个特定的目标平台,结合AT91RM9200的开发经验,详细介绍了将Linux移植到ARM构建的嵌入式系统上的主要技术和整个流程,实现了Linux 向目标系统AT91RM9200的移植,移植后的操作系统在目标板上运行稳定,并且可以根据实际需要编写相应的控制程序,将其应用于实际工业控制中。掌握这些技术,对于开发嵌入式系统十分重要,对开发其他类型的嵌入式系统同样具有参考意义。

  本论文作者创新点:从软件与硬件的相互关系, 硬件对软件的制约、硬件对软件的支持这个角度对裁减和移植进行了分析,同时在Bootloader(启动代码)的移植,Kernel(内核)的裁减和移植过程中,把代码分成了两部分,一部分是和硬件相关的部分,一部分是和硬件无关的部分,这样做不仅思路清晰,而且可以大大减少工作量。

  参考文献:

  [1] 许先斌, 熊慧君, 李渊, 杨芬. 基于ARM9 的嵌入式Linux开发流程的研究[J]微计算机信息. 2006,11:87-90

  [2] 刘振纲,刘成安,卢剑翔. 移植标准Linux 到S3C2410[J] 微计算机信息.2006,32:152-154

  [3] 罗致,王仲东. ARM Linux在AT91RM9200平台上的移植.软件技术,2006年第25卷第1期

  [4] 李明,ARM Linux的移植过程及分析[J ].电子设计应用, 2003,7

  [5] 刘峥嵘等编着,嵌入式Linux应用开发详解[M].北京:机械工业出版社,2004. 7



上一页  [1] [2] 


本文关键字:Linux  嵌入式系统-技术单片机-工控设备 - 嵌入式系统-技术