您好,欢迎来到五一七教育网。
搜索
您的当前位置:首页基于ARM9的嵌入式Linux移植

基于ARM9的嵌入式Linux移植

来源:五一七教育网
第30卷 第2期2008年4月

武汉理工大学学报・信息与管理工程版JOURNALOFWUT(INFORMATION&MANAGEMENTENGINEERING)

Vol.30No.2

Apr.2008

文章编号:1007-144X(2008)02-0205-04

基于ARM9的嵌入式Linux移植

师娟娟,彭 迪

(武汉理工大学信息工程学院,湖北武汉430070)

摘 要:首先介绍了基于AT91RM9200系统硬件结构和Linux内核结构,然后分析了如何将Linux移植到目标板上的方法与步骤,最后建立了根文件系统。通过串口、网口或者JTAG口烧至目标板,该系统成本低、工作稳定、通用性强,可用在多种工业场合。关键词:AT91RM9200;ARM;Linux;内核

中图法分类号:TP316.2      文献标志码:A

  随着信息产业的发展和集成电路技术的进

步,嵌入式系统已经广泛地应用到移动计算设备、网络设备、工控设备、信息家电和仪器仪表等领域。传统的研究方法是基于硬件的开发过程,开发人员必须面临硬件操作、任务管理、事件管理和中断处理等问题,不能更好地关注于行业应用的开发,从而影响产品的开发周期和上市时间。因此有必要针对特定的硬件平台和实际的应用移植操作系统进行研究,于是移植操作系统就成为系统开发的重要环节。笔者选用Linux操作系统,可剪裁性是Linux与嵌入式系统紧密联系的纽带,同时嵌入式系统对成本的严格也使得具备开放特征的Linux超越其他诸如Vxwork、pSOS、Neculeus和WindowssCE等强劲竞争对手而成为市场占有率第一的嵌入式操作系统。

笔者给出了在基于ARM9内核的硬件平台上构建一个基本的带有根文件系统的嵌入式Linux系统的过程与方法。

[1-3]

122个可编程I/O端口。同时该芯片还内嵌Eth2ernetMAC10/100M接口,并提供USB2.0全速主

机端口与设备接口,以及其他常用的外部接口1.2 系统结构[4-7]

系统整体硬件结构框图如图1所示,下面分别介绍每个模块的相关功能。

图1 系统整体硬件结构框图

1 系统硬件结构

1.1 AT91RM9200微处理器

AT91RM9200是Atmel公司生产的一款工业

  (1)电源和晶振模块。主控板使用12V/5V

两套电源供电,AT91RM9200工作于3.3V/1.8V两种电压,系统其他器件也尽量选择工作于3.3V的电压。因此将5V输入电压经过两次DC-DC变换为系统提供工作电源。12V输入电压经过DC-DC变换为5V电压。查看AT91RM9200的

级ARM9处理器,内嵌ARM920T处理器内核,主频为180MHz时性能可达200MI/s,并内置16kBSRAM和128kBROM。外部总线接口(EBI)支持SDRAM等存储器,带有7个外部中断源、1个快速中断源和4个32位PIO控制器,最多支持

芯片资料可知,AT91RM9200使用18.432MHz/

32.768kHz两种晶振,主时钟18.432MHz经过芯片内倍频处理后为209MHz,32.768kHz慢时钟主要用于AT91RM9200的启动。

(2)存储器模块。系统采用4MB的Flash用作存放嵌入式操作系统,应用程序和其他在系统掉电后需要保存的数据;16MB的SDRAM作为

收稿日期:2007-10-08.

作者简介:师娟娟(1981-),女,河南焦作人,武汉理工大学信息工程学院硕士研究生.基金项目:湖北省自然科学基金资助项目(2004ABA045).

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

206

武汉理工大学学报・信息与管理工程版2008年4月

系统运行时的内存。

(3)网络模块。提供一个10/100Mb/s的标准RJ45以太网接口。

(4)串口。AT91RM9200提供4个USART,USART0设计为RS232通信口,选择MAX3222作

2.2 Linux内核结构

Linux内核主要由进程调度模块、内存管理模

块、文件系统模块、进程间通信模块和网络接口模块5个模块构成,如图4所示。

为RS232接口芯片、三线制物理接口;USART2用作与

GPS通信,使用RS232通信标准;

AT91RM9200提供了一个RS232标准的端口DB2GU,用来与主机通信,进行系统调试和编程;US2ART1为预留接口。

(5)RTC模块。RTC(实时时钟)用来对时。RTC可以提供可编程的实时时钟:年、月、日、时、

图4 Linux内核系统模块结构及相互依赖关系

分、秒、星期及一个闹钟中断,并在掉电后使用备用电源工作。

(6)LCD和键盘模块。使用LCD并辅以键盘显示图片和时钟等一些系统信息。

  进程调度模块负责控制进程对CPU资源的使用,所采用的调度策略使各进程能公平合理地访问CPU,同时保证内核能及时执行硬件操作;内存管理模块用于确保所有进程安全共享机器主内存区,它还支持虚拟内存管理方式,使Linux的

[8-9]

进程可以使用比实际内存更多的内存容量,并可以利用文件系统把暂时不用的内存数据块交换到外部存储设备上去,当需要的时候再交换回来;文件系统模块用于支持对外部设备的驱动和存储;进程间通信模块用于支持多种进程间的信息交换方式;网络接口模块提供对多种网络通信标准的访问并支持许多网络硬件。2.3 Linux内核原代码树

/include子目录包含了建立内核代码时所需

2 系统软件架构

2.1 系统软件组成

系统软件由3部分组成:Bootloader、操作系统和应用程序,如图2所示。的大部分包含文件,这个模块利用其他模块重建内核。

/init子目录包含了内核的初始化代码,这是

图2 系统软件组成

内核工作开始的起点。

/arch子目录包含了所有硬件结构特定的内

  Bootloader主要完成硬件检测和系统引导,操作系统的主要功能之一是管理系统硬件设备,屏蔽硬件细节,向其上的应用提供标准接口,易于应用程序的编写和移植。笔者主要讨论如何将操作系统移植到硬件平台上。一个完整可用的操作系统主要由4部分组成:硬件、操作系统内核、操作系统服务和用户应用程序,如图3所示。用户应用程序是指那些字处理程序、互联网浏览器程序或用户自行编制的各种应用程序;操作系统服务程序是指向用户提供的服务,被看作是操作系统部分。

核代码,如i386和alpha。

/drivers子目录包含了内核中所有的设备驱

动程序,如块设备和SCSI设备。

/fs子目录包含了所有的文件系统的代码,如ext2和vfat等。

/net子目录包含了内核的联网代码。/mm子目录包含了所有内存管理代码。/ipc子目录包含了进程间通信代码。/kernel子目录包含了主内核代码。2.4 Linux内核的选择

Linux内核版本更新速度非常快,现在已经推

图3 操作系统组成部分

出了2.6版本,笔者选择功能和可靠性都很成熟的

Linux-2.6.20内核版本以及针对AT91RM9200体系结构的补丁。可以在www.kernel.org上下载最新的内核Linux-2.6.20.tar.bz2,在www.at91.

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

第30卷 第2期师娟娟,等:基于ARM9的嵌入式Linux移植

207

com网站上获得针对AT91RM9200的内核补丁2.6.20-at91.patch.gz和linux-2.6.20-at91-exp.diff.bz2。在给标准内核源代码打上补丁后,

(3)makezImage。(4)makeuImage。

该内核就可应用于AT91RM9200了。2.5 交叉开发环境的建立

笔者采用的编译工具为arm-linux-gcc3.4.1,将交叉编译器解压到相应的目录下,相应的命令为#tarjxfarmlinuxgcc3.4.1.tar.bz2,要注意解压后的路径。2.6 编译内核

修改根目录下的Makefile文件。

(1)指定目标平台为ARM。找到ARCH:=$(shelluname-m|sed-es/i.86/i386/-es/sun4u/sparc/-es/arm.3/arm/-es/sa110/arm/);修改ARCH?:=arm

(2)指定交叉编译器。CROSS_COMPILE?=/usr/local//bin/arm-linux-注意Linux后面的一短横不能少。2.7 配置内核

编译内核时要对内核作适当的配置,根据系统功能需要来进行裁剪,以达到内核功能和体积的优化。配置内核是个量体裁衣的过程。它的主要步骤如下:

(1)进入打上补丁修改好的内核源代码目录,执行makeat91rm9200dk_deconfig,使源代码按照AT91RM9200体系结构来配置。

(2)makemenuconfig对内核进行裁减,执行命令后出现如图5所示的内核配置图。

编译成功后会在arch/arm/boot目录中生成内核的镜像,此镜像下载到Flash中就可以通过Bootloader引导,注意在编译uImage时要有UBOOT的mkimage工具。2.8 建立根文件系统

Linux采用文件系统对系统中的文件和设备

进行组织,为设备和用户程序提供统一接口。在Linux中,文件系统的结构为树状,根在顶部,各个目录和文件从树根向下分支,目录树的最顶端被称作根目录。

Linux要启动还需要有根文件系统。根文件系统的作用是存放各种工具(如Linux命令)、应

用程序和必需的链接库等。使用Busybox可以大大简化制作嵌入式系统根文件系统的过程,因此,Busybox工具在嵌入式开发中被广泛应用。编译Busybox,首先到www.busybox.net下载,笔者采用Busybox-1.4.1.tar.gz,解压源码,修改Makefile以后进入Busybox1.4.1目录,运行makedefconfig,makemenuconfig进行配置,根据实际需要来加入或去掉某些选项。它的主要选项如下:

BusyboxSettings>BuildOptions>InstallationOptions>LinuxModuleUtilities>

在BuildOptions项,使用交叉编译的选项,最好选择静态编译。在InstallationOptions项,设置安装的路径。设置完毕以后,运行make、makein2stallbusybox,在未来的根文件系统中建立/usr、/bin和/sbin等目录。2.9 定制文件系统定制文件系统可按如下步骤进行:

(1)创建目录结构。在新文件系统的根目录中增加命令mkdirdevetclibmntprocroottmpvar,由此建立一些常见的linux系统中的目录;

(2)创建设备节点;(3)添加应用程序;(4)配置系统文件;(5)添加运行时库。

etc文件夹是许多系统配置文件保存的地方。

图5 内核配置图

Loadablemodulesupport>

[]EnableloadablemodulesupportFilesystems>

NetworkFileSystems>

(如果要通过NFS方式调试,这项必选)[3]NFSfilesystemsupport[3]RootfilesystemonNFS

如Busybox源代码就存放在example/bootfloopy/etc目录中,可以把其中的文件拷贝过来作为基

其他选项默认即可。础。Busybox实现的init与SysVinit有较大区别,

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

208

武汉理工大学学报・信息与管理工程版2008年4月

其配置文件inittab应作相应改变。如:

::sysinit:/etc/init.d/rcS

tty0::askfirst:/bin/sh::ctrlaltdel:/sbin/reboot::shutdown:/bin/umountar

::shutdown:/bin/mount/oremount,ro

其中第一行指定了系统的启动脚本为/etc/init.d/rcS;第二行指定在第一个虚拟终端打开一

个无需登录验证的shell;第三行指定了当按下ctrl+alt+del组合键时的执行命令;最后两行指定了关机时执行的操作。其他的配置文件则根据具体情况作出相应的设置。最后还可给目标机命名,在/etc目录下建立文件hostname并将取好的名字写入。

图6 串口打印信息

器的开发和应用具有重要的意义,可以根据需求

编写相应的应用程序将该开发板用于实际的工业控制。参考文献:

[1] AtmelCompany.ARM920TTMbasedMicrocontroller

AT91RM9200datasheet[EB/OL].[2007-10-08].http://www.atmel.com/literature.

[2] 毛操德.Linux内核源代码情景分析[M].杭州:浙

3 实验结果

嵌入式Linux还可以使用NFS(网络文件系统)通过以太网挂接根文件系统,这是一种经常

用来作为调试使用的文件系统启动方式。通过网络挂接的根文件系统,可以在主机上生成ARM交叉编译版本的目标文件或二进制可执行文件,然后就可以直接装载或执行它,而不用频繁地写入Flash。通过串口打印信息(图6)可以看出,操作系统在开发板上移植成功。Linux内核与文件系统在开发板上为运行应用程序提供了一个软件平台。

江大学出版社,2001.[3] 赵 炯.Linux内核完全剖析[M].北京:机械工业

出版社,2006.

[4] 陈莉君.深入理解Linux内核[M].北京:中国电力

出版社,2001.

[5] 桑兴民,王晓明,姚新民,等.基于ARM的最小应用

系统设计与实现[J].微计算机信息,2007,2(2):

152-155.

[6] 许 荣.基于AT91RM9200的嵌入式Linux系统移

4 结 论

32位ARM微控制器具有更高的性价比、更

植[J].电子技术,2006(3):-68.

[7] 马忠梅.ARM嵌入式处理器的结构与应用基础

[M].北京:北京航空航天大学出版社,2002.[8] 孙天泽,袁文菊,李 梅.嵌入式Linux操作系统的

低的功耗、执行速度更快和性能更高等特点。笔

者基于AT91RM9200微控制器的硬件平台,对Linux内核版本2.6.20进行裁剪、移植和编译,生成的内核可以稳定地在开发板上运行。制作的根文件系统可以正常地加载进内核,对32位微控制

移植[J].仪器仪表用户,2005(6):116-117.

[9] 徐华中,魏 海,石 勇.嵌入式Linux系统在车载

导航中的应用[J].武汉理工大学学报:信息与管理工程版,2007,29(2):24-27.

ARM9BasedEmbeddedLinuxTransplanting

SHIJuanjuan,PENGDi

Abstract:ThehardwarestructurebasedonAT91RM9200andthestructureofLinuxOSwasintroduced.Themethodsandproce2duresonhowtotransplanttheLinuxoperatesystemtothetargetboardwereanalyzed.Thefilesystemwasestablished.ThefilewasdeliveredtotargetboardthroughthenetinterfaceorJTAGinterface.Thissystemischaracterizedbylow-cost,stableopera2tion,stronguniversality.Itcanbeusedinmanyindustrialfields.Keywords:AT91RM9200;ARM;linux;kernel

SHIJuanjuan:Postgraduate;SchoolofInformationEngineering,WUT,Wuhan430070,China.

[编辑:周廷美]

© 1994-2008 China Academic Journal Electronic Publishing House. All rights reserved. http://www.cnki.net

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

Copyright © 2019- 517ttc.cn 版权所有 赣ICP备2024042791号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务