【PHP开源代码栏目提醒】:网学会员,鉴于大家对PHP开源代码十分关注,论文会员在此为大家搜集整理了“基于arm的嵌入式linux操作系统移植的研究 - 期刊论文”一文,供大家参考学习!
2006年第11期 计算机系统应用 基于AR M的嵌入式Li n ux操作系统移植的研究 The Reseach Of Porting Embedded Linu×0perating System Based on ARM 刘名博 邓中亮 (北京邮电大学电子工程学院北京100876)摘要:随着ARM技术的广泛应用,建立基于ARM构架的嵌入式操作系统已成为当前研究的热点。
本文结合实例论述了基于ARM9核的微处理器上的嵌入式Linu×操作系统的移植技术,讨论了uCIinux内核的移植过程中内核代码裁剪,介绍了移植uCl|nux的基本实现过程。
关键词:Al洲嵌入式操作系统移植LjnUx1 前言 3 uCI.nu×移植分析 目前,在嵌入式系统里基于ARM核的嵌入式处 3.1 uClInux启动的BocrH∞der介绍理器已经成为市场主流。
随着ARM技术的广泛应 uCIinUx的B00tIoader有许多
开源代码,如BIob、用,建立面向ARM构架的嵌入式操作系统也就成为 Redboot、U—boOt等,BootIoader有以下功能:当前研究的热点问题。
在众多的嵌入式操作系统里, (1)禁止所有中断;开发人员选择比较多的是Unux,这是因为它公开源 (2)设置存储器参数;代码,可以让任何人将其修改移植到自己的目标平 (3)设置GPlO参数;台系统里使用。
ARM Linu×支持包括ARM7、AI洲9、 (4)设置处理器的时钟,初始化各个模式下寄存strongARM等系列的ARM处理器,这些ARM处理器 器与堆栈:都带有内存管理单元(MMu),而对于不带有内存管 (5)使能l catch,D catch;理单元的CPU,一般采用uCIinux作为其操作系统。
(6)跳转到c代码,初始化串口,设置uCI|nux启本文就是根据实际项目,研究如何将uCIlnux内核(使 动参数:用的uCIjnux版本:2.4.18)移植到ARM构架的目标 (7)然后跳转到uC|.nux的内核启动地址。
平台上。
3.2 uCllnux启动参数 uC|.nux启动可以在BoofIoader中输入相应的启2 目标平台介绍 动参数,启动参数放入SDRAM中固定的地址,以方便 本文讨论的嵌入式目标平台采用的是大唐微电子 uClinux在启动过程中取得相应的地址的数据,并解释执科技有限公司开发的基于ARM946E核的COMIP嵌入 行。
启动参数的定义在:Iinu)c/Indude/asm/∞tup.h。
式处理器,COMlP内部集成了LcD控制器,支持SRAM、 Unux 2.4.x以后的内核都期望以标记列表SDRAM和FLASH等多样大容量外部存储器。
本文所 (tagged Ilst)的形式来传递启动参数。
启动参数标记用平台在系统的统一编址空间里,经重映射后的地址 列表以标记盯AG CORE开始,以标记ATAG—NONE结空间分配为:S鼢IJ\^位于0—0为00080000,FLASH位于 束。
每个标记由标识被传递参数的tag—header结构0灼20000100—0蛔2200000,SDRAM位于0徊8000000 以及随后的参数值数据结构来组成。
数据结构lag和 —0如8800000。
其中FLASH地址烧写了Bootloader、 tag—h∞der定义在Unux内核
源码的incIude/asm/u cIinuX kemel以及州蛇文件系统。
s啪p.h头文件中。
在嵌入式UnUx系统中,通常需要由Bootloader 设置的常见启动参数有:ATAG—CO旺、ATAG—MEM、AT·万 方数据 计算机系统应用 2006年第11期AG—CMDUNE、A1.AG RAMDlSK、ATAG-JNITRD等。
arch\ar『T1nommu、vm¨nux.1ds〔4】o LinUx内核在启动时可以以命令行参数的形式来 接收信息,利用这一点我们可以向内核提供那些内核 表1 部分内核
源代码修改
列表 不能自己检测的硬件参数信息,或者重载(ovem如)内 路径与文件f以下都 修改内容 在,IIn呶一2.4.x下) 核自己检测到的信息。
比如,我们用这样一个命令行 /a喃,讲mncHTnu,cof咽.1n 添加CO圳P芯片的定义参数字符串“consoIe=竹ys0,115200n8”来通知内核以Ws0作为控制台,且串口采用“115200bps、无奇偶校 ,a曲,删Trnommu,fVIa嘲k 添加comIp芯片的运行地址的定义 /arch/arr憎1c蚋1mu,t。
ols, 添加comIp的芯片与体系 验、8位数据位”这样的设置。
moch—ty滞 结构标识的定义3.3 uCIln蚁内核自髌压过程 ,arch,翻_丌v∞mmu,mm, 添加comjp芯片硬件信息到系统 proc—aml6,7.S 支持的芯片列表当中,以及相关信息 COMIP在经过BootIoader初始化后,跳转到 /arch/a仃nnon叮nu/k翻11eI/.JC::nu×的内核起始地址,即head—comip.S,一般 州一a丌nV.S 添加comip检测中断源的宏定义 /ar小/a玎憎wmmu/ 该目录定义了ualnux对∞mIpuCIinux有两个入口的说法,一个就是Head.S(本版本 mo出一comIp 芯片结构的支持为head—comlp.S),另一个是head—armV.S的,其实 /Indude,asm—a盯nnommu/ 该目录定义了uCIlnux对comIp a.ch—comlp 芯片板级体系结构的支持真正的入口是head—a盯nV.S。
这是由于uCIinux编译 /d打憎临,HOcI‘,b№m帅.c 增加com;p芯片的r∞怄?的支持完成后有两个版本,一个是.ram版本,~个是.rom版 |毽心|a霄憾怕代黼|j∞斌| 自解压的相关存储器的定义 MaIo酮b本,.rom版本是uCIlnux可执行文件的压缩版本,.ram |疆抓|a∞慧娟n删|嘲J为未压缩版本。
Head.S为.rom版本的入口地址, com讲Bssed/~蛔b酾Ie 添加head—comIp.S到编译链表中head—amw.S为.ram版本的入口地址。
|也№剐矗n|馘jotc 添加co nslDb的初始化程序, 在sIarl k鲥1eI中能调用到 head.S可以说属于Boo¨oader的范畴,主要功能 ,jrdude/asm/pfOc 更改V豳妇efl为O是初始化自解压所需要的空间,获得内核解压后的首地址ZRELADDR(由ZRELADDR定义所得,本系统是 4 uCIinu×内核启动0泗8008000);然后调用decompne§一kemeI,(该函数也有初始化串口,提供串口的输入输出的函数,在In- 4.1内核启动入口cIude/asm—amlnOmmu/arch—comlp/unC0mpresse. h∞d—arnlV.S为uC|inUx内核启动的真正入口函c中定义)。
在该函数中调用gunzjp(),对系统
压缩内 数,这段汇编代码很短,程序过程如下:核解压,解压的内核地址放在Z难LADDR上。
最后跳转 (1)设定当前程序状态,禁止FlQ、IRQ进入SVC模到ZRE队DDR的地址区,开始真正的uCl|nUx内核启动 式:过程。
(2)清空BsS段:3.4 uaIn暇内核裁剪 (3)判断保存prOce嚣or类型与Arch什edu伦类 前面的内容介绍了移植uaInux一些基本原理和 型:准备工作,然而ua|nu×移植需要更改与添加的内容比 (4)跳转到sfa九J昭伦neI。
较复杂,具体要修改的文件查看表1。
其中如何将 4.2内核启动流程COMIP处理器的支持加入到uC||nux中是成功移植 从FLAsH里把压缩的内核映象复制到SDRAM内,uCnnux到COMIP平台的关键。
并且把根盘文件系统所在地址参数传递给内核。
内核 用户通过改写各个文件目录的co棚g.1n与Make- 复制到SDRAM之后,进行内核解压,执行内核启动。
啊Ie文件可以将新的源文件添加到uCIInux的系统 内核启动过程中根据BoOtIoader传递过来的地址参数中¨1。
(co响g.1n为系统的配置
文档,主要是配置相关 去寻找根盘文件系统,将其加载到嵌入式系统上。
这的宏定义、系统信息等等,这样在Make啊Ie中根据这些 样,整个uCI.nux被引导启动起来,进入正常工作宏定义来决定编译连接那些程序〔3】。
至于uCIinux如 状态。
何规定代码,数据映象的地址分配,可以参考\Iinux\ (下转第44页)万 方数据
计算机系统应用 2∞6年第11期 fundion va¨dateA什rIbute ( ¥a竹nbuteName, & ¥vaIue){ 3结束语 ¥methodName=、,aIidate’. ¥a竹ributeName: 安全性应渗透在产品开发生命周期的所有阶段, 坪(method_e×Ists(¥thIs,¥methodName)){ 还应成为应用程序设计的关键
问题。
而输入验证过 陀tum¥thIs一>¥methodName(¥Value); 程是可靠的身份验证和授权策略设计的重要一环。
}eI辩{ 目前,大多数应用程序级攻击都源于恶意形式的输入 retum trUe: 数据和薄弱的应用程序输入验证设计。
本文提出的 } 基于对象数据库的输入验证系统设计思想以Acces— } sor Melhods为中心,使得系统的安全性、扩展性和系 fLJndjon dldChange(){ 统化程度大大提高,在逻辑设计上更加独立和开放, //通知“对象存储类”记录已经改变 从设计方法上提出了解决构建安全应用程序的新思 } 路。
l 参考文献 ’, > 1 Havard Lindset,PHP,^^ySQL and AuthenticmiOn, 可以将某些代码从User类中移到超类ReCord中, w^,w.deva川cles.com,2002,7,7. User子类只需考虑与用户相关的项目,如ac黜rs和 2 Ma竹 Wade. Database AbstraCtion With PEAR, valldation方法,而通过SQL对数据库记录的交互操作 cocIev阳Ib倦.com。
2003。
9,6. 全部放在负责对象存储的类中,因此该类还应承担其 3 VIadmlr Krstulla,User identjficat-on uslng coolcjes ln 子类ReCord的实例化。
这样就使得Record类在规模 PHP/MySQL,、^,vn^,.deVartldes.com,2003,3,28. 上不再庞大,效率也会提高。
这点在处理多种对象时 4 Jesus Castagne№,Professlonal PHP Programming, 是很重要的因素。
Wr0×Press.2001。
3. ·—■—、.—、—、—^·●■—、—、—R—··—■庸-庸■席-—-—、.—、—^_糠-庸·庸-棒■腑肇棒-椿_露■—■—-—、.—、—h—●_—-棒■—■—、|—~—R—蕊_·-庸-—、|—、—~—b—奎 (上接第88页) 5 结束语 (2nd Ed.tion)〔M〕.O‘Rei¨y,2002. 本文根据COMlP目标平台,分析了如何将 2刘峥嵘等编著,嵌入式L.nux应用开发详解〔M〕, uClInUx移植到AR『\^9构建的嵌入式
系统上的主要技 北京:机械工业出版社,2004.7。
术和基本流程,掌握这些移植的技术和流程,对于开 3王学龙编著,嵌入式Llnux系统设计与应用〔M〕, 发嵌入式系统是十分重要的。
目前已经成功移植 北京:清华大学出版社,2001.8。
uC¨nux到COMIP目标平台,并能顺利启动和稳定 4李明,ARMUnux的移植过程及分析〔J〕,电子设计 运行。
应用。
2003.7。
参考文献 1 DanleI P. Bavet, Understanding the UnUx Kemel万 方数据基于ARM的嵌入式Linux操作系统移植的研究作者: 刘名博, 邓中亮作者单位: 北京邮电大学电子工程学院北京100876刊名: 计算机系统应用英文刊名: COMPUTER SYSTEMS amp APPLICATIONS年,卷期: 2006,quotquot11引用次数: 4次参考文献4条1.Daniel P Bovet Understanding the Linux Kernel 20022.刘峥嵘.张智超.许振山 嵌入式Linux应用开发详解 20043.王学龙 嵌入式Linux系统
设计与应用 20014.李明 ARMLinux的移植过程及分析期刊
论文-电子设计应用 200307相似文献10条1.期刊
论文 朱立朝.陈晓荣.乐燕芬.ZHU Li-zhao.CHEN Xiao-rong.LE Yan-fen 嵌入式操作系统μC/OS-II在ARM上的移植研究 -仪表技术2009quotquot12 介绍实时操作系统μC/OS-II在ARM处理器上的可移植性研究.阐述了移植过程中的主要内容和具体方法并且通过一个多任务的程序实例对代码移植性进行测试从而验证μC/OS-II的可移植性.2.学位
论文 马辉 基于ARM的嵌入式操作系统UCLINUX的研究与应用 2007 随着Internet的发展和后PC时代的到来,嵌入式系统成为当前IT产业的热点之一,呈现了巨大的市场需求。
但同时大量的嵌入式应用也对
嵌入式设备的性能和功能提出了更高的要求,一般都需要有良好的网络支持和多任务处理能力。
如何使嵌入式设备具备这两种能力,那么关键是选择合理控制器和嵌入式操作系统,并搭建一个很好的嵌入式平台。
本文选择的控制器是ARMAdvanced RISC Machines公司的32位RISC处理器,其高速度,低功耗,低成本,功能强,特有16/32位双指令集等诸多优异的性能,己成为移动
通信,手持计算,多媒体数字消费等嵌入式解决
方案中的首选处理器。
经过分析比较选择嵌入式操作系统uclinux,它是linux的一个分支,具有强大的网络功能,在中低端嵌入式
网络设备中有广泛应用。
与其它的嵌入式操作系统相比,因其专为没有MMU内存管理单元的CPU而设计的;
免费软件,源代码可以得到;微内核,本身内置网络支持和高度模块化等优点,非常适合做嵌入式开发的操作系统。
将arm和uclinux的各自优势结合起来,为实际的应用提供很好开发起点,使得研发更有意义。
论文对嵌入式系统uclinux的内核的组成,引导代码blob的组成、内存管理、进程管理等进行了研究,掌握了uclinux的开发流程即在linux操作系统下,如何编写程序代码,编译
程序,调试程序,编写与自己程序相关的makefile文件等,在此基础上安装了各种编译器,搭建了嵌入式linux开发环境。
搭建了armuclinux的系统平台,包括硬件设计和软件设计。
硬件电路设计主要是SDRAM、
FLASH、RS232、RTL8019等。
软件上设计主要有:对uc
linux的引导代码blob进行改写,要配置寄存器,存储单元,修改它的启动文件,编写flash的程序,配置串口等:uclinux源代码的改写,主要是网卡驱动的改写和对uclinux的裁减。
在搭建好了armuclinux的平台上,对http协议的运作方式进行了研究,建立了web服务器,对嵌入式系统网络发面的应用进行了探索。
这里所研究的嵌入式系统具有低成本,高效率的特点,值得推广。
最后,本
论文对所做的工作进行了总结并且展望了本嵌入式系统得其他应用。
3.期刊
论文 邓中亮.何双亮.DENG Zhong-liang.HE Shuang-liang 基于ARM的嵌入式操作系统μC/OS-Ⅱ的移植研究 -计算机技术与发展20071710 随着ARM技术的广泛应用建立基于ARM构架的嵌入式操作系统已成为当前研究的热点.文中结合实例论述了基于ARM内核的微处理器上的嵌入式μC/OS-Ⅱ操作系统的移植技术介绍了μC/OS-Ⅱ系统主要特点给出了移植条件及移植的实现过程同时对编写启动代码进行了说明并测试验证通过.4.学位
论文 杜展 基于ARM处理器和嵌入式操作系统uClinux的
web-server实现 2003 本文主要包含以下几个方面:1.ARM处理器和嵌入式操作系统介绍了ARM处理器的
工作原理并着重介绍了ARM7TDMI的结构、特性介绍了嵌入式操作系统uClinux的工作原理及特性。
2.Linux上web-server Boa介绍以及CGI程序的实现:介绍了网页服务器软件Boa的配置方法。
本文研究了CGI程序的编写方法并实现了一个可用于餐饮订单的CGI程序。
3.ARM开发板的介绍,包括硬件配置和电路模块分析。
4.uClinux编译原理:本文跟踪了uClinux生成可用机器代码的编译过程,解析了uClinux的工作原理,框架结构。
5.实验板的bios设计:本文介绍了实验板bios的编写原理,并实现了bios程序。
6.用户应用程序的嵌入化方法:本文给出tftp即时传输、NFS加载和嵌入式编译三种方法(其中嵌入式编译以Boa为例)使得用户程序可以顺利工作在uClinux、ARM体系中。
7.实例
演示:给出了Boa在ARM开发板上的运行效果。
5.学位
论文 黄斌 嵌入式操作系统的内核剖析及基于ARM的移植 .