Linux是一个源代码免费公开的操作系统,有很强的移植性。本文描述了将 Linux移植到ARM目标板上的通用方法,并结合实例说明了如何建立交叉编译环 境,修改BootLoader,有效地将Linux内核及文件系统移植到目标板上,并对这种 基于Linux的嵌入式系统开发做了展望。 嵌入式Li n ux在ARM上的移植 ■刘莲花郭文成 nux移植到新的ARM系统平 目前嵌入式系统在工控行 系统价格普遍较高,所以免费 Li业的应用越来越广泛,而其开 的Linux操作系统就成为嵌入 台上的通用方法.结合实例阐 发平台却受到很大限制,很多 式操作系统中的首选。嵌入式 述有关移植过程,即如何修改 还是限制在单片机上。单片机 Linux(Embeded Linux)是指对 Linux内核以适应特定的硬件 以其价格低、性能好受到广泛 Linux经过小型化裁剪后,能够 平台,从而实现内核的引导。 好评,但在单片机上编程却有 固化在容量仅有几十万字节的 开发周期长、调试难等诸多缺 存储器芯片或单片机中,应用 点。如果能在特定的操作系统 于特定嵌入式场合的专用 上开发程序,则可屏蔽掉很多 体系结构 Linux的内核主要由五个子 Linux操作系统。嵌入式Linux 内核系统组成。在内核代码完 底层硬件细节,使程序易调试、 易移植、易维护,并且能够缩 是由很多体积小且性能高的微 系统组成: ◆内存管理(MemO rY 短产品的研发周期。这样的嵌 全开放的前提下,不同领域和 Manager)标准Linux内存管 入式操作系统具有以下特点: ◆较好的实时性; ◆系统可靠性高; 不同层次的用户可以根据自己 理支持虚拟内存,进程的代码、 的应用需要很容易地对内核进 数据和堆栈的总量可以超过实 行改造,在低成本的前提下,设 际内存的大小。Linux大致可以 ◆系统任务处理具有随 计和开发出真正满足自己需要 根据平台有无存储管理单元 机性。 的嵌入式系统。 (MMU)分为两个类别:一类是 但是由于商业嵌入式操作 本文将介绍如何把嵌入式 和标准Linux一样运行在有硬 2006 0q O9 .OPEN SOURCE wORLO MONTHLY 89 u 维普资讯 http://www.cqvip.com
…ion 抑№at…… … 件存储管理器(MMU)的处理器 程间各种通信机制。其通信手 MC9328MX1开发板上,有三 种下载程序的方式:RS232串 上,另外一类通常针对无硬件 段主要有信号、文件锁、管道、存储管理器(MMU)的CPU进 等待队列、信号量、消息队列、 口Xmodem方式、以太网方式 行裁剪和移植。 共享内存和套接字等。 ◆虚拟文件系统(Virtual File System)隐藏了不同硬件 建立开发环境 的具体细节,为所有设备提供 统一的接口。虚拟文件系统可 目标平台介绍 再分为逻辑文件系统和设备驱 Linux内核与具体的目标平 动程序两部分。逻辑文件系统 台相关,不同的目标平台移植 指Linux支持的文件系统,如 步骤基本一致,但移植的难度 ext2 I设备驱动程序是具体操 会有所差异。这里选用的 作硬件控制器的代码。 MC9328MX1是Motorola公司 ◆进程调度(P rOCess 的龙珠MX1系列微处理器,其 Scheduler)负责控制进程对 嵌入了先进的低功耗 CPU的使用。CPU是计算机系 ARM920T ̄,运行的速度可以 统中最核心的资源,调度程序 达到200MHZ。硬件平台的 负责在可运行进程中公平地选 RAM分布情况如表1所示。 择,使其中之一成为运行进程, 从而充分利用CPU的资源。同 建立硬件环境 时,它也负责保证内核及时对 嵌入式系统开发通常采用 硬件进行操作。 “主机(H o S T)/目标机 ◆网络接口(NetwO rk (TARGET) 方式。首先,利用 Interface)负责支持标准的网 主机上丰富的资源及良好的开 络通信协议和各种网络硬件设 发环境开发和仿真调试目标机 备。其中网络通信协议部分负 上的软件,然后通过串行口或 责实现各种标准的链路层、网 网络将交叉编译生成的目标代 络层和传输层协议,而设备驱 码传输和装载到目标机上,并 动程序负责对网络硬件进行具 用交叉调试器在监控程序或实 体操作。 时内核操作系统的支持下进行 ◆进程间通信(inter—Pro- 分析和调度,最后目标机在特 cess Communication)支持进 定的环境下运行。在基于 Pe主机 眦93捌慨1开发板 Rs232口 }LS232口 并口 J’rAG仿真器 J1-AG口 图1 RS232串口连接 90-,f放系统馓界2006.09 和USB方式。在此为了方便, 我们采用了串口方式。 在对芯片第一次擦写时, 首先对其寄存器等进行初始 化。在PC机上Windows环境 下,在ADS软件环境下通过 JTAG仿真器在线调试将初始 化程序下载到芯片中。将 JTAG仿真器Multi_ICE的数据 线一端接到PC机的并口上,另 一端接到目标板的JTAG口 上。如图1所示。下面以RS232 串口Xmodem方式(仅Win— dOWS系统下适用)为例建立 Linux移植的硬件环境。 连接主机RS232串口到目 标机(基于MC9328MX1的开 发板)的RS232串口,打开超级 终端设置RS232串口参数:波 特率19200、数据位8位、停止 位1位、无奇偶校验、无硬件流 控制。RS232串口通信的目的 在于发送控制指令和传输数 据,同时获得反馈信息。 建立交叉组译环境 建立交叉编译环境就是在 主机上创建一个用于编译将在 目标机上运行的内核和应用程 序的构建环境。交叉编译环境 由一套用于编译、汇编、链接内 核及应用程序的组件组成。由 于基于MC9328MX1的平台是 ARM92OT的内核。所以需要 ARM-Linux的交叉编译环境。 将下列文件安装到,USR, 维普资讯 http://www.cqvip.com
歹鼬j[系统世界 SRC目录下: snn-iinux-tootchain-post-2盘-13. bI由Iand lI_l r 瞄《l反F'j &口s in PSP.s Mode_USR√。? ModeFIQ _I|EQU 0xl0 EQU 0xl1 EQU 0xl2 EQU 0xl3 tar.gz 螭译器文件搏 : 饕 ann-linux- ̄z.tar.gz ModelRQ _启动配置文件,用于加人编译器雾~ ModeSVC _,nux.gz 核源码搏 ’ 0 Iibmlnigui・1.3.0.em・arm9.tgz  ̄'ninigui薛交锋嚣 以root用户进入,执行如下 命令: 饕醴/usrlsrc ; ̄Larzxvf arm-linux-toolchain- post-2  ̄1 3.tar.gz 。 #tarzxvf arrn-linux-Itbz.tar,gz 。 #tarzxvf tinux.gz #tar zxvf libminig ui-1.3.0.em— arm9.tgz 一一 饕 碡ll 酗每 蔷I喃 誓 棼 壹I凝髓谢 Ul-1.3.0# | |#makemenucxxt ̄ 姻次 菜单方式酉己置内核 ,选择好内桉遵酿 运、行譬 蠢? #makedep 犍 立撇美系嬖 一 #ma|keimage 0 :。。 、“。替 缴 蛐 嘏嚣誓 。 l lj 按上述顺序执行,建立交 叉编译环境后,只需登入即可。 移植过程 初始化C9328MXl 初始化的部分即是对寄存 器值、中断及串口情况初始化, 其部分代码如下: 一。。 一一 一 : 一 昏n如rdda翻撒 期 de Mode_ABT EQU 0xl7 Mode_UND EQU 0xlB Mode_SYS EQU 0xlF :availableonARMArch4 andlater LBit EQU 0xS0;when l bitis set。IRQlsdisabled 亭 壤 EQU 0x40;when F bitisset,FIQIsdisabled —Amountofmemory(inbytes) LenFIQStack EQU 256 ——1Len_ROLStack EQU 256 Len_ABT StaCk EQU 256 Len UND_Stack EQU 256 Len_SVC_St ̄k EQU 8192 。SDRAM controllerconstants. 1 lSDRAMC_BA… EQU 0x221000 餐 专 SDRAM_BA l| EQU SDRAMC C ̄MDPRE 赣 》 ≯ EQU 0x92120200 SDRAMC PREREA EQU 氆 触 || 嘲 醺 DlE痢EIGi; 钢察宣 I誊 ’进_确婚嘲嗣l匕| 之溪 徽 弛i 置 j 晦|释 E。。Q譬 U 苻蛔l麓 - l蝻礴 嘲鞫肇 辫簟 重 捧 .N 磷 EQU 簇魏濑 哺田 譬螂f 固蟹嫒 Q ∞一 一 SDRAMC_ ̄G EQU 提前将JTAG仿真器的 嘲ARM Multi_ICE软件环境打开, : 博唧 l -一; iR EA EQ U 检测JTAG仿真器与ARM板的 协 辑 ≯? i 连接情况(连接成功情况如图 i蠢 ̄NRMLMO EQU 2)。在ADS中编译成功后运行 0x8 ̄124200_, j| 将自动将目标代码装入AXD 2006 n日o9 OPEN SOURCE WORLD MONTHLY 91.0 维普资讯 http://www.cqvip.com
嵌入式 mbedded Application摩碍…………………………….. 责编/何晓龙hxl@ccu.com.cn美编/庆琨 空间分配 B0otL0ader引导程序是嵌 入式开发很重要的组成部分。 它是CPU加电后第一个开始 运行的代码,由它最终将操作 系统启动起来并将控制权交给 操作系统内核。 作为免费的开放源码的 Bootloader,将其移植到相应 的嵌入式目标开发平台上,必 须根据其硬件设置进行相应的 修改,来成功的引导内核,完 硒 lt# 胛 Iti-I ̄hrd”re 确誊墨t}I|姆 l ti-I ̄h锄 ”工譬 成嵌入式Linux操作系统的移 图2连接成功 植。装有Linux的PC机启动 时,由BIoS读取MBR内的内 下载环境中进行下载。 ◆文件系统 核引导程序,将其装入内存运 Bootloader下载到目标板 行,但在嵌入式平台上没有设 Bootloader的功能 的Flash之后,完成如上所述的 计专用的BIoS芯片,其中的 BooUoader程序能够完成以 初始化功能,然后通过串口、 内核引导程序直接固化在 下功能:初始化CPU速度;初 USB口或以太网口与宿主机通 Flash(或E2PROM)上。本平 始化存储器(包括激活存储器)和 信,把内核传到目标系统的 台提供的存储空间为32M B 存储器配置寄存器;初始化串 Flash或DRAM中。待内核装 S D R A M内存空间,8 M B 口、USB口和以太网口(如果目 载完毕后,Bootloader把控制 Flash存储空间,Memory分 标板上有时);激活指令,数据 权交给内核载人的地址。 配情况如表1。 Cache,建立堆栈指针;建立启 动参数区,构造参数结构和标识 衰1 Memo ̄分配衰 列表(这一步很重要,因为内核 类型 起始地址 结柬地址 大小 Flash空间 Oxl0000000 Oxl 07FFFFF 8n 需要利用启动参数来识别根设 D/^寻址空间 Ozl 2000000 Oxl2FFFFFF l6髓 备、页面大小、存储器大小等 SDRAI空间 Oz08000000 OxO9FFFFFF 32IB 通过上电自检(POST)来识别存 A/D寻址空间 Oxl 4000000 Oxl 4FFFFFF 16IB CS8900以太网空间 Oxl 5000000 Oxl 5FFFFFF l61B 在哪些设备,并报告异常 提供 保留 Oxl 6000000 Oxl 6FFFFIrF 16尬 对电源管理中休眠/恢复的支 内部寄存器 Ox00200000 Ox00226FFF 156KB 持;跳转到内核起始处。 SR^Jl 0x00300000 OxOO3FFFFF lIB Bootloader的参数结构、 衰2 Flash分配衰 内核和文件系统在嵌入式系统 功能描述 起始地址 结束地址 大小 中的典型布局如下: 存放b1 ob程序 Ozl 0000000 Oxl OOTffff 512l(B ◆Bootloader 存放所需参数 Ozl 0080000 Oxl O0 韪垂 51 2I【B ◆启动参数区 存放Kernel OxlOlO0000 Ozl OZfffff B ◆内核驻留区 存放 Oxl 0300000 Ox1 07锤藿锤 5】I【B 92_,f放系统 界2o06.o9 维普资讯 http://www.cqvip.com
l:放系统世界 FIash是一种不挥发存储 及随后的Kernel的执行准备好 记忆体,在嵌入式系统中常常 和数据,在本系统中FIash 一些基本的硬件环境。通常包 用作存储需要永久保存的代码 括屏蔽所有的中断、设置CPU 的速度和时钟频率、RAM初始 (0xl 0000000~0xl 07ffFff)又分 化、初始化LED、关闭CPU内 为如下区间: ◆0 X 1 0 0 0 0 0 0 0 ~ 部指令/数据Cache。为实现上 述功能需要修改文件start.S。 0xl O03fff区间存放BootIoader 汇编代码/bIob/src/bIob/ 蛩_艚|峨to. 髑 t || art.S是内核代码的入口,连 的二进制程序代码,这里的代 st码可以直接被CPU执行; ◆0xl删O~0xloO7f矸f 接时它位于内核代码最前面, 内核从这儿执行,查找proces- sor和architecture类型、建立 FIQ 内核的初始化堆栈、建立临时 页表,清除BSS段,然后TLB r0 。旗 阉茹 蹦雌哪 § 10曩谚 区间存放所需要的参数信息; ◆0'(10080000~0'(103而区 ’ 间存放I hⅨkernet的二 }制代码 ◆0xl0400000~0xl07衙 和caches被刷新,最后进入 区间存放(ramdisk)文件系统。 Flash分配表如表2所示。 start_kernel。 修改的部分代码如下: 产defneSDRAM0a制iregister*/ Bootloader的修改 #'define MCU.PLL register’/ Bootloader的启动过程是 首先对基本的硬件初始化,这 -text 1¨ 是Boot loader一开始就执行的 .globlstart _操作,其目的是为下面的执行 start:b reset 相关链接 ‘.__… ARM7徽处理器特点 ARM7系列微处理器为低 功耗的32位RISC处理器,最适 ◆…… … 代码密度高并兼容16 位的Thumb指令集。 在main.C文件中需要修改 合用于对价位和功耗要求较高 的消费类应用。ARM7微处理 ◆对操作系统的支持广泛, 设定程序文件下载的波特率、 包括Linux、Windows CE、 下载的方式及顺序,设定了一 些帮助命令等E/blob/inlcude目 录下包含与平台相关的.h文件, arch.C文件中对一些参数进行修 器系列具有如下特点:◆具有嵌入式ICE—RT 逻辑,调试开发方便。 Palm OS等。 ◆指令系统与ARM9系 列、ARM9E系列和ARM10E ◆极低的功耗,适合对功耗 要求较高的应用,如便携式产 品 系列兼容,便于用户的产品升级 改,例如命令行字符串、内存起 换代。 ◆主频最高可达130MIPS, 始地址、RAMDISK映象的起始 地址和结束地址等。Time.C和 time.h文件中设定时钟速率,实 ◆能够提供0.9MIPS/MHz 的三级流水线结构。 高速的运算处理能力能胜任绝 大多数的复杂应用。 现时钟中断和实时时钟处理。 2006 nq O9 0PEN SouRCE w0RLD MoNTH 93 口u 维普资讯 http://www.cqvip.com
捌抑№ …… … Config.h设定下载的blob 载成功。 的版本及目标平台的上的 CPU型号信息。Assabet.c文 件中建立了地址的虚实映射关 系,对Flash进行地址分配及 将串口波特率设置为1g200, 境进行相应的引导系统内核执 行的。所以移植的关键过程即 烧写主要模块 是在引导程序的修改上,即对 bootloader的修改。这也是学 习嵌入式系统移植的关键所 在,使你省时高效,没有必要 在运行时在DRAM中的地址 将MC9328MX1平台关掉电源,映射情况等。 例如,在arch.c文件中: P me ̄startt铺畦 暑I、d’| 选择Normal Mode重新打开电 将时间浪费在分析内核的源代 源,将从FI as h启动,运行 码上。在ARM92OT作为新一 Bootloader。 ̄ ̄blob提示符下依 次进行“XW rite Pa ram 代处理器有着强劲的发展势 头,它的应用正快速渗透到各 #defi ̄MEMo簿lr_声 (oxoeoooo ̄)t 毫 玎 Ikernellramdisk”,逐次烧写参 个领数文件、内核映象文件、文件系 域。 本文结合 帮细ffir婚MEMoR j|ND 獭 j臻 l MC9328MX1平台详细介绍了 统到Flash中。烧写完毕后,运 嵌入式Linux操作系统的移植 行内核即可启动平台上的Linux 过程,为进一步嵌入式的开发 烧写Bootloader到Flash 进入PC机的Linux系统,打 开编译器V i,重新编译 系统。 提供了基础。Linux因其免费开 嵌入式Linux的移植,即是 放的源代码被作为嵌入式操作 在不同的平台上运行相同的 系统的首选,基于ARM92OT 的嵌入式Linux开发是有广阔 Bootloader,生成blob.o可执行 Linux系统。在不同平台的开始 文件,用于下载。返回到Win— 运行是根据不同平台的硬件环 前景的全新领域。 dows系统,打开超级终端,设 置使用的串口的波特率为 96OO 《相关链接,・一~ 明明白白ARM ARM(Advanced RISC 校验位 ARM技术正在逐步渗入到我们 生活的各个方面。 nes),既可以认为是一 在平台上选择BootstraP MachiMode(自举模式,用于Flash下 个公司的名字,也可以认为是 载)。MC9328MXl平台提供了 对一类微处理器的通称,还可 Normal Mode(从Flash启动)及 Bootstrap Mode(自举模式, 以认为是一种技术的名字。 1991年ARM公司成立于 ARM公司是专门从事基于 RISC技术芯片设计开发的公 司,作为知识产权供应商,本 身不直接从事芯片生产,靠转 让设计许可由合作公司生产各 具特色的芯片,世界各大半导 体生产商从ARM公司购买其 设计的ARM微处理器核,根据 用于Flash下载)两种启动模 英国剑桥,主要出售芯片设计 式。自举模式允许用户初始化 技术的授权。目前,采用ARM 系统,通过串口向系统内存中 技术知识产权(IP)核的微处 下载程序或数据,可以接收命 理器,即通常所说的ARM微处 令执行存在系统内存中的程 理器,已遍及工业控制、消费 序,为ARM92OT core的指令 类电子产品、通信系统、网络 存储和执行提供了一个16位 系统及无线系统等各类产品市 的指令缓存。选择Xmodem协 场,基于ARM技术的微处理器 SC微处 议,下载bootloader程序。下 应用约占据了32位RI各自不同的应用领域,加入适 当的外围电路,从而形成自己 的ARM微处理器芯片进入市 场。目前,全世界有几十家较 大的半导体公司都使用ARM 公司的授权。 载完后出现blob>提示符即下 理器75%以上的市场份额,94矸坡系统盼群2006.o9
因篇幅问题不能全部显示,请点此查看更多更全内容