嵌入式Linux研究及其在ARM上的移植张积红.docx
- 文档编号:4538616
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:32
- 大小:22.69KB
嵌入式Linux研究及其在ARM上的移植张积红.docx
《嵌入式Linux研究及其在ARM上的移植张积红.docx》由会员分享,可在线阅读,更多相关《嵌入式Linux研究及其在ARM上的移植张积红.docx(32页珍藏版)》请在冰豆网上搜索。
嵌入式Linux研究及其在ARM上的移植张积红
嵌入式Linux研究及其在上的移植
张积红吴强
同济大学软件学院!
上海
电脑知识与技术
!
""#$%
这里应该包含体系结构的
&’()*+
和
-
初始化
!
过
去这个在文件
./012./343.015666433$0
中
"#
以
78!
9:
;<=>?
8@?
开始的一系列宏用来建立机器的配置
#
你所提供的参数会被填入数据结构
3.01’AB=CB+0!
用来
描述机器
$
称为机器描述符
"
中
#&’()*!
"
用来在引导阶
段
!
DEEFF’3B"
调整和分配机器的各种入口
$
在引导阶段
检测各个选项是有用的
#DEEFGE.CB/
检查内存的大小
#
在
这里就不用作该工作了
#
’A0G)CB2.+35./32./01566621./CH./BI1
在这个文件中
$
根据你的机器的特殊情况定义内
存地址
$,-
地址等等以及映射关系
#=>?
8@?
地址是物
理地址
$=J8><
地址是每个内存区域和
-
区域的虚拟
地址
#
限于篇幅
$
这里只介绍
./014./343.0156664./01K0
中的相关代码
L
以我所使用的
为例说明 Q# 下面这个结构中的宏都定义在 ’A0G)CB2.+3R./34 ./01R66641./CH./BK1 文件中 # 这里是机器的初始化 $ 表 明了系统使用的外设的地址及所在的域以及 ST8>: 的情况 # >F.F’0+F/)0F3.*=CB+0BCDNOP! =’E=CB+0UV==’A’FC.F.WX 2YZ’/F).G[*1\+’0.G[GBA]F1[CE3.’A[/[H[0[DY4 4Y3B3E/\53.**BCB(F/.^B\DE./C/EH.AC9>%_""8 X<‘NOP! =a,@? =<6? bJM[<‘NOP! =‘: c>=<6? bJM[ 7JP[M-78,;=,-[P[P["["d[ X<‘NOP! =a,@? =9>%_""8[<‘NOP! =‘: c>=9>%_""8[ 7JP[M-78,;=,-[P[P["["d[ X<‘NOP! =a,@? =9>e[<‘NOP! =‘: c>=9>e[7JP[M-! 78,;=,-[P[P["["d[ X<‘NOP! =a,@? =ST8>: [<‘NOP! =‘: c>=ST8>: [7JPY Pf[M-78,;=b<@; T8>? =M<>9 dg ZE’C==’A’FBCDNOP! =3.*=’ELZE’CQ X 0G*+NPP(=3.*=’ELQg 22 该函数在 ./012./323.01R0G*+NPPP2’/hI0 文件中 ’EF.DGB=’A’FLBCDNOP! =’E=CB+0Qg 22 该函数在 G’A)(2./012./3233233R./3ZI0 文件中 [ 建立机器体系结构的存储空间 的映射 # d +F.F’0ZE’C==’A’F &’()*=BCDNOP! L+F/)0F3.01’AB=CB+0YCB+0[+F/)0F *./.3=+F/)0FY*./.3+[ 01./YY03CG’AB[+F/)0F3B3’A&EY3’Q X 3’RiA/=D.A^+WPg 3’RiBACW"(0"SSSSSSg22>M@87 的结束地址 3’RiD.A^U"VI+F./FW"(0"""""""g22>M@87 的起始地址 3’RiD.A^U"VI+’jBW"("P""""""g22>M@87 为 Pf7J 3’RiD.A^U"VIAECBW"g d 22 下面的宏定义于 ’A0G)CB2.+3R./323.012./01I1 789: ;<=>? 8@? L [k9’//)+TE]’0 L<‘NOP! BZ.G).F’EADE./CQkQ78,;? 8,;<@Lk9ECBlBA[ A0KkQ J--? =7<7L"(0"""""""["(%"""""""["(&&""""""Q 44>M@87 开始的物理地址 [,4- 的物理地址 [ 调试区域的 虚拟地址 J--? =‘8@87>L"(0""! "P""Q 44 结构 *./.3=+F/)0F 或者 F.]G’+F 的物理地址 $ 给内核提 供不同的关于内核执行环境的参数 S,6m‘L&’()*=BCDNOP! Q 44 在内存子系统被初始化之前使用 7.01’AB+*B0’&’0&’(! )*+ 78‘,-LBCDNOP! =3.*=’EQ 44 机器特殊函数来映射 - 区域 ! 包含调试区域 " ;,? @nL0G*+NPP(=’A’F=’/hQ 22 机器特殊函数来初始化中断 789: ;<=<;M ! 结论 嵌入式 T’A)( 的移植是一项艰巨的任务 $ 需要读者 对 T’A)( 本身的文件结构 $ 文件之间的调用非常清楚 $ 同时 $ 还要求读者对于自己所用的微处理器的硬件足 够的熟悉 # 本文给出的是一个框架性的介绍 $ 按照本文 给出的步骤 $ 可以将 8@7T’A)( 移植到 芯片 上 # 针对不同的处理器 $ 不同的应用 $ 读者还需要编写 相应的硬件驱动程序 # 但将 8@7T’A)( 移植到基于 研究开发 47脑知识与技术 电脑知识与技术 ! "" 是 ! #$ 的 " 和 "%% 编译器 ! 可以配置编译为 多种体系结构的交叉编译器 ! 常用的有 &""’()*+),)-./) &0 以及 &""1,)( 系列 ! 一般不要使用 &""1()*2 系列 ! 这 个系列的编译器有很多 34&" 5(67894-8: ; 7894-8: ; 中包括 ! <$ 的链接器 : =! 汇编代码编译器 .;> 用来将文件打包重组的 ./ 以及显示反汇编码的 ? 3@! =4AB 等工具 ! 常用的有 3894-8: ;’()CC)()-./)&0 5,DE: 83" E"" 使用的 F 函数库和针对 G894H 的线程库 " 常用 的有 &: 83"’()(),)-./)&0>&: 83"’: 894H-I/J.=;’()(),)-./)&0 把上述文件包进行编译后就可以使用了 " 当然也可以到相关的网站上下载别人打包好的工 具链 " ! 嵌入式 "#$%& 移植需要修改的文件 5CDG894HKJ/9J: 的选择 G894HKJ/9J: 在不断的发展之中 ! 目前最新版本是 G894H’()2 系列 " 越新的版本支持的微处理器的种类 ! 支 持的硬件的类型越来越多 " 在嵌入式中没有必要使用 最新的版本 ! 目前国内使用最多的是 G894H’()L 系列 ! 这个系列中使用较多的是 G894H’()L)CM 这个稳定成熟 的版本 " 本文就以这个版本为例 ! 详细介绍移植过程中 需要修改的代码 " 5(D 需要修改的文件 5LD# 图 ( 所示 $ 其实不需要编写大量的新代码 ! 只需要从相近的 体系结构选取所需要的代码就可以了 % 首先登记一个 A."I89J’NO& 如 A."I89JP8;PJ=3Q,C(FR PTUFVPWO7Q,C( XTFVPYZ[WPWO7Q,C(A."I89JPNOPC,C 这些信息需要自己加入 : 894H\./"I\./A\-? ? : ;\A."I1 -]BJ; 文件 %\\ 脚本文件 : 894H\./"I\./A\-? ? : ;\&J91A."I1 -]BJ; 需要 : 894H\./"I\./A\-? ? : ;\A."I1-]BJ; 来产生 : 894H\ 89": 4=J\.;A1./A\A."I1-]BJ;)I 文件 # 编译的时候产生 $! 这个文件设置了一些定义和宏 % 源代码使用这些宏和 定义来选择合适的代码 % 配置文件 : 894H\./"I\./A\=J^1"? 9^8&; 包含以 _A."I89J19.AJ‘ 命名的默认的配置文件 % 应该编辑 : 894H\./"I\./A\"? 9^8&) 89 文件以便 A.aJ"? 9^8& 会支持你的机器 % 这个文件说 明了针对你的机器的新的 FR : ; 以及他们 与其他 FR : ; 之间的依赖关系 % 当你 A.aJ _A."I89J19.AJ‘P"? 9^8& 建立内核时 ! 参数的开始部分 由 : 894H\./"I\./A\=J^1"? 9^8&;\ 拷贝到 \: 894H\)"? 9^8& : 894H\./"I\./A\aJ/9J: \IJ.=1./Ab)c! 内核的入口代 码 ! 这里检查 G894H 内核代码中的相关信息与目标板处 理器中的相关值是否匹配 %/C 指明机器类型 % d8^=J^89J=eFR A? b/C>dXTFfPYZ[WPWO7Q,C( dJ9=8^ 其他有关修改的文件的具体信息请参考 L 如果上述文件全部正确 ! 就会为你的机器产生可 引导的压缩的内核 ! 并且通过调试函数输出调试信息 % 但是 ! 还需要添加支持外围设备的程序 % 相关的文件的 修改在 : 894H\=/8bJ;(’( 各种驱动所在的目录 ! : 894H\ ^;((( 文件系统目录 ! : 894H\9J-((( 网络协议目录 % ’ 实例分析 89": 4=J\.;A1./A\./"I1ggg\I./=h./J)I./"I\./A\ A."I1ggg\./"I)") 老的版本中直接以机器名命名 ! 如 J=3Q,C()"$ 是两个非常关键的文件 % ./"I\./A\A."I1ggg\./"I)" 图 ! 图 " 研究开发 46! 引言 ! """ 年 ! 全球有 &"%# 亿个微处理器生产出来应用 于桌面系统和服务器领域 ! 与此同时 ! 有 ’( 亿个微控 制器被应用于嵌入式设备 " 嵌入式领域是一个更广泛 的领域 " 嵌入式软件领域也是一个数十亿的全球性的 产业 ! 在这其中的嵌入式操作系统以及相关的开发工 具在 ! "") 年达到了 )& 亿美元的产值 " 传统的嵌入式 操作系统有美国 *+,-.+/01 公司的 23*415678+91464: ; 的 *+,-4<6=> 等等 " 在过去的几年中 ! 基于开源组织 #? @0,A4B190A4: ; 的 D+,B3 系统的嵌入式操作系 统得到了长足的发展 % 据估计到 ! ""( 年底 ! 全球将有 近一半的嵌入式系统中使用基于 D+,B3 的操作系统 " D+,B3 操作系统虽然不是微内核结构 7 但是其模块化的 的结构使得用户可以对其方便的进行配置 ! 去除用户 系统不需要的模块 ! 减小系统的开销 ! 可以做到只有几 百 E 大小 ! 同时 ! D+,B3 在进程管理 ! 内存管理 ! 网络支 持等方面功能强大 ! 可以满足嵌入式系统中绝大多数 应用的复杂性要求 "D+,B3 操作系统免费开源 ! 可靠性 高 ! 支持绝大多数现有的 &! 位到 ’( 位的微处理器 ! 例 如 F.87G4<01G=78HGA7AI 等等 " 当前关于嵌入式 D+,B3 的应用主要分为以下两类 & =4JJ019+CKD+,B3 和 ? @0,A4B190D+,B3%=4JJ019+CK D+,B3 是一些公司在遵守 LGD 的基础上 ! 提供的嵌入式 D+,B3 解决方案 ! 包括可以移植好的针对特定硬件平台 的 D+,B3E01,0K 和交叉开发工具 ! 有的还包括 D+,B3 的 实时解决方案 % 著名的有 84,;C2+6;CD+,B3 和 MKB0=C; D+,B3 以及 .ND+,B3 等等 %? @0,A4B190D+,B3 包括 >JO0--0-P0O+C,@14Q09;R>JP0O+C,SG00*00D+,B3? @0,! TCB1B6F.8D+,B3 等等 %F.8D+,B3 是由 .B60KKE+,U 领 导开发的 ! 是目前最成功的开源性的嵌入式 D+,B3! 支 持上百种基于 F.8 的微处理器 % 本文将介绍如何把 F.8D+,B3 移植到新的 F.8 系统平台上的通用的方法 ! 阐述有关移植过程和 F.8 D+,B3 内核社区的一些惯例 ! F.8 体系结构的文件是如 何在源文件中组织的 ! 如何修改 D+,B3 内核以适应特定 的硬件平台 ! 以实现内核引导并从串口输出信息 % " 嵌入式 #$%&’ 移植开发环境的建立 嵌入式系统开发环境一般分成主机端 #V46;$ 和目 标板 #;C1U0;$% 主机端是开发平台 ! 用于运行开发过程中 的各种工具 ’ 目标板是运行和测试平台 ! 是嵌入式系统 的最终驻留环境 % 在主机端和目标板之间需要通过某 种方式进行通信 ! 如使用 .A! &! 串口 ! 或者 >;V0,0;% 这 种通信的目的在于发送控制指令和传输数据 ! 同时获 得目标板的状态信息 % 软件开发环境是由 LWX= 库 #UK+O9$7LWXO+,B;+K6 以及 LWX 编译器 U99 等一系列交叉开发工具组成 %# 如 图 ) 所示 $ R)SL99 摘要 ! 本文以 ! "#$%&’ 为例 ! 讲述了将 ()*+,-./ 移植到基于 ()* 的微处理器的开发板的基本过程 ! 首先介 绍了嵌入式 +,-./ 的发展情况 ! 并简单说明了如何搭建移植环境 ! 然后重点讨论了 ()*+,-./ 内核的移植过程中需 要修改的文件 " 关键词 ! 嵌入式 +,-./0 移植 0()*+,-./ 中图分类号 ! 12%&3# 文献标识码 ! ( ()*+,-.+/4-56,7898: ;<56: 5: =6-,>.: ? @8? ;5,-A()*+,-./5? 56: B? C8;? =: 77? ;D97: E? -()*,7,-5;? E.=: EF #: A,--,-AG,5656: E: 7=;,85,? -? @56: E: H: I? 8: ;? @! JD: EE: E+,-./<9-E56: D.,IE,-A56: ()*E: H: I? 8J: -55? ? I7@? ; +,-./<,5@? =.7: 7? -6? G5? =? -75;.=556: K: ;-: I@? ;78: =,@,=8;? =: 77? ;G,56()*+,-./@;? J? 8: -7? .;=: 8;? L: =57M 01234,5/! JD: EE: E+,-./08? ;5,-A0()*+,-./ 电脑知识与技术 电脑知识与技术 ! "# 核的嵌入式系统芯片上的过程是可以借鉴的 ! 参考文献 ! $%&’()*+*,(-)./0(11(1234+(/"5672+(8(94-9 : : : ;4(<9<+5-9<=;6-/;<* >? %@/0(11(1A59*B2*,8(3C: : : ;0=*(/*D;6-/ >E%F*5=159D+’(G"H1(8(=-I/(9++--=4)-,A59*B >J%K-,+59D+’(A59*BL(,9(=+- ! "HK=<+)-,/ N--7(3<91&<7O2’59D: : : ;<=(I’$;6-;*7 >P%Q59*BR(856(R,58(S 第二版 TG=(44<91,-"*0595 <91U-9<+’<96-,0(+ 中国电力出版社 >V%G"HA59*B 在 @KWE$? 上的移植李程远等计算 机工程与设计 X*=;? YYEIWE 收稿日期 "? YYP 年 ? 月 ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 在一些脱机运行的 Z2K 系统中 # 用户代码需要在 加电后自动装载运行 ! Z2K 系统的引导装载 $F--+=-<1% 是指在系统加电时 &Z2K 将一段存储在外部的非易失 性存储器的代码移植到内部的高速存储器单元中去执 行 ! 这样既利用了外部的存储单元扩展 Z2K 本身有限 的 "[H 资源 & 又充分发挥了 Z2K 内部资源的效能 ! 尽 管用户代码在一段时间相对是固定的 & 但是如果直接 将其掩膜到内部 "[H 中去的话 & 一方面受容量以及价 格的限制 & 另一方面则在系统代码级上显得不是很灵 活方便 ! \AG2] 存储器是在 .K"[H 和 ..K"[H 的基 础上发展起来的一种高密度 ’ 非易失性电可擦写存储 器 & 在掉电情况下仍能保证数据不丢失 & 并能够在不离 开电路板或据设备的情况下实施擦除和再编程操作 ( 具有结构简单 ’ 维护便利 ’ 存取速度快 ’ 对环境适应能 力强 ’ 抗振性能好等优点 ^ 而且单位存储比特的价格比 传统的 .K"[H 要低 & 十分适合于低功耗 ’ 小尺寸和高 性能的便携式系统 ) 除了可以采用专用的硬件编程器 把代码灌入 \AG2] 中之外 & 也可以利用现成的 R2K 通 过软件编程来实现同样的功能 ! ! "#$ 对 %&’#( 的操作 我们采用的 \=<4’ 存储器型号为 HFH? _A‘aYYbG& 其主要特点有 "E‘ 单电源供电 & 可使内部产生高电压 进行编程和擦除操作 * 支持 X.Z.c 单电源 \=<4’ 存储器 标准 * 只需向其命令寄存器写入标准的微处理器指令 & 具体编程 + 擦除操作由内部嵌入的算法实现 & 并且可以 通过查询特定的引脚或数据线监控操作是否完成 * 可以 对任一扇区进行读 ’ 写或擦除操作 & 而不影响其它部分 的数据 ! 本设计中 P$? L! $V 位 HbH? _A‘aYYbG\=<4’ 映射为 Z2K 的片外程序存储空间数据 & 总线 $V 位 & 用 于 $V 位方式的并行引导装载和数据保存 ! 其中既保存 了用户主程序 ’ 模拟 b--+=-<1(, 等程序 & 还保存了数据 " 如中英文字库 ’Z2[ 波形数据 ’ 设置等 ! 表 ! 编程命令 摘要 ) 本文介绍了一种利用 "#$%& 存储器实现 ’() 系统对主程序的上电加载的方法 ! 其中 " 重点介绍 *+*,-./01123"#$%& 的使用和编程方法 ! 关键词 ! "#$%()#2556#5$789 中图分类号 ! : );<<# 文献标识码 ! 3 *+,-,.,/-0+/12/33450/657178"#$977651: 8-7;%4/.+ <9.6-/06): &=%68>6=? 6957@A87$B=? 75CD86&576&$6D$B8%@%85C4()6&$6$@65D$6=A$##E#5$7%D$=? F95G9$DC95D "#$%&656&8H3*IJ6C5A@%8%5? 6&8@%$G8$? 76&8F95G9$DD=? GD86&57%5C*2*K-./01123"#$%&I =,>? 7-2)"#$%&4()2556#5$789 ! "# 的 $%&"’ 引导方法研究与实现 电子科技大学自动化工程学院 L 四川成都 M<11NO 研究开发 48 王化叶芃王厚军
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 研究 及其 ARM 移植 张积红
![提示](https://static.bdocx.com/images/bang_tan.gif)