搜索
您的当前位置:首页正文

ARM Linux在S3C2410上的移植

来源:欧得旅游网
维普资讯 http://www.cqvip.com

第29卷 第16期 VO1.29 NO.16 计算机工程与设计 Computer Engineering and Design 2008年8月 Aug.2008 ARM Linux在¥3C2410上的移植 宋 凯, 严丽平, 甘 岚, 黄晓生 (华东交通大学信息工程学院,江西南昌330013) 摘 要:针对日益复杂的嵌入式系统的应用需求,提出了在¥3C2410嵌入式平台上移植ARMLinux操作系统的方案。介绍了 ARMLinux的概念以及移植硬件平台的结构和运行过程,详细讲解了ARMLinux在嵌入式平台上裁减、交叉编译以及建立根 文件系统的过程,并对移植结果进行了测试。测试结果表明,移植后的ARMLinux运行稳定。 关键词:内核;根文件系统;移植;嵌入式;编译 中图法分类号:TP368.1 文献标识码:A 文章编号:1000.7024(2008)16.4138.03 Porting ARM Linux to¥3C2410 SONG Kai,YAN Li—ping, GAN Lan,HUANG Xiao—sheng (School ofInformation Engineering,East China Jiaotong University,Nanchang 330013,China) Abstract:Aimedattheincreasingly complicatedapplicationdemandofembedded systems,a schemeforportingARMLinuxto¥3C2410 is put forward.Firstly,the concept of ARM Linux and the structure and operating process of the hardware platform to be ported on are in ̄oduced.Then he tprocess ofARM Linux being reduced is described,across compiled and building the root ilfe system on the embedded platform nd atesting he portting result,which proves that the ported ARM Linux operates steadily on¥3C2410. Key words:kernel;root ilfe system;port;embedded;compile O引 言 嵌入式技术迅速普及,Linux操作系统由于其开放源代 源代码都是采用C语言 ,只有那些直接与CPU相关的代码 比如开关CPU中断等操作才使用汇编语言,因此ARM Linux 具有很好的移植性。 码 、高稳定性和低成本等特性,非常适合于嵌入式系统的开 发,成为了嵌入式领域里发展最快的操作系统。而¥3C2410 是三星公司一款基于ARM920T的优秀嵌入式通用处理器。 2硬件平台 本文的移植平台是以¥3C2410为核心的HHARM9开发 将ARMLinux移植到该处理器平台对于构建高性能通用嵌入 式开发平台具有很大的实际意义。 ● 板,系统框图如图l所示。主要包括:存储系统、系统接口、用 户接口(显示LCD与键盘)3个部分。 ¥3C2410把外部复位信号作为一个中断处理,在系统复 1 ARMLinux操作系统简介 ARMLinux源自标准的Linux内核,主要针对ARM核的 处理器进行了相关移植 。由于ARM核的处理器在嵌入式系 统领域应用十分广泛,因而ARM Linux也成为诸多嵌入式系 位时,程序指针(Pc)被设置为0,程序跳转到0x00000000开始 运行。此空间对应Bank0,系统的2MB的NORFlash和处理器 的Bank0相连接。在N0RFlash中存储的是BootLoader,它负 责配置处理器的结构、工作模式以及自动检测系统的各个硬 件是否工作正常。系统经过初始化和自检后,BootLoader负责 把16MB NANDFlash的zlmage(即软件系统的镜像文件)复制 到0xc0008000地址(此地址是系统64MB SDRAM的首地址)。 然后,引导程序把PC指向0xc0008000地址,系统开始运行。 统的操作系统平台。为了适应嵌入式应用的需求,它采用了 romfs文件系统,可执行文件格式采用的是FLAT格式,而不是 标准Linux中采用的elf格式脚。相对于另一个嵌入式的操作 系统uClinux,它启动了MMU,应用程序不能直接读写物理地 址(包括CPU寄存器、MEMORY、外设芯片寄存器等),而必须 借助驱动的形式,切入内核用ioremap来实现对这些物理地址 的访问。ARM Linux的源代码是完全公开的,并且绝大部分 收稿日期:2007.09-03 E—mail:skpark@163.toni 3 ARM Linux操作系统的移植 在移植工作开始之前,应该先做好准备工作,即准备好移 基金项目:江西省自然科学基金项目(0611008);江西省地方攻关基金项目(0611EXX):华东交通大学校立基金项目(06zKxxo4)。 作者简介:宋凯(1980一),男,河南泌阳人,硕士研究生,研究方向为嵌入式系统: 严丽平(1980一),女,安徽桐城人,硕士,讲师,研究方 向为嵌入式软件; 甘岚(1964一),女,江西南昌人,硕士,教授,研究方向为单片机与嵌入式系统; 黄晓生(1972一),男,江西于都人,博 士,副教授,研究方向为数字图像处理。 一4138— 维普资讯 http://www.cqvip.com 2MBNoR USB接口 Flash(BIOS) PDIUSBD12 皋j ARM禁构的32位 64MBSDRAM 微处理器 两个RS一232 (系统内存) Samsung 串行通信接口 S3C24l0 1 6MB NAND JTAB调试端【l1 Flash(硬缸) 键盘输入 图1 硬件平台体系结构 植需要的软件包。移植手要需要3个软件包:ARMLinux源码 包、ARM交叉编译所需的编译 I:具包以及busybox』=具包。上 述3种工具包都有众多版本,文中选择的分别是linux一2.6.20. tar.bz2、cross一3.4.1.tar.bz2、busybox一1.4.0.tar.gz。移植 T=作主要分 3步:建立交义编译环境;编译内核;生成并配置根文件系统。 3.1建立交叉编译环境 由丁已经准备好了所需软件包,所以建立交叉编译环境 的过程实际就是对cross一3.4.4.tar.bz2解包的过程。在本文中, 所有的软件源码包都放在/tools目录下,解包所用指令序列在 此不做赘述,其解包路径为/usr/local/arm cross。在上述路径下 完成解包后,需使用export指令设置交叉编译工具路径。至 此,交义编译环境已经建 起来。 3.2交叉编译ARM Linux内核 在交叉编译内核之前,对编译选项的配置是很重要的。 执行“make menuconfig”指令,进入Syetem Type选项 。。本文中 选择对¥3C2410系统板的支持,然后配置File System,对于File System应确保如下支持: ・/proc file system support ・ROMfile system support ・Second extended fs support 最后配置Block device,确保其有如下支持: ・RAM disk support ・Initital RAM disk(initrd)support 以j二配置是内核编译的必备I|作,保存配置后要修改 Makefile文件,即把交叉编译的路径指定为本文中安装的特定 目录,修改语句为: CROSSComplie=/usr/local/armcross/3.4 1/bin/arm—linux一 交叉编译_[作由一下指令完成: Smake dep //设置依赖关系 ¥make zlmage //编译内核 交叉编译时间相对较长,最终会生成一个文件zlmage , 这就是编译成功后的ARMLinux内核文件。本文中所有的测 试工作都是在/test臼录下完成,所以还应该复制zlmage文件 到该目录卜,以备测试。 3.3制作简单的文件系统并配置根文件系统 3.3.1安装busybox工具包 制作系统文什的I:具包是busybOX,所以在制作之前应该 先安装busybOX_【具。文中使用的软件包是busybOX一1.4.0.tar.gz。 首先将其解压,在解压目录下修改Makefile文件,将DOSTATIC 的值改为ture,还要修改init.c(启动文件),修改格式如下: #ifndef INITSCRIPT #defne 1NITSCRIPT“/etc/inittab” #endif 运行如下指令完成安装工作: ¥make TARGET ARCH=arm CROSS;arm—linux—PREFIX /tmp/target all install 3.3.2创建文件系统的映像文件 (1)在/mnt下创建img目录,然后进入根目录执行如下指 令创建一个空的映像文件: ¥dd if=/dev/zero of=initrd bs=1024k count=1 ¥mke2fs——F——m0 initrd (2)使用如下指令加载创建的文件系统,并复制文件系统 中必要的文件: ¥mount——t ext2——O loop initrd/mnt/img ¥cp—Rd/tmp/target/ /mnt/img 3_3.3配置根文件系统 经过上述步骤已经产生了文件系统所需要的一些文件, 但是需要设置根路径,即在根路径下添加必须的目录、文件并 且』下确设置属性。 (1)创建目录:在/mnt/img下创建根文件系统的。一般目录/ bin/etc/proc/trap/var/dev/mnt,并使用chraod命令改变其属性 。。 (2)gIJ建设备文件:建立设备文件,一个简单的方法是复制 主机/dev/目录下一些必要的设备文件 ̄q/mnt/img/dev/目录下”。。 基本的设备文件有:/dev/console/dev/fd0/dev/null/dev/arm0/ dev/tty/dev/tty0。在复制的过程中,要注意使用dp参数以保证 文件属性不变。 (3)gI建相关启动配置文件:在/mnt/img/etc/H录下创建启 动配置文件inittab,编辑内容如下: ::sysinit:/etc/rc 在/target/etc/目录下创建启动脚本rc,编辑内容如下: #!/bin/sh hostname ARM11est mount—t proc proc/proc mkdir/var/tmp/var/log/var/lock cat/etc/motd 在/mnt/img/etc/目录F建立开发板上的文件系统配置文件 fsatb,编辑内容如下: none/proc proc defaults I二述工作完成后,即可使用umount命令结束操作,并将 牛成的文件系统initrd复制到测试目录。 4装载ARMLinux并进行测试 在该开发板上笔者已经成功移植了U—Boot。通过U—Boot 装载和引导刚刚生成的内核及文件系统,可以进一步测试其 移植的稳定性。而使用U—Boot引导内核有两种不同的方法。 第1种方法是直接将内核映像文件和根文件系统烧写入Flash ’, 使用此方法,U—Boot在启动时将Flash中的内核映像及根文件 系统读入RAM指定位置并从同一位置启动内核。第2种方 一4139 维普资讯 http://www.cqvip.com 法是将内核映像文件和根文件系统下载至RAM中直接启动网 (而不是从Flash中读入RAM),此种方法不需要烧写Flash。笔 者为了减少烧写Flash的次数,在本文中采用第2种方法,其 步骤如下: SMDK2410#tftp 30008000 zImage 后的boa.conf和mime.types拷贝到Web服务器根目录/home/ httpd下。并将一些静态页面放在由boa.conf指定的目录下。 (5)配置完成后,重新编译内核。装载内核到开发板,启动 Boa Web Server。 通过浏览器可以正确访问刚刚配置的WebServer,网页也 可以正常显示。进一步验证了移植的稳定性。 SMDK2410#tfIp 30800000 initrd SMDK241O#go 30008000 上述指令执行的过程中,未出现异常,内核成功启动,并 最终进入Shell提示符“#”(如图2所示)。在Shell提示符下输 5结束语 目前,笔者移植的ARM Linux已经能稳定地运行在 入内核编译时定制的各个命令,均可以正常运行。另外编写 简单C程序,并用交叉编译器编译之,最终生成的可执行文件 ¥3C2410为核心的HHARM9开发板上,这使得基于该平台的 嵌入式Gui的移植以及应用程序的开发有了OS基础,为嵌入 能够在开发板上正常运行。但此时,由于操作系统中未加入 对于网卡的支持,所以在程序调试时只能通过串口,很不方 便。这就要求我们必须加入网卡等设备的驱动,以方便后续 应用程序的开发。 以上的指令序列将会启动系统,装入内核并运行之。如 果运行结果出现图2所示画面,则说明移植已初步成功。 式软件设计节约了大量的开发时间,大大提高了开发效率,是 后续嵌入式软件开发的有力支持。 参考文献: 【1】 张群忠,沈建华.ARM&Linux嵌入式系统BootLoader的研究 与设计【J].计算机应用与软件,2006,23(12):97.99. 【2】 耿彦莉,王平.基于StrongARM的嵌入式Linux的GUI实现 【J】.计算机工程,2006,32(9):214—215. 【3】 杨天怡,刘宇,屈剑锋,等.一种嵌入式Linux环境下图像压缩及 传输的实现【J】.计算机科学,2006,33(4):228-229. 【4】 苏义鑫,王子毅,张素文.uClinux在嵌入式系统中的移植研究 【J】.微计算机信息,2006,11(2):58-60. 图2 ARM Linux启动初态 【5】 Mehaffey J.MontaVista Linux open source real time project whitepaper[EB/OL].http://www.mvista Com/dswp,2005. 【6】 Francis P,Handley M,Karp R.Global Language of Xlinux【J】_ 为了进一步验证移植的稳定性,本文基于ARM Linux内 核配置了Web服务器,具体过程如下: IEEE Journal on Selected Areas in Communications(JSAC), 2004,22(8):1456.1466. (1)下载boa源码包,解压并编译之,将生成可执行文件 boa。在编译之前需要在/boa/src/configure文件中加入CC和 CPP的说明,同时修改Makefile文件中交叉编译器选项。 【7】 Bhattacharjee B,Kommareddy C.The High-pressreu nd apower- l transducer control system based on poketLinux operating (2)建立目录。由于默认的根文件系统ramdisk是只读的, 不能用mkdir等命令来新建目录,应在编译内核前先建好要用 到的目录。 system[J].ACM Transactions on Computer Systems,2003,l0(2): 85.110. 【8】 Avi Kavas,Dror G Feitelson.Comparing Windows NT,Linux, and QNX as the basis for cluster systems[J].Concurrency and Computation:Practice nd Experiaence,2004,13(15):l303-1332。 (3)修改配置文件boa.conf。进入/boa/src目录,修改deft- nes。h文件,将根目录定义语句改为:#defineERVER ROOT“/ home/httpd”。 【9】 Kaashoek M Interrupt nd atask schedulnig of rt-lniux[J]。Embe- dded Systems Programming,2003,20(8):1456-1471. (4)在ramdisk中的,biIl/下加入boa可执行文件。并把修改 (上接第4137页) 【2】柴晓路,粱宇奇.WebServices技术、架构和应用【M】.北京:电子 工业出版社,2003:10-40. 【3】 W3C.SOAP Version 1.2 Part l:Messaging framework.w3C I - commendation 24 June 2003【EB/0L].http://www.w3.org/ oo3,REC-soapl2-partl-2003.06.24/. 【6】 贺学林.SOAP消息处理器的设计与实现【J】.微型机与应用, 2004(3):3 1-34 【7】 刘芳,肖铁军.XML应用的基石:XML解析技术【J】.计算机工 程与设计,2005,26(10):2823-2825. 【8】 Jean Jlabrosse.嵌入式实时操作系统pC/OS.II【M】瑁5贝贝,译.2 版.北京:北京航空航天大学出版社,2003:165-176. 【9】 Nios II Software developer's handbook[EB/OL].http://www. altera.com. 【4】 朱敏,丁秋林.基于SOAP的Web服务程序设计【J】.计算机应 用,2003,23(12):173-174. 【5】 W3C.Hypertext trnsfaer protocol—HTTP/1.1.RFC 2616【EB/ 0L】.http://www.w3.org/Protocols/Rfc2616/rfc2616.htm1. 【1 0】http协议调试器[EB/OL].http://emouze.com/httpdebug.htm. ・——4140・—— 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top