(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf_第1页
(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf_第2页
(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf_第3页
(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf_第4页
(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf_第5页
已阅读5页,还剩70页未读 继续免费阅读

(计算机应用技术专业论文)基于arm的嵌入式教学实验平台的研究与开发.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

西南科技大学硕士研究生学位论文第1 页 摘要 论文通过研究国内外嵌入式系统的现状和发展趋势,结合国家在8 6 3 和 十一五规划重点项目“流程工业数字化仪器仪表”的指导思想,旨在开发一 套适应网络测控仪表开发的开放性、低成本、运行良好的a r h 实验教_linux 学平台。该研究成果将用于产品开发及教学实验。 论文在详细研究l p c 2 2 9 0 微控制器和u c l i n u x 嵌入式操作系统的基础上, 针对特定的微处理器和外围设备,研发了系统的启动加载程序b o o tl o a d e r : 对u c l i n u x 内核进行了适应性的修改和裁剪,完成了基于处理器平台的嵌入 式操作系统的移植,并研发了相应的设备驱动程序。最终实现了一个嵌入式 实验教学平台的基本功能。 论文解决了目前u c l i n u x k e r n e l 一2 4 内核尚不具体支持p h i l i p s 公司 l p c 2 2 9 0 处理器芯片的技术问题,这对底层嵌入式系统开发具有很好的示范 作用,并对今后的研究工作起到一定的启发作用。 关键字:嵌入式系统l p c 2 2 9 0u c l i n u xb o o t l o a d e r 西南科技大学硕士研究生学位论文第页 a b s t r a c t t h ep u r p o s eo ft h i s p a p e ri st o w e l l - f u n c t i o n e da r m _ l i n u xt e a c h i n g d e v e l o pas e to fl o w c o s ta n do p e n p l a t f o r mf o rt h ea c a d e m i ce m b e d d e d l a b o r a t o r yt h r o u g hs t u d y i n gt h ep r e s e n ts i t u a t i o na n dt h ef u t u r eo fe m b e d d e d s y s t e mb o t hd o m e s t i ca n di n t e r n a t i o n a l ,w h i c hw i l lb eu s e df o rr e s e a r c h i n ga n d t e a c h i n ge x p e r i m e n t b a s e do ns t u d y i n gl p c 2 2 9 0m i c r o p r o c e s s o ra n du c l i n u xo p e r a t i n gs y s t e m i nd e t a i l s ,t h i sp a p e rd e v e l o p st h el o a d i n gp r o g r a m m e r - - - b o o tl o a d e rf o rt h i s s y s t e m t h e nc a r r i e so n t h ec o m p a t i b l er e v i s i o no fu c l i n u xk e r n e l ,a n d c o m p l e t e st h et r a n s p l a n tt a r g e t i n gt h ep r o c e s s o rp l a t f o r m f i n a l l y , t h i sp a p e r d e v e l o p sac o r r e s p o n d i n ge q u i p m e n td h v e ga n dr e a l i z e st h ee s s e n t i a lf u n c t i o n s o nt h ee m b e d d e dt e s tp l a t f o r m t h et h e s i ss o l v e st h et e c h n i c a lp r o b l e mt h a tu c l i n u x - k e r n e l 2 4d o s en o t c o n c r e t e l ys u p p o r t sp h i l i p sc o m p a n y sl p c 2 2 9 0m i c r o p r o c e s s o li ti sag o o d d e m o n s t r a t i o nf o rt h ed e v e l o p m e n ta n dr e s e a r c ho fl o wl e v e le m b e d d e ds y s t e m k e yw o r d s :e m b e d d e ds y s t e m ;l p c 2 2 9 0 :u c l i n u x ;b o o t l o a d e r 独创性声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得的 研究成果。尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包 含其他人已经发表或撰写过的研究成果,也不包含为获得西南科技大学或其 它教育机构的学位或证书而使用过的材料与我一同工作的同志对本研究所 做的任何贡献均已在论文中作了明确的说明并表示了谢意。 签名:翻节茅 日期:矽7f 关于论文使用和授权的说明 本人完全了解西南科技大学有关保留、使用学位论文的规定,即:学校 有权保留学位论文的复印件,允许该论文被查阅和借阅;学校可以公布该论 文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 ( 保密的学位论文在解密后应遵守此规定) 签名:知l 净署 导师签 乏; 日期:矽7 多 西南科技大学硕士研究生学位论文第l 页 1绪论 所谓嵌入式系统是指以应用为中心、以计算机技术为基础、软硬件可裁 减、适应应用系统对功能、可靠性、成本,体积、功耗严格要求的专用计算 机系统m m 。和通用计算机不同,嵌入式系统是针对具体应用的专用系统,消 费品中的嵌入式应用一般具有成本敏感性,它的硬件和软件都必须高效率地 设计,量体裁衣、去除冗余,力争在同样的硅片面积上实现更高的性能。 1 1 论文选题的背景 随着信息技术的不断发展,数字化产品的普及,嵌入式系统已成为i t 界的一个热点。其应用领域主要有三方面“,:军事国防领域:如高炮指挥仪、 导弹控制( 弹上计算机) 、舰艇雷达、电子对抗、军事指挥系统等;民用电 子装备及机电一体化设备:如各种测量仪器、数控装置、工业控制机、医疗 电子设备等;家用电器及消费类电子设备:数字电视机机项盒、手机、可视 电话、掌上电脑、个人数字助理( p d a ) 、家庭网络系统等设备。 2 0 0 6 年国家科技部8 6 3 计划重点项目“流程工业数字化仪器仪表”的研 究方向之一“智能化通用仪器仪表的开发及产业化”,其中就包含了嵌入式 式系统这一内容该项目的指导思想为研发自主产权的产品,减少进口,扩 大出口,支持与引领国民经济的健康发展。因此嵌入式系统的研究与开发有 着越来越重要的实际意义。研发自主产权的产品,必须掌握嵌入式系统的底 层核心技术,否则很难为自己量身定做产品,处处受制于人,更不能走在信 息化产业的最前端。 传统的以8 位机为核心的无操作系统的嵌入式体系架构己远远落后于时 代的需求m 。于是以a r m 、p o w e r p c 、m i p s 等为代表的高性能嵌入式微处理器 和嵌入式操作系统应运而生。所以研究a r k 和l i n u x 这两种开放而先进的技 术非常适合现阶段的需求。 1 2 论文选题的目的和意义 本论文研究的目的在于掌握嵌入式系统的核心技术,研发一套低成本、 开放型,运行良好的a r m l i n u x 嵌入式实验教学平台,用于产品开发及教学 西南科技大学硕士研究生学位论文第2 页 工作。 构架a r m _ l i n u x 嵌入式实验教学平台主要要解决的技术难点有:启动加 载程序b o o tl o a d e r 、嵌入式操作系统的裁减与移植“,。 ( 1 )启动加载程序b o o tl o a d e r b o o tl o a d e r 移植是在特定硬件平台上操作系统移植至关重要的一步, 它是严重地依赖于硬件而实现的m 。每种不周体系结构的处理器都有不同的 启动加载程序b o o tl o a d e r 除了依赖于处理器的体系结构外,实际上还依 赖于具体的嵌入式板级设备的配置,也就是说,对于两块不同的嵌入式板而 言,即使它们是基于同一种处理器而构建的,要想让运行在一块板子上的 b o o tl o a d e r 程序也能运行在另块板子上,通常也都需要对b o o tl o a d e r 进行修改和移植。另外b o o tl o a d e r 具体功能设计还和要引导的操作系统的 具体运行方式有关,所以在嵌入式世界里建立一个通用的b o o tl o a d e r 几乎 是不可能的。因此必须研究b o o tl o a d e r 的关键技术,自主开发针对特定硬 件平台的启动加载程序。 ( 2 )嵌入式操作系统的移植 嵌入式l i n u x 并不是支持所有的微处理器体系结构,而且对于同一体系 结构的不同微处理器芯片其移植过程也不尽相同。所以对于新型的微处理器 进行操作系统的移植仍是目前嵌入式领域的一个技术难点。另外,嵌入式操 作系统的裁减还依赖于嵌入式硬件平台的外围设备。对于两块不同的嵌入式 板而言,即使它们是基于同一种处理器而构建的,由于外围设备和用途的不 同,操作系统的裁减程度和难度也不相同。所以必须研究嵌入式操作系统移 植的核心技术,针对特定的微处理器和外围设备,裁减出合适的系统。 论文对底层嵌入式系统开发具有很好的示范作用,对今后的研究工作有 一定的启发作用。 1 3 论文主要研究内容 本课题主要研究以下内容: ( 1 ) 对国内外嵌入式系统的最新发展情况作了调查研究,结合课题的实 际要求,确定应用系统中嵌入式微处理器和嵌入式操作系统的选型。选择 p h i l i p s 公司的a r m 7 微控制器l p c 2 2 9 0 ,待移植的嵌入式操作系统为 u c l i n u x 。 ( 2 ) 针对嵌入式应用平台的具体应用,对硬件平台和嵌入式操作系统 西南科技大学硕士研究生学位论文第3 页 u c l i n u x 进行研究,研发系统的启动引导程序b o o tl o a d e r ,该程序支持 f t p 下载,下载程序速度更快 ( 3 )由于u c l i n u x k e r n e l 一2 4 内核尚不具体支持p h i l i p s 公司 l p c 2 2 9 0 处理器芯片,对u c l i n u x 进行适应性的修改,然后根据实验平台的 特定外围设备,对u c l i n u x 进行裁减,实现基于处理器平台的嵌入式操作系 统的移植。 ( 4 )根据开放性实验平台的需求,开发相应的设备驱动程序。针对嵌入 式教学实验的特点,驱动程序采用模块的形式提供,可以进行动态的加载和 卸载。另外,驱动程序中添加了一个s h e l l 文件,用来完成创建设备节点, 加载驱动程序,这样可以避免每次使用驱动程序之前都要完成这些繁琐的准 备工作。 ( 5 )对系统进行测试,实现一些基础类、人机接口类的实验。最终实现 一个嵌入式实验教学平台的基本功能 西南科技大学硕士研究生学位论文第4 页 2 应用系统软硬件方案研究 本论文研究的嵌入式硬件平台核心为p h i l i p s 公司的a r m 7 微控制器 l p c 2 2 9 0 ,待移植的嵌入式操作系统为u c l i n u x 。 2 1a r m 微处理器选型 l p c 2 2 9 0 是基于一个支持实时仿真和跟踪的1 6 3 2 位a r m 7 t d m i sc p u 。 对代码规模有严格控制的应用可以使用1 6 位t h u m b 模式,能将代码规模降低 超过3 0 ,而性能的损失却很小。 由于l p c 2 2 9 0 的1 4 4 脚封装、极低的功耗、多个3 2 位定时器、8 路l o 位 a d c 、2 路c a n 、p w m 通道以及多达9 个外部中断,使它特别适用于汽车、工 业控制应用以及医疗系统和容错维护总线。通过配置总线,l p c 2 2 9 0 最多可 提供7 6 个g p i o 。由于内置了宽范围的串行通信接口,也非常适合于通信网关、 协议转换器以及其它各种类型的应用m m 。 由于该实验教学平台将用于网络测控仪表的开发,所以选择p h i l i p s 公 司的a r m 7 微控制器l p c 2 2 9 0 2 1 1 l p c 2 2 9 0 的主要特性 l p c 2 2 9 0 结构图m 如图2 - 1 所示: ( 1 )1 6 3 2 位a r m 7 t d m i - s 核,l q f p l 4 4 封装。 ( 2 ) 1 6 k b 片内静态r a m 。 ( 3 )串行b o o t 装载程序通过u a r t o 来实现系统下载和编程。 ( 4 ) 2 个互连的c a n 接口,带有先进的验收滤波器。多个串行接口,包 括2 个1 6 c 5 5 0 工业标准u a r t 、高速1 2 c 接口( 4 0 0 k b i t s ) 和2 个s p i 接 口。 ( 5 ) 8 路1 0 位a d 转换器,转换时间低至2 4 4 峪。 ( 6 )2 个3 2 位定时器( 带4 路捕获和4 路比较通道) 、p w m 单元( 6 路 输出) 、实时时钟和看门狗。 ( 7 )向量中断控制器。可以配置优先级和向量地址。 ( 8 )通过外部存储器接口可将存储器配置成4 组,每组容量高达1 6 m b , 西南科技大学硕士研究生学位论文第5 页 图2 一l f i g 2 - 1 l p c 2 2 9 0 结构图 s t r u c t u r eo fl p c 2 2 9 0 西南科技大学硕士研究生学位论文第6 页 数据宽度为8 1 6 3 2 位。 ( 9 )多达7 6 个通用i o 口( 可承受5 v 电压) ,9 个边沿或电平触发的 外部中断引脚。 ( 1 0 )通过片内锁相环( p l l ) ,可实现最大为6 0 m h z 的c p u 操作频率, 设置时间为1 0 0 p , 5 。 ( 1 1 )片内晶振频率范围卜3 0 删z 。 ( 1 2 )2 个低功耗模式,空闲和掉电。 ( 1 3 )通过外部中断将处理器从掉电模式中唤醒。 ( 1 4 )可通过个别使能禁止外部中断来优化功耗。 ( 1 5 )双电源一c p u 操作电压范围为:1 6 5 - 1 9 5 v 。- i o 操作电范围: 3 0 - 3 6 v ,可承受5 v 电压。 2 1 2 l p 0 2 2 9 0 的系统控制模块 ( 1 )晶振 振荡器支持的晶振的范围为1 m h z 一3 0 m h z 晶振输出频率为f o s c ,而a r m 处理器时钟频率为c c l k “”。除非连接并运行p l l ,否则f o s c 和c c l k 的值是 相同的。 ( 2 ) p l l ( 锁相环) p l l 可以接受的范围为1 0 m h z - 2 5 m h z 的输入频率。输入频率通过一个电 源控制振荡器( c c o ) 可以倍增为i o m h z - 6 0 m h z 倍增值可以是从i 到3 2 的 整数“( 实际上在该微控制器当中,由于c p u 频率的限制,倍增器的值不可 能高于6 ) 。c c o 操作的范围为1 5 6 m h z 一3 2 0 m h z ,因此在环当中增加了一个分 频器,这样p l l 在提供所需要的输出频率时,使c c o 保持在其频率范围内。 输出分频器可以设置为2 、4 、8 、或者1 6 以产生输出的时钟。由于最小输出 分频值为2 ,这样就确保了p l l 输出具有5 0 的占空比。程序必须配置并且激 活p l l ,等待p l l 锁定之后再将p l l 作为时钟源。 ( 3 )复位和唤醒定时器 l p c 2 2 9 0 有2 个复位源:r e s e t 管脚和看门狗复位。r e s e t 管脚是一个 施密特触发管脚,带有附加的干扰滤波器。任何复位源所导致的芯片复位都 会启动唤醒定时器,复位状态将一直保持到外部复位撤除,震荡器开始运行。 振荡器运行经过固定数目的时钟后片内电路完成其初始化。 当内部复位撤除后,处理器从复位向量地址0 开始执行。此后所有的处 西南科技大学硕士研究生学位论文第7 页 理器和外设寄存器都被初始化为预设的值。 唤醒定时器的用途是确保振荡器和其他的芯片操作所需要的模块功能在 处理器能够执行指令之前完全正常的工作。这在上电、各种类型的复位以及 任何原因所导致的上述功能被关闭的情况下非常的重要。由于振荡器和其他 功能在掉电模式下关闭,因此将处理器从掉电模式中唤醒要利用唤醒定时器。 唤醒定时器监视晶体振荡器是否可以安全的执行代码。当芯片上电时, 或某些事件导致芯片退出掉电模式时,震荡器需要一定的时间以产生足够振 幅的信号驱动时钟逻辑。 ( 4 ) 外部中断输入 根据可选管脚功能的设定,l p c 2 2 9 0 最多可包含9 个边沿或触发的外部 中断输入。外部事件可作为4 个独立的中断信号来处理。外部中断输入可用 于将处理器从掉电状态唤醒。 ( 5 )存储器的映射控制 存储器映射控制改变从地址o x 0 0 0 0 0 0 0 0 开始的中断向量的映射。向量可 以映射到外部存储器b a n k o 的底部或片内r a m 。这使得在不同存储空间中运 行的代码都能够对中断进行控制。 ( 6 )外部存储器控制器 外部静态存储器控制器是一个为系统总线和外部( 片外) 存储器器件提 供借口的功能模块。他同时支持4 个可单独配景的存储器组的工作( 每个存 储器组成的容量为1 6 m 字节,带来字节定位使能控制) 。同时,每个存储器组 都支持s r a m 、r o m 、f l a s he p r o m 、b u r s tr o m 存储器和一些外部i o 器件。 每个寄存器组的总线宽度为8 位、1 6 位、3 2 位。 2 1 3 通用串口 l p c 2 2 9 0 包含2 个u a r t 。一个u a r t 提供一个完全的调制解调器控制握手 接口,另外一个u a r t 只有发送和接收数据线。u a r t 包含以下特性: ( 1 )1 6 字节接收和发送f i f o 。 ( 2 )寄存器位置遵循5 5 0 工业标准。 ( 3 ) 接收器f i f o 触发点为l ,4 、8 和1 4 个字节。 ( 4 )内置波特率发生器。 ( 5 )u a r t i 包含标准调制解调器接口信号。 西南科技大学硕士研究生学位论文第8 页 2 1 4 通用输入输出口( g p l 0 ) g p i o ( 通用输入输出) 或总线扩展器利用工业标准1 2 c 、s m b u s 或s p i 接 1 2 1 简化了i o1 2 1 的扩展。当微控制器或芯片组没有足够的i o 端1 2 1 ,或当系 统需要采用远端串行通信或控制时,6 p i o 产品能够提供额外的控制和监视功 能“, ( 1 ) g p i o 特性 单个位的方向控制 单独控制输出的置位和清零 所有i o 口在复位后默认为输入 ( 2 ) 应用 通用i o 口;驱动l e d 或其他指示器;控制片外器件;检测数字输入。 ( 3 )引脚描述 没有连接到特定外设功能的引脚有g p i o 寄存器进行控制。引脚可以动态 配置为输入或输出。寄存器可以同时对任意个输出1 2 1 进行置位或清零,输出 寄存器的值以及引脚的当前状态都可以读出。寄存器描述如下表2 一l 所示: 表2 - 1g p l 0 寄存器映射 t a b i e2 - 1 m a p p i n go f g p l 0r e g is t e r 西南科技大学硕士研究生学位论文第9 页 2 1 5 引脚连接模块 管脚连接模块允许将微控制器的管脚配置为不同的功能。配置寄存器控 制连接管脚和片外外设的多路开关。应当在激活外设以及使能任何相关的终 端之前,将外设连接到相应的管脚。任何一个被使能的外设,如果其功能没 有映射到相关的管脚,对它的激活将被认为是未定义的m 。管脚连接模块的 寄存器如下表2 - 2 所示: 表2 - 2管脚连接模块的寄存器 t a b i e2 - 2 r e g i s t e ro fp i n ii n k i n gm o d l e 2 2 嵌入操作系统选型 由于本论文采用的处理器是l p c 2 2 9 0 ,它是一款没有m m u 的处理器,另 外u c l i n u x 的开放源代码利于学习,所以最终采用u c l i n u x 作为待移植的嵌 入式操作系统。 2 2 1u c l i n u x 系统简述 u c l i n u x 是一个符合g n u g p l 公约的开放源代码项目,现有l i i - l e o 公司 维护。u c l i n u x 的名字来源于希腊字母“m u ”和英文大写字母“c ”的结合, “m u ”代表“微小”之意,字母“c ”代表“控制器”,所以从字面上就可以 看出它的含义,即“微控制领域中的l i f l u x 系统”( i o l i l l l l l l ) 。 标准l i n u x 的核心支持虚拟存储器,它控制着处理器的内存管理单元 ( m m u ) ,将虚拟内存地址映射为物理内存地址“。支持虚拟存储器的操作系 统具有许多的优点,如:可运行比物理内存大的程序、缩短启动时闻、减轻 程序员分配和管理内存的负担、实现代码共享、提供内存的保护等。但是, 虚拟存储器的管理需要一些数据结构,留给程序的物理内存必然会减少。同 时,地址映射延长了指令的执行时间,降低了系统的性能。更重要的是,m m u 西南科技大学硕士研究生学位论文第1 0 页 增加了硬件的成本和运行的功耗。 为了降低硬件成本及运行功耗,有一类c p u 在设计中取消了内存管理单 元( m m u ) 功能模块。u c l i n u x 是专门针对无m m i j 的a r m 体系的c p u 设计的, 它是在l i n u x 的基础上通过改写部分的内核和文件系统而形成的不带内存管 理的嵌入式操作系统“”“”在g n u 通用公共许可证( g n ug p l ) 的保证下,运 行u c l i n u x 操作系统的用户已使用几乎所有的l i n u xa p i 函数,不会因为没 有m m i j 而受到影响。由于u c l i n u x 在标准的l i n u x 基础上进行适当的裁剪和 优化,形成一个高度优化的、代码紧凑的嵌入式l i n u x 。虽然它的体积很小, u c l i n u x l 仍然保留了l i n u x 的大多数优点:稳定、良好的移植性、优秀的网 络功能、完备的对各种文件系统的支持、以及丰富的a p i 等u c l i n u x 的基 本架构“”如图2 - 2 所示。 厂 厂_ _ 磊磊 厂 刊 捆霞一雪叫l b o o tl o a d e r :负责l i n u x 内核的启动,它用于初始化系统资源,包括 s d r a m 。这部分代码用于建立l i n u x 内核运行的环境。 内核初始化:l i n u x 内核入口点是s t a r t k e r n e l ( ) 函数。他初始化内 核的其他部分,包括捕获,i r o 通道,调度,设备驱动,标定延迟循环,最 重要的是能够f o r k “i n i t ”进程,以启动整个多任务环境。 系统调用函数捕获函数:在执行完“i n i t ”程序后,内核对程序流不再 有直接的控制权,此后,他的作用仅仅是处理异步时间( 例如硬件中断) 和 西南科技大学硕士研究生学位论文第1 1 页 为系统调用提供进程。 设备驱动:设备驱动占据l i n u x 内核很大一部分。与其它的操作系统一 样,设备驱动为它们所控制的硬件设备和操作系统提供接口。 文件系统:l i n u x 最重要的特征之一就是对多种文件系统的支持。这种 特性使得l i n u x 很容易的同其他操作系统共存。文件系统的概念使得用户能 够察看存储设备上的文件和路径而无须考虑实际的物理设备的文件系统类 型。l i n u x 透明的支持许多不同的文件系统,将各种安装的文件和文件系统 以一个完整的虚拟文件系统的形式呈现给用户。 2 2 2 u c l i f l u x 的存储管理 主存储器即内存,是计算机系统的重要系统资源,对于嵌入式系统来说 更是如此,嵌入式系统无论使用f l a s h 还是r a m 等介质,都将它们映射成内 存存储空问来使用,所有程序都在这里运行m m ”因此,内存管理是嵌入式 操作系统比较重要的任务之一 ( 1 )u c l i n u x 针对没有m 椰的特殊处理器 u c l i n u x 是针对无m m u 的处理器n ”设计的,不采用虚拟内存管理技术,但 仍然使用存储器的分页管理机制。系统在启动的时候把实际存储器进行分页, 在加载应用程序时程序分页加载。但是由于没有m m u 管理,所以实际上 u c l i n u x 采用实存储器管理策略,即用户程序同内核以及其他应用程序都在 一个地址空间 u c l i n u x 系统对于内存的访问是直接的,它对地址的访问不需要经过 m m u ,而是直接送到地址线上输出,所有程序中访问的地址都是实际的物理地 址“”。操作系统对内存空间没有保护,各个进程实际上共享一个运行空间,每 个进程没有独立的地址转换表由于没有虚拟内存管理,调度不能使用“按 需调页”的算法,一个进程执行前,系统必须给进程分配足够的连续的地址 空间,然后一次性的装入主存储器的连续空间中。u c l i n u x 的分页管理机制 中对于线性地址到物理地址的转换不做任何工作“”程序的加载地址与预期 通常不一样,必须进行程序重定位 u c l i n u x 将整个物理内存划分为大小4 k b 的页面,有数据结构p a g e 管理, 每个页面有一个p a g e 结构,所有的p a g e 结构组成一个数组m e m _ m a p 。这 些物理页面可以为代码、数据、堆栈、文件等提供空间。 u c l i n u x 对应用的内存分配和释放是通过传统的函数k m a l l o c ( ) 和 西南科技大学硕士研究生学位论文第1 2 页 k f r e e ( ) 实现的。分配的是从空闲物理页面链表中获取的页面。 ( 2 )u c l i n u x 的进程处理 u c l i n u x 不支持m m u ,这对他的多个进程管理有一定的影响“町“。 在标准的l i n u x 中,父进程用系统调用f o r k 来创建子进程,子进程是父 进程的精确拷贝。父子进程拥有各自的地址空间,从f o r k 调用后同时开始运 行。在标准的l i n u x 中的f o r k 操作是非常高效的,这种技术依赖于m m u 的支 持,因而无法用于u c l i n u x 在u c l i n u x 中所有的进程共享一个全局地址空 间,f o r k 产生的子进程中的指针将仍然指向父进程中的数据。基于以上原因, u c l i n u x 取消了f o r k 操作。标准l i n u x 还可以用系统调用v f o r k 来创建进程, 但其语义和f o r k 不同。在v f o r k 调用之后,父进程将自己的内存空间租借给 子进程,即父子进程占据同一块内存区域,父进程在v f o r k 调用后开始睡眠, 直到子进程调用e x e c ( e x i t ) ,内核才将内存空间还给父进程,并将之唤醒。 v f o r k 不涉及整个地址空间的数据复制,且不会产生子进程中的指针指向父 进程中的数据的问题,因此,它的语义更加适合u c l i n u x 环境,u c l i n u x 就 是采用基于v f o r k 的进程创建方案。 另外,由于v f o r k 调用之后父子进程共享同一块内存区域,子进程必须 尽快地调用e x e c ( e x i t ) ,并且在v f o r k 和e x e c ( e x i t ) 之间不修改父进程的数 据,也不破坏父进程的堆栈环境,否则易引起系统崩溃。 2 2 3u c l in u x 内核源文件的组织结构 ( 1 )u c l i n u x 内核源文件 将u c l i n u x 内核源文件( u c l i n u x d i s t 一2 0 0 4 0 4 0 8 t a r ) 解压以后就形成 了源文件的根目录,主要有以下几个子目录和文件n 一m : b i n存放用户常用的基本程序 c o n f i g存放u c l i n u x 的结构文件 d o c u m e n t a t i o n存放u c l i n u x 的h o w t o 文档和f a q 1 i b存放各类库 l i n u x 一2 o - x存放l i n u x - 2 0 版本的内核源文件 e l n u x 一2 4 - x存放l i n u x 一2 4 版本的内核源文件 l i n u x 一2 6 - x存放l i n u x - 2 6 版本的内核源文件 t o o l s存放工具说明文档和其他杂项 西南科技大学硕士研究生学位论文第1 3 页 u c l i b c存放u c l i n u x 的库文件 u s r存放用户的各种应用程序 v e n d o r s存放有关各种处理器的文件 c o p y i n g ,m a i n t a n e r s ,m a k e f il e ,r e a d m e ,s o u r c e 等等。 。本文以内核2 4 x 为倒,该版本的u c l i n u x 核心源程序安装在 u c l i n u x 1 i n u x 一2 4 x 目录下内核源程序的文件按树形结构进行组织,在 u c l i n u x 1 i n u x 一2 4 x 最上层有如下的目录: a r c h :a r c h 子目录包括了所有和体系结构相关的核心源代码。它的 每一个子目录都代表一种被支持的体系结构 i n c l u d e :i n c l u d e 子目录包括编译核心所需要的大部分头文件。与 平台无关的头文件在i n c l u d e 1 i n u x 子目录下,与a r m 7 t d m ic p u 相关的头文 件在i n c l u d e a s m - a r m n o m m u 子目录下 i n i t :i n i t 目录包含核心的初始化代码( 注:不是嵌入式系统的引 导代码,而是内核的启动代码) ,包含两个文件m a i n c 和v e r s i o n c ,这是 研究初始化和内核如何工作的起点 m m :衄目录包含所有独立于c p u 体系结构的内存管理代码,如页式 存储管理内存的分配和释放等,而和体系结构相关的代码则位于 a r m :( a r c h ) m ,例如a r c h a r m n o m 皿n f a u l t c 。 k e r n e l :主要的核心代码,该目录下的文件实现了大多数u c l i n u x 系统的内核函数,其中最主要的文档是s c h e d c ,同样,和体系结构相关的 代码在a r c h $ ( a r c h ) k e r n e l 中。 d r i v e r s :放置系统所有的设备驱动程序,每种驱动程序又各占用一 个子目录,如b l o c k 目录下为块设备驱动程序。通过打i v e r s g e n h d c 中的 d e v i c e s e t u p ( ) 可以查看所有可能包含文件系统的设备是如何初始化的。它 不仅初始化硬盘,也初始化网络。 其他如l i b 放置核心的库代码;n e t 是核心与网络相关的代码;i p c 这个目录包含核心的进程间通信的代码;f s 为所有的文件系统代码和各类系 统代码和各类型的文件操作代码,它的每一个子目录支持一个文件系统。例 如:f a t 和e x t 2 ;:s c r i p t s 目录包含用于配置核心的脚本文件等。 ( 2 )配置文件 编译内核时所涉及的配置文件主要包括一m ,: e o n f i g i n 西南科技大学硕士研究生学位论文第1 4 页 由程序c o n f i g m k c o n f i g 生成的文件,提供关于平台选择、程序库选择 以及内核代码版本选择的配置选项。 c o n f i g ,a u t o c o n f h 配置内核时产生的文件。存储着对平台和程序库以及内核代码版本选择 的结果。a u t o c o n f h 是一个标准的c 头文件,方便在代码中进行条件编译。 而c o n f i g 则是下次进行配置时的默认选项。 c o n f i g c o n f i g i n 提供编译入r o o t 文件系统程序配置选项文件 c o n f i g c o n f i g ,c o n f i g a u t o c o n f i g h 编译入r o o t 文件系统的程序的选择结果其中,c o n f i g a u t o c o n f i g 则 提供宏定义,方便进行条件编译,而c o n f i g c o n f i g 则提供下次配置的默认 选项。 l i n u x 一2 4 x a r c h $ ( a r c h ) c o n f i g i n 提供内核编译时的选项。添加平台等操作可以在此修改。 ( 自 li n u x 一2 4 x d r i v e r s t a r g e t m o d u l e s c o n f i g i n 提供内核编译时的选项,在编译内核进行选择驱动时有用。如果需要添 加驱动程序,则需要修改此文件。 l i n u x 一2 4 x c o n f i g ,1 i n u x 一2 4 x i n c l u d e 1 i n u x a u t o c o n f h 内核部分参数配置结果。a u t o c o n f h 为源代码中的条件编译部分提供相 应的宏定义。 l i n u x 一2 4 x a r c h $ ( a r c h ) m a k e f i l e 提供一些体系相关的编译参数,指定连接进内核镜像文件的模块,指定 内核镜像文件的链接起始地址,指定平台相关的参数,调用l d 文件链接生成 最终的内核镜像文件。定义的地址参数有:t e x t a d d r 。 1i n u x 一2 4 x a r c h $ ( a r c h ) v m l i n u x a r m y 1 d s i n 控制链接生成的内核镜像文件的l d 程序配置文件。指定各个段的链接地 址等。应用的地址参数有:t e x t a d d r 。 li n u x 一2 4 x a r c h $ ( a r c h ) b o o t m a k e f il e 提供链接压缩内核时用到的一些地址参数定义,这些参数还将在内核解 压过程中用到。定义的地址参数有:z t e x t a d d r ,z r e l a d d r 。 o1i n u x 2 4 x a r c h $ ( a r c h ) b o o t c o m p r e s s e d m a k e f i1 e 控制生成压缩内核文件过程,并调用1 d 程序把启动程序和内核链接成一 个目标文件。 西南科技大学硕士研究生学位论文第1 5 页 ol i n u x - 2 4 x a r c h $ ( a r c h ) b o o t c o m p r e s s e d l i n u x 1 d s i n 控制把启动程序和内核文件链接成一个目标文件的过程这个文件给出 了最终目标文件z l m a g e 中压缩过的内核的起始地址和末尾链接地址, i n p u t d a t a ,i n p u t d a t a _ e n d 。引用到的地址参数有:l o a d _ a d d r ,t e x t s t a r t 。 0 v e n d o r s x x x x x x c o n f i g 1 i n u x 一2 4 x 和c o n f i g v e n d o r 一2 4 。x 这些文件提供了针对某一个平台的默认选择项。 0v e n d o r s x x x x x x m a k e f il e 在内核编译的过程中,将会调用此m a k e f i l e 文件,此文件的作用是构成 r o o t 文件系统,并进行压缩,生成r o m f s 0 。在生成r o o t 文件系统的过程中, 有可能还会用到m o t d 、r c 、i n i t t a b 等文件,则需要为此m a k e f i l e 文件准备 这些文件。平常需要增添设备,需要往r o o t 文件系统中添加文件都可以在此 m a k e f i l e 中进行相应的更改。 2 2 4 u c l i n u x 小型化的方法 ( 1 ) 重新编译内核 l i n u x 内核采用模块化的设计,即很多功能模块可以独立的加载或卸载, 开发人员在设计内核时把这些内核模块作为可选项,可以在编译系统内核时 指定一。因此一种较通用的做法是对l i n u x 内核重新编译,在编译时仔细的 选择嵌入式设备所需要的功能模块,同时删除不需要的功能。通过对内核的 重新配置,可以使系统运行所需的内核显著减小,缩减资源使用量。 ( 2 )内核加载方式 u c l i n u x 的内核有两种可选的运行方式m : f l a s h 运行方式: 把内核的可执行映像烧些到f l a s h 上,系统启动时从f l a s h 的某个地址 开始逐句执行。这种方法实际上是很多嵌入式系统采用的方法。 内核加载方式: 把内核的压缩文件存放在f l a s h 上,系统启动时读取压缩文件在内存里 解压,然后开始执行,这种方式相对要复杂一些,但是运行速度更快( r a m 的存取速度要比f l a s h 高) 。同时这也是l i n u x 系统采用的启动方式一。 ( 3 )文件系统 u c l i n u x 系统采用r o m f s 文件系统,这种文件系统相对于一般的e x t 2 文 件系统要求更少的空间。空间节约来源于两个方面,首先内核支持的r o m f s 西南科技大学硕士研究生学位论文第1 6 页 文件系统比支持e x t 2 文件系统需要更少的代码,其次r o m f s 文件系统相对简 单,在建立文件系统超级模块( s u p e r b l o c k ) 时需要更少的存储空间。r o m f s 文件系统不支持动态擦写存储,对于系统需要动态保存的数据采用虚拟r a g 盘r a m d i s k 的方法进行处理( r a m 盘将采用e x t 2 文件系统) 。 ( 4 )u c l i n u x 的应用程序库 u c l i n u x 小型化的另一个做法是重写了应用程序库,相对于越来越大且 越来越全的g l i b c 库,u c l i b c 对1 i b c 作了精简m ,。u c l i n u x 对用户程序采用 静态连接的形式,这种做法使应用程序交大,但是基于内存管理的问题必须 如此,同时这种做法也更接近于通常的嵌入式系统的做法。 西南科技大学硕士研究生学位论文第1 7 页 3b o o tl o a d e r 的设计与实现 简单地说,b o o tl o a d e r 就是在操作系统内核运行之前运行的一段小程 序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从 而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核 准备好正确的环境m 。 b o o tl o a d e r ( 启动) 代码类似于p c 的b i o s ( 基本输入输出系统) ,它 从系统上电或复位接管c p u ,所有的c p u 通常都是从某个由c p u 制造商预先 安排好的地址上取指令,基于a r m 7 t d m ic o r e 的c p u 在复位时从地址 o x 0 0 0 0 0 0 0 0 取他的第一条指令”,。而基于c p u 构建的嵌入式系统都有某种类 型的固态存储设备( 例如:r o m 、e e p r o g 、或f l a s h 等) 被映射到这个预先安 摔的地址上,因此在系统加电后,c p u 将首先执行b o o tl o a d e r 程序。 一个同时装有b o o tl o a d e r 、内核启动参数、内核映像和根文件系统映 像的固态存储设备的典型空间分配结构图n ”如下图3 - 1 所示: f i g 3 一la s s i g n i n gs t r u c t u r eo ft h em e m o r y 3 。1b o o tl o a d e r 的简介 在程序设计中,考虑到串口比较容易控制,因此在启动程序中使用串口 作为主机和目标系统通信的桥梁”m “,。b o o tl o a d e r 根据实现的功能的不同, 其复杂程度各不相同,通常包含以下几个基本功能: ( 1 ) 设置程序入口指针 ( 2 )设置中断向量表 ( 3 ) 初始化存储器系统 ( 4 )初始化c p u 各种模式的堆栈和寄存器 ( 5 ) 初始化目标系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论