(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf_第1页
(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf_第2页
(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf_第3页
(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf_第4页
(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf_第5页
已阅读5页,还剩47页未读 继续免费阅读

(计算机系统结构专业论文)基于uclinux的gsmcdma数据通信软件平台设计及应用.pdf.pdf 免费下载

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

文档简介

摘要 摘要 随着无线网络技术的发展及嵌入式系统的广泛应用,g s m c d m a 的应用已 经不局限于语音通话。随着短消息平台的开放,c d m a g s mj 下越来越多地广泛 应用于监控、数据采集、g p s 定位、消防报警、物流等等诸多领域。 在这些应用的软件开发中,对于c d m a g s m 无线终端( m o d e m ) 的控制都是 通过相应的g s ma t 命令集进行的。传统的软件开发方式依赖于具体的 c d m a g s m 无线终端的型号,因为不同厂家提供的无线终端使用的a t 命令可 能不一致,一般都有自己对标准a t 命令集的扩充。这一方面造成基于 c d m a g s m 的应用软件可移植性差,另一方面也加大了软件开发的难度。 由于u c l i n u x 在嵌入式系统中的应用愈加广泛,本文设计了基于u c l i n u x 的 无线通信软件开发平台。基于这个平台,应用软件的开发独立于具体的a t 命令 集,从而大大增强了软件的可移植性,降低了软件开发的难度。这个数据通信软 件开发平台可以同时支持多个型号的c d m a g s m 无线终端,具有很强的可扩充 性及灵活性。 作为无线通信软件平台的一个应用,本文实现了一个手机电话簿同步的软 件。由于设计了通用电话簿的格式,使得电话簿可以在不同手机之间进行转换, 具有很强的灵活性及实用性。 【关键字】g s m c d 舭u c l i n u x 最小化软件平台通用电话簿 摘要 a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to f w i r e l e s sn e t w o r ka n dw i d e l ya p p l i e do f e m b e d d e d s y s t e m ,t h ea p p l i c a t i o no fg s m c d m at e c h n o l o g yi sn e tc o n f i n e di nt h ef i e l do f v o i c ec o m m u n i c a t i o n w i t ht h es m sp l a t f o r m ,g s m c d m ai sb e i n gw i d e l yu s e di n t h ef i e l d ss u c ha sm o n i t o r i n ga n dc o n t r o l l i n g ,d a t ag a t h e r i n g ,g p sp o s h i o n i n g ,f i r e f i g h t i n ga l a r m i n g ,a n dl o g i s t i c i nt h e s ea p p l i c a t i o n s t l l es o f t w a r ec o m m u n i e a t e sw i mc d m a g s mm o d e m t h r o u g ha tc o m m a n d s t h u s ,f o rt h es a k eo fd i f i e r e n ta tc o m m a n ds e t so fd i f r c r e n t t y p e so fw i r e l e s sm o d e mf r o mv a r i o u sv e n d o r s ,t h es o f t w a r er e l i e so nt h es p e c i f i c m o d e lt y p eo fc d m a g s mm o d e m d i f f e r e n tw i r e l e s sm o d e mv e n d o r sm a ye x t e n d s t h ed e f i n i t i o no fs t a n d a r da tc o n u n a n ds e t ,w h i c hr e s u l t si nl e s sp o r t a b i l ho f s o f t w a r ea n dm a k e si th a r d e rt od e v e l o ps u c hs o f t w a r e a sw ek n o wt h a tu c l i n u x ,a sad e r i v a t i o no fl i n u xo p e r a t i n gs y s t e m ,i s b e c o m i n gm o r ew i d e l yu s e di ne m b e d d e ds y s t e m s o ,t h ea u t h o rd e s i g n saw i r e l e s s s o f t w a r e d e v e l o p m e n tp l a t f o r m b a s e do nu c l i n u x o p e r a t i n gs y s t e m w i t h t h i s p l a t f o r m ,t h es o f t w a r ed e v e l o p m e n tw i l ln o td e p e n do nt h es p e c i f i ca tc o m m a n ds e t , w h i c he n h a n c e st h es o f t w a r ep o r t a b i l i t y t h i ss o f t w a r ep l a t f o r mh a st h ee n o u g h e x t e n d i b i l i t ya n df e a s i b i l i t yt h a ti tc a ns u p p o r tm a n yt y p e so f c d m a g s m m o d e m s a sa ns p e c i f i ca p p l i c a t i o no ft h i ss o f t w a r ep l a t f o r m ,w ec a r r yo u tat o o lw h i c h c a nb a c k u pa n du p d a t et h ep h o n e b o o ko f c e l lp h o n e s w h a tm a k e si ta l lm o r ep r a c t i c a l u t i l i t yi st h ed e s i g n i n go fu n i v e r s a lp h o n e b o o kf o r m a t w i t ht h i sp h o n e b o o kf o r m a t , t h ep h o n e b o o k sf r o md i f f e r e n tc e l lp h o n ec a nb ee x c h a n g e d 【k e y w o r d s 】g s m c d m a ;u c l i n u x :w i r e l e s s s o f t w a r e d e v e l o p m e n t p l a t f o r m :u n i v e r s a lp h o n e b o o k 前言 第一章前言 随着无线网络技术的发展,g s m c d m a 的应用也越来越广泛,除了语音通 信、多媒体信息传输之外,在远距离旅控、数据采集、g p s 定位、无线报警、缴 费通知等等诸多领域的应用也日渐增多。 所有这些应用都是基于对g s m c d m a 模块( m o d e m ) 的操作的基础之上的, 都有一个共同的特点,就是应用程序通过a t 命令与g s m c d m a 模块进行数据 的交互,来完成相应的任务。但不同厂家提供的g s m c d m a 模块使用的a t 命 令集不一致,这造成了上层应用程序依赖于具体的a t 命令集,可移植性差,加 大了开发的难度。 因此,有必要建立一个g s m c d m a 通信软件开发平台,这个开发平台通过 对a t 命令集进行封装,提供一些函数接口。而上层应用软件使用开发平台提供 的函数接口与g s m c d m a 进行通信,从而独立于具体的a t 命令集,增强了软 件的可移植性,同时也降低了软件开发的难度。 在嵌入式领域,基于成本考虑,没有m m u 的处理器被广泛应用,u c l i n u x 作为l i n u x 的一个衍生版本,主要是针对没有m m u 的处理器而开发的,并且专 为嵌入式系统做了许多小型化,非常适用于嵌入式领域。 u c l i n u x 支持多任务,它一方面继承了l i n u x 的大部分优点,例如稳定性、 各种网络协议栈的支持以及不同类型的文件系统支持等等,另一方面,内核精简 ( 一般小于5 1 2 k ) ,并支持常用的嵌入式微控制器系列。实际上,u c l i n u x 已经 成功应用于路由器、网络摄像机、机顶盒、p d a 等诸多领域。毋庸置疑,使用 嵌入式u c l i n u x 进行产品开发有一个很大的优势,那就是开发资源丰富,而且 成本低廉。 由于u c l i u n x 在嵌入式系统中应用越来越广泛,在u c l i n u x 上实现 g s m c d m a 通信软件开发平台就有重要的意义。 开发平台的架设 2 1 硬件平台 第二章开发平台的架设 硬件平台我们使用的是p h i l i p s 的p h y c o r e h d 2 0 0 开发板。开发板由两部 分组成,底板上是外设的接口电路,跳线开关、l e d ,2 个c a n 总线接口和2 个u a r t 接口都在底板上。核心板上有p h i l i p s l p c 2 2 9 4 c p u 、1 6 m b 的f l a s h ,2 m b 的s r a m ,以及j t a g 调试接口。底板与核心板之间通过两个连接头相连。核心 板方块图如图2 - 1 所示: p h ll ips 皿r a 姗m | | 岩黧bll 戡pp l p c 2 2 9 2 9 4 d a t a jili 1 r “t ”“ h o 1 垂4 2 3 y r x d o k x d 0 i 篓竺竺| 陬i x i j u ! 飘i x o l i ,j e r x d l 仃、0 1 o r , t a g b u 3 一 e j t a g - c a n 2 1 _ ;! ;_ 盖并“1 c a n 2 h ! c a n 2 l c c a ni 。t 。r a + n s c 。e 。i 。v 。e 。r 。j o p t o i n t e 订a o e c 酬 r 苎x 试“”。1c “ 挑jc a h l l n 1 2 c 【j 德懋飘刚o p t n e d 啦a i l ,op o r t s c r e s e t s p i s p | b u = s l 1 o | r e s e t t - f h cl 美篙翟 e e p r o m r l 图2 - 1p h y c o r e - l p c 2 2 9 2 ,2 2 9 4 方块图 l p c 2 2 9 4 是一款基于1 6 3 2 位a r m t t d m i s ,并支持实时仿真和跟踪的 c p u ,并带有2 5 6k 字节( k b ) 嵌入的高速f l a s h 存储器。1 2 8 位宽度的存储器接 口和独特的加速结构使3 2 位代码能够在最大时钟速率下运行。对代码规模有严 格控制的应用可使用1 6 位t h u m b 模式将代码规模降低超过3 0 ,而性能的损 失却很小。 l p c 2 2 9 4 采用1 4 4 脚封装、极低的功耗、多个3 2 位定时器、8 路1 0 位a d c 、 2 4 路高级c a n 通道、p w m 输出以及多达9 个的外部中断,这款微控制器特别 适合自动化、工业控制、医疗系统、访问控制和故障容限维护总线等应用领域。 其内部可用g p i o s 范围为7 6 脚( 外部存储区) 到1 1 2 脚( 单片) 。由于内置了宽范围 2 开发平台的架设 的串行通信接口,它们也非常适合于通信网关、协议转换器、嵌入式软件调制解 调器以及其它各种类型的应用。 开发板的两个u a r t 中,u a r t 0 是作为u c l i n u x 的控制台使用的,提供一 个人机交互的界面。u a r t l 用作开发板与外部无线通信模块之间的连接。由于 开发板一lu a r t 是r s 2 3 2 接口,r s 2 3 2 信号是用+ 3 v + 1 2 v 之间的电压表示逻辑 1 ,是用一3 v 1 2 v 表示逻辑0 ,这与无线通信模块使用的的t t l 电平不一致,必 须进行二者之问的电平转换,因此又在开发板之外接了个电平转换的电路,在此 使用的集成电平转换芯片v l a x 2 3 2 为r s - - 2 3 2 c t t l 电平转换芯片。如图2 2 所示: 印f v 土礓廿雌毪 g i - 啦v 一 韭蹈墅群 心一 n 酐1 1 0 r l i 嬲1 狮1 ” 1 耐i 甜r t = 阳0 u l l 叩 矗l 州 踟n 删 图2 - 2i v l a x 2 3 2 电平转换图 我们选用m o t o l o r av 6 0 c 手机作为无线通信模块,经过分析,手机外部数据 接口引脚的定义如下: 引脚名称说明 1g n d 电源接地信号 2b a t tf d b k 电池反馈 3e x t b + 接外部电源 4t x dt x d 5r x dr x d 6i sr t s 7s w b +s w i t c h e db a t t e r y 8c t sc t s 9d c dd c d 1 0r id u m bs e l e c t2 1 1d t rd u m bs e l e c t1 1 2d s rd u m bs e l e c t0 1 30 p t l 可选引脚1 1 40 p t 2 可选引脚2 3 秀发孚螽豹絮竣 1 5a u d i oo u t 音频输出 1 6a u d i oi n 音频输入 1 7a u d i og n d音频接她绩号 表2 - 1m o t o v 6 0 c 数据接嚣 | 辩定义 2 2 软佟开发调试琢境 2 2 1 调试环境介绍 良好的开发调试舔壤缝够逐速壤定德错误所在,大大逮缩短开发时闻,蕊俊 产品的上市遴度。在我们的开发环境中使用了g d b 的远程调试功能,在开发端 使用a l t o - e l f - i n s i g h t ( g d b 的图形界面版本) ,通过t c p 连接与运行程服务器端的 m u l t i - i c eg d bs e r v e r 送嚣:i 羲售,遂囊逶遐m u l t i - i c es e r v e r 实瑰下液程旁、摹步 执行、读写内存、查看寄稃器内容、显示及修改变量的值等调试功能。整个开发 环境如图2 3 所示: 运行 乎台 开发平台的架设 协议协同工作,m u l t i i c e g d b s e r v e r 将开发端的a r m - e l f - g d b 发送的调试请求转 交给m u l t i i c e s e r v e r ,由m u l t i i c e s e r v e r 通过m u t l i c e 将请求转换成j t a g 命令 序列发送到s o c ,并将得到的结果回复给m u l t i - i c e - g d b s e r v e r , m u l t i i c e g d b - s e r v e r 再通过标准远程串行协议发送给a r l n e l f - g d b ,从而与开发者 进行交互。 2 2 2 。调试软件的编译 在整个调试环境中,m u l t i i c e - g d b s e r v e r 是个关键的工具,它使得a m e l f - g d b 能够与m u l t i i c e 仿真器进行通信,这个软件的源代码可以从 f t p :s o u r c e r e d h a t c o m p u b g d b 下载。这个软件的编译,需要r d i ( r e m o t ed e b u g i n t e r f a c e ) 头文件及函数库,所需要的文件可以在a r m 网站上下载。将所需要 的文件下载及解压缩之后可以在通过下面的命令进行编译( 在w i n d o w s 的 c y g w i n 平台下) : $ t m p m i g d b g d b 一5 1 1 c o n f i g u r e - - v - t a r g e t a r m e l f - e n a b l e m u l t i i c e2 & 1l t e e m a k e o u t $ m a k e - - wa l l l i b i b e r t ya l l b f d2 1i t e em a k e o u t $ c dg d b m u l t i i c e $ m a k e - - w m u l t i i c e i n c l u d e s = - i c y g d r i v e c r d i h e a d e r s ” m u l t i i c e l i b s= - l c y g d r i v e c m u l t i i c e l t m p m i g d b g d b 一5 1 1 m u l t i i c e - l t o o l c o n f “2 ll t e em a k e o u t 其中 m u l t i i c e 是w i n d o w s 下m u l t i i c es e r v e r 安装的路径 2 2 3 调试软件的使用 1 先将m u l t i i c e 和开发板连接起来,并将开发板上电。 2 运行a r mm u l t i i c es e r v e r ,进行与开发板相关的配置。 3 运行m u l t i - i c e g d b - s e r v e r e x e 因为m u l t i - i c e g d b s e r v e r e x e 要使用m u l t i i c e d l l ,这个文件在m u l t i i c e 的安 装目录下,在环境变量中要保证包括这个路径,或者将m u l t i i c e g d b s e r v e r e x e 拷贝到m u l t i i c e 的安装目录下。 m u l t i i c e g d b s e r v e r - r e m o t e p o r t9 0 0 0 曲y t e s e xl - e o n f i g - d i a l o g r e m o t e - p o r t9 0 0 指定m u l t i - i c e g d b s e r v e r 在t c p9 0 0 0 端口进行监听,换句话说, - 5 - 嚣发平台酶架 瑟 g d bc l i e n t ( 在这里就是a r n c l e l f - i n s i g h t ) 使用这个端口与m u l t i * i c e g d b s e r v e r 进行 连接。邀令臻舀篷霹潋任意撂定,只要不程臻豹瘦矮i 孛突露霹。 一- b y t e s e xl 告诉g d bs e r v e r 使用的是l i t t l e e n d i a n ( 1 ) 还是b i g - e n d i a n ( b ) c o n f i g w d i a l o g 使g d bs e r v e r 弹出m u l t i i c e 配衡对话框。 还鸯一些萁毯鹣选颂请参考豫鹩h e l pm u f t i i c e - g d b s e r v e r - h e l p 4 运行a r l n - e l f - i n s i g h t 运行a r m - e l f - i n s i g h t 之癌,滋瑗圈形赛褥翡谲试接翻。毒戳遴遗菜擎 r u n - c o n n e c tt ot a r g e t 连接m u l t i i c e - g d b s e r v e r 在弹出的对话框中t a r g e t 选择 r e m o t e f l ? c p , h o s t n a m e 填运行m u l t i * i c e 一鲥b - s e r v e r 的机器的i p 。p o r t 填9 0 0 0 ,( 假 设m u l t i i c e - g d b s e r v e r 程9 0 0 0 蠛翻整暖。连接戴功之螽裁霹荻蠢开e l f 文耱下载 至g 通过綮单r u n - d o w n l o a d 下载到r a m 中。 一6 一 l i n u x 内核构建系统k b u i l d 第三章l i n u x 内核构建系统k b u i l d k b u i l d 即k e r n e lb u i l ds y s t e m ,泛指构建一个完整并能够运行的l i n u x 内核 所需要的一切资源,包括m a k e 、编译器、链接器、脚本、中间件、配置文件及 m a k e f i l e s 。 3 1 l i n u x 中的m a k e f i l e l i n u x 中的m a k e f i l e 可以分为以下几类 1 顶层的m a k e f i l e ,定义了所有与体系结构无关的变量和目标。它读 取c o n f i g 文件,并根据其信息最终生成v r r d i n t t x 和m o d u l e s 。m a k e 通过 向下递归调用子目录中的m a k e f i l e 来编译这两个目标。 2 c o n f i g ,可以认为是m a k e f i l e 的一个片断,它会被顶层的m a k e f i l e 包含。 m a k ec o n f i g m e n u c o n f i g x c o n f i g g c o n f i g 过程会在根目录下生成该配置 文件,其内容记录了具体的配置选择。 3 a r c h $ ( a r c h ) m a k e f i l e ,是与特定体系结构相关的m a k e f i l e 。它被项层 的m a k e f i l e 包含,扩展了顶层m a k e f i l e 中有关变量,为k b u i l d 提供体系 结构的信息。 4 s c r i p t s 目录下的各种m a k e f i l e 。m a k e f i l e b u i l d 文件定义了编译内核文件 所需要的一些通用规则;m a k e f i l e 1 i b 则提供了生成要编译文件列表的函 数;m a k e f i l e c l e a n 则定义了用来清除编译产生的各种文件所需要的规 则:m a k e f i l e h o s t 则用来产生编译内核所需要的中间件。 5 k b u i l dm a k e f i l e s :存在于每个子目录下,定义了要编译的文件列表及要 生成的目标。 3 2 k b u i l d 执行过程 1 首先通过m a k ec o n f i g m e n u c o n f i g x c o n f i g g c o n f i g 等方式配置内核,生 成c o n f i g 文件,及i n c l u d e l i n u x a u t o c o n f h 文件,内核具体配置信息都包 含在这两个文件中。c o n f i g 文件用于m a k e f i l e ,而a u t o c o n h 文件则被 内核源代码文件包含。 2 m a k e 从根目录m a k e f i l e 开始执行,从中获得与体系结构无关的变量和 依赖关系。 3 通过i n c l u d ea r c h $ ( a r c h ) m a k e f i l e 方式从i n c l u d e a r c h $ ( a r c h ) l i n u x 内核构建系统k b u i l d m a k e f i l e 中获得体系结构相关的变量等信息,这些信息扩展了根目录 m a k e f i l e 提供的变量。如扩展了根m a k e f i l e 中定义的i n i t - y , c o r e - y , 等,以 及编译选项,并定义了h e a d y 等。 4 k b u i l d 已经拥有构建内核需要的所有变量和目标。然后,m a k e 递归进 入变量i n i t - * ,c o r e 一 ,d r i v e r s 一,n e t ,l i b s ,+ 所列出的子目录,编译所有的 目标。 5 将这些目标链接生成l i n u x 内核文件v m l i n u x ,第一个链接的目标文件就 是a r c h $ ( a r c h ) m a k e f i l e 中h e a d y 变量指定的文件。 6 最后体系结构相关的部分再做进一步的后期处理,生成最终的b z l m a g e 。 3 3 l i n u x 对编译内核速度的优化 我们知道m a k e 程序对m a k e f i l e 的处理可以分为两个阶段,第一个阶段就是 读取m a k e f i l e 中所有的变量并分析所有的目标依赖关系,并最终建立一棵依赖 关系树。第二个阶段就是根据这个依赖关系树执行相应的命令。如果某个目标的 先决条件发生变化,则相应的命令就会执行。 几乎所有的l i n u x 内核源文件都回包含文件i n c l u d e c o n f i g h ,而 i n c l u d e c o n f i g h 会进一步包含文件i n c l u d e l i n u x a u t o c o n f h ,这样,如果使用传统 的方法产生依赖文件( 使用g c c 的- m 选项) ,只要i n c l u d e l i n u x a u t o c o n f h 文件发 生变化,整个l i n u x 内核都要重新编译。而每次配置内核,配置工具都会根据配 置结果生成i n c l u d e l i n u x a u t o c o n f h 文件。 为了避免这个问题,k b u i l d 没有使用g c c 来建立依赖关系,而是使用中间 件f i x d e p 来建立依赖关系。f i x d e p 在处理源文件的时候,忽略源文件中i n c l u d e 这样的行,而是识别源文件中具有c o n f i g 特征的行。例如, 如果有# i f d e fc o n f i gs m p 这样的行,就会在依赖文件中输出$ ( w i l d c a r d u s r s r c l i n u x i n c l u d e c o n f i g l s m p h ) ,表示该文件依赖于i n c l u d e c o n f i s m p h 文件, 如果i n c l u d e c o n f i g s t o p h 文件发生变化,则要重新编译这个源文件。 i n c l u d e c o n f i g 目录下的文件则由中间件s p l i t i n c l u d e 负责生成。它利用 i n c l u d e l i n u x a u t o c o n f h 文件中的c o n f i g j 示记,生成与f i x d e p 相对应的文件。 如,如果a u t o c o n f h 文件中有# u n d e fc o n f i g _ s m p 这一行,s p l i t i n c l u d e 就会生 成i n c l u d e c o n f i g s m p h 文件,文件内容为# u n d e f c o n f i g _ s m p 。 这样,每次对l i n u x 内核进行配置,运行一次s p l i t i n c l u d e ,它检查a u t o c o n f h 8 l i n u x 内核构建系统k b u i l d 文件和i n c l u d e c o n f i g 目录下对应的文件,看配置是否发生改变,若是则更新 c o n f i g ! 目录下的文件,从而,需要对源文件进行重新编译。 9 u c f i n u x 痰核移植 第网章u c l i n u x 内核移植 4 1 u c l i n u x 内核版本的选择 与l i n u x2 4 内核相比较,l i n u x 2 6 内核引入了很多非常有利于嵌入式应用的 功麓。这些薪秘能包菇实葬孪瞧能懿增强、燮方霞懿移糠往、对大客鬟逡存兹支簿、 对微控制器的支持以及对f o 系统性能的改进【1 】。根据这个项目特点,对实时性 臻求并不高,找们更多的关注其移植的方便性。与l i n u x 2 4 内核相比,l i n u x 2 6 滤核在可移撼蛙方嚣静改遴主要俸现在强下几个方露t 1 觚内核编译系统来褥,l i n u x 2 6 傻用的是薪敝零的k e r n e lb u i l ds y s t e m , k b u i l d2 5 ,与l i n t y 2 4 内核使用的k b u i l d 2 4 相比,速度撮黼了3 0 。此 外,k b u i l d2 5 的脚本语言结构嚣淹晰,更直观,使得开发潆非常容易改 写其熬嚣鬻本遴嚣l i n u x 内孩静定涮。 2 与之前版本相比,l i n u x 2 6 内核可以通过配鬣彻底地去除内核对显示系 统、鼠标、键盘的支持,从而大大缩小内核的体积。 基于叹上掰点及开发板的实际情况,我们选用l i n u x 2 6 内核作为开发平台。 从u c l i n u x 的官方网站w w w u c l i n u x o r g 下城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 g z ,从h t t p :a d a m k a i s t a c 。k r h s c h o e d o w n l o a d 下载 l i n u x 一2 ,6 。5 一h s e 2 p a t c h 。g z及工其链 a r m - e l f - t o o l s 一2 0 0 4 0 4 2 7 s h ,铁 h t t p :w w w k e m e l o r g p u b l i n u x k e m e l v 2 6 下载l i n u x - 2 6 5 t a r b z 2 ,然后根据【2 】中 的方法解压缩、安装。 4 2 u c l i n u x 内核爵录树结构 u c l i n u x 内核移植最烹溪的工作就是修改或添加内核中与平螽相关部分代 褥,这些我秘分布在善个不嗣懿蚕录之下,闲筵餮秣蠢努要来势耩一下u c l i n u x 源代码目录树的结构。 一l o - u c l i n u x 内棱移稳 i b 捌重墒“n q x 内健哪执行代辩瓣m 峨。冀俸 d 麟# 搬i 鲢酗b 寄芙i 赫麟瞧技孵室轻 孵h 楚# 蒯确轴l 搴一涌鹣鬻髯t 魂接巾垮鼹律c p u :和襄莸鳢搞 相美的 圮鹕赫冀4 敛在下腰曲予日泵书面橱菇雠敦童件然 ,捌 艘糍i h 口删汹目蒙之f a i p k 一聚d e c 歼靛褥射寸氯e 咒f a r m 一羹藩赫城j 荤蠢魏a r m 海挥姥壤嚣 如n m 鲫n 种一一年苒蔷耐酗u 革露的a r m 搀鹱她瑾嚣 i 3 8 6 - 一氇精瑚幕掰学期8 0 3 8 6 以蜃女锯毹释3 2 愉c 乳“包耩9 0 4 r 6 * 如娃u m 。 p 拍d u m i i + 缚糌巍包括a 地k 6 旃黼窖最刷 蝴枷摩辅瑚删睡舞狡辩始臼0 0 摹剐 秘- 黼p r g 藏锄嚣舜 翱蝌删l s c e p v 蕃冀曩i | 舜璃 s u n 工椎髂薄枫型申 驰帅一限咐生产韵一神必辫诗彝巍 岫6 扣一嗜岫d 的i a - 6 4 缭鞫斛拯c 哪 髓糖t 褒舞争喇辨警嚣震枣。冀遴一多分鹱舞鞫蠛、8 撼,轴f 崎l 藩、手嚣麓。静臻毯翥 辱甄统戮母、侮窬嚣燕。熏境壤籍麴避凡翻篷鼹、蜂璃疆琏澈最冀喀连接中蕺鞲予c 。p u 潮砾缱辖椅盼底整l 薯鹳。蛙捌碣荐蟛撼f i _ :雅毹妈伯点蒜避姑c 代斟。 艄v 吖设备鞋动程岸,包括各韩燎搜蔷和字符1 苡誊麴骓动程球 扭 璧豫囊虢,簿枣子斑最葑嚣斡时建夸特定的空荇煮夔* 避嚣一嗡菇鞲鹳瓣释垮喇埯于 耋攘变替蒸辘”墙 螽蝴诚尊赶寄了斯有的h 建摊;瓤捆豳子事疃一群,耗嫱哦l 融串墩避势舞辩c 鼍_ ”赫岢设 干子丑蒙黼邋艏的早丑幕精m 嘲攥蜡鞲统艘髓置葡“糌碍连接”弹基棒妁e 般j 翦专愿予嗣录,孙稿m 甚6 、4 啡翮蜘蜂蛳曲i h 萼游此盘辨,添有通用瓣肆鬃1 穗i l x 、 础等。 i n i t l 抽斑蠹较辫嗍疆羹嚣辩鞋瀚l 宝嚣t 毽耩, 螽韬“霉,摊i $ 妇莓支 砷eb 啦珥内秧黼进假阔遣精。鸟瓣t 蠹碱如 赫霉蜘莓+ 州摊# 等戈件 k e 删 避程管理和疆赘,魁擗;甜嘲南岛r k 粕吲雠。s i 掌岫t “峭“t i m ec 燃a u 黼b 一 如蛾秭辩睡的带f 碗咖篙# 簸文特 1 嘹遣襄势 _ l = 曼蛙警瓣黪羲霹受错 嚣蘸辩耱壤薅囊捧 n 獬拽嚣赣莲+ 辩壤援穗稃管疆,色旗i $ 蛹争霹,辅每磷船篙e 辨争p t 帮牲捌酶,c 婀帅枷i 畦e + 婚咖“h 懈妣航州i 相懈讲州螂口咚坤tm 蝴社e 罅空性 衅t包嚣r 各种羊间孵巾释r 播戴耱鹩骝砷稚序 辩f 避i i 纂馐壬嚷蛲冠疑鹩穗奄熏蚪 核心源码的顶层怒u c l i n u x l i n u x 目录,在此目录下可以肴别大量子目录: 1 a r c h a r c h 霆慕下毒多个子嚣录,它豹每一令孑嚣录嫠我表蠹羧支持酶一耱c p u 体系结构,每个子目录中又进一步分解为b o o t 、m m 、k e r n e l 等予目录,分别 包含与系统引导、内存管理、系统调用的进入和返回、终端处理以及其他内 核中依赖于c p u 和系统结构的底层代码。与不带m m u 的a r m 处理嚣相关 翡 弋褐敖在莓录a r c h a r m n o m m u 下,与p h i l i p sl p c 2 2 9 4 鞠关豹代码鬟l 放在 目录a r c h a r m n o m m u m a c h - 1 p c 2 2 9 4 u c l i n u x 内核移植 2 i n c l u d e 这个目录包括了用来重构核心的大多数i n c l u d e 文件,与平台无关的头文件 在i n c l u d e l i n u x 子目录下。对于每种支持的体系结构分别有一个子目录,与 不带m m u 的a r m 处理器相关的头文件在i n c l u d e a s m a r m n o i n l a u 子目录下, 与p h i l p sl p c 2 2 9 4 相关的子目录在i n c l u d e a s m a r m n o m m u m a c h 1 p c 2 2 9 4 目 录下。i n c l u d e 目录中的a s m 文件是对应某种处理器的符号连接,如 i n c l u d e a s m a r m n o m m u 。 3 i n i t 此目录包含核心的初始化代码( 不是系统的引导代码) 。 4 m m n o m m u l i n u x 中独立于c p u 体系结构特征的内存管理文件几乎都集中在这个目录。 如页式存储管理、内存的分配和释放等等,在n o m m u 目录下是针对没有i y l l t l u 硬件处理单元的的内存管理。与平台相关的内存管理代码位于a r c h * m m 目 录下,如a r c h a r m n o m m u m m f a u l t c 。 5 d r i v e r 系统中所有的设备驱动都位于此目录中。它又进一步划分成字符设备、块设 备和网络设备这三类设备驱动。 6 i p c 此目录包含了核心的进程间通讯代码。 7 f s 这个目录中的文件涵盖各种类型的文件系统和文件操作。它也被划分成对应 不同文件系统的子目录,如v f a t 和e x t 2 。 8 k e r n e l 此目录下文件实现了大多数l i n u x 系统的核心函数,如进程调度、进程管理、 信号机制等。是与具体的体系结构无关的核心代码。与体系结构相关代码都 放在a r c h * k e m e l 目录下。 9 n e t 这个目录中存放的是和l i n u x 网络相关的代码。其中每一种网络地址族都为 一个目录,如a p p l e t a l k 、i p v 4 等。在c o r e 目录下时各种网络地址族公用的 文件。 1 0 1 i b 此目录包含了核心的库代码。与处理器结构相关库代码被放在a r c h * l i b 目 录下。 - 1 2 u c l i n u x 内棱移德 4 3 ,u c l i n u x 2 6 在p h y c o r e - h d 2 0 0 开发板上的移植 4 3 1 系统空间使用示意图 在l p c 2 2 9 4 中,获o x 0 0 0 0 0 0 0 0 开始静2 5 6 k b 是片蠹f l a s h ,由予a r m 葬 系结构的异常向量表都是在0 地址开始,但在l i n u x 中为了调试方便,貔们把 l i n u x 中的异常向量糍放到了r a m 的起始地址,为此,在0 地址处我们放了一 些跳转搬令,把相应懿巽常转移到r a m 舞= 始娥瓣l i n u x 异鬻处理程序。 l i n u x 内核的代码段从0 x 8 1 0 0 - 8 0 0 0 开始,在0 x 8 1 0 0 0 0 0 0 到0 x 8 1 0 0 8 0 0 0 之间存放l i n u x 异常向量表、早期的异常处理函数、及页表等。 在r a m 空阔鹃末端,放静怒文件系统豹镜像。 0 x 8 1 2 0 0 0 0 。 瓠s l 瓣 诹8 1 0 0 0 0 。0 o x 8 0 0 0 o o o o o x 4 0 0 0 - o o o o o x o o o o 一0 0 0 0 4 。3 。2 。c p u 身份认涯 e :r m ls r a m e 艄e m 町f l a s h i i l i 柚s r a m i n 把r i 姐lf l a s h l i n u x 在启动的时候会通过相关指令读取c p u 身份信息( 对于x 8 6 ,使用 c p u i d 撩令,恧霹予a r m ,剐瓢c p l 5 凌戆毽器孛读取) ,存款至全鼹变量 p r o c e s s o r _ i d 中( 这个蹙量定义在体系结构相必的目录:a r c h $ ( a r c h ) k e r n e l s e t u p c 文件中) ,然詹验证内核是谮支持该c p u 。 l i n u x 中毒一个数据绩褥寒攘述c p u 鸯关信惠,这令数据结稳豹定义在 i n c l u d e a s m - a m m o m m u p r o c i n f o h 中: 3 u c l i n u x 内棱移糠 与p h i l i p sl p c 2 2 9 4 稳对应静数据结稳实铡定义在 a r c h a r m n o m m u m m p r o c a r m _ 7 s 文件中: 一曩羔_ | _ ;_ :。 曩i 、 奠: ” “? “ 其中v 3 _ c a c h e _ f n s 是针对a r m v 3 体系结构的c a c h e 操作所需要的函数,函数 实现在a r c h a r m m m c a c h e _ v 3 s 文 警中。由于p h i l i p sl p c 2 2 9 4 没有c a c h e ,所以 要逶遘条释编译戆方姨将存关 弋璐去豫。 。1 4 。 u c l i n u x 内菝移穗 a r m 7 的定义也在同一个文件中,实际上是一组函数指针_ p r o c e s s o r f u n c t i o n s 豹翼装,这些丞数楚:c p ua r e a 7d a t aa b o r t ,鲶纛数据异警;谨疆a

温馨提示

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

评论

0/150

提交评论