嵌入式linux系统开发手册(2)
2.2 目标系统
目标系统就是我们的开发板,我们用的是自己开发的MPC860T开发板的一个最小系统。 一般的最小系统要包括以下几个方面: CPU肯定是要有的了; SDRAM/DRAM 最好32M或更大(反正这东西便宜);
FLASH或者DOC:FLASH最好8M或更大,这样可以建立一个可读写的文件系统,DOC最大可以到100多MB,也是不错的选择。 以太网口,当然你不要也可以,从串口下载程序吧!
串口,这可是必须的! 我们的目标系统如下: CPU: MPC860T 80MHz SDRAM: 32MB FLASH: 8/16MB 网口: FEC 100Mb
串口: rs232 X 2
目标系统硬件没什么可以说的,很简单!这里提一下一个比较重要的问题,要做好整个系统的地址分配,这在后面会用到!
2.3 软件包获取
最后要获取相关的软件开发包,假设你什么也没有,那么去DENX的FTP看看,基本可以满足需要了: ftp.denx.de.
主要获取以下软件包:
某个版本的PPCBOOT/UBOOT源代码 ELDK(如果你有CDK,这就不用了) 某个版本的LINUX KERNEL
下载这些软件包之后在某个目录下解压,以我们的为例: 下载u-boot0.2.0.tar.bz2到目录/opt; 解压: #cd /opt #bzip2 –cd u-boot0.2.0 | tar xf – 解压完成之后会产生一个目录“u-boot-0.2.0”。 内核的解压和这差不多。
当然,在Internet上有很多可以获取这些代码的地方,这里不一一列举了,举几个网站的例子:
/ /
第三章 PPCBOOT/U-BOOT的移植
3.1 PPCBOOT/U-BOOT简介
ppcboot的前身是8XXROM和FADSROM,其最高版本为PPCBOOT2.0,2.0版本以后名称就改为了U-BOOT,是由德国DENX软件中心依照GPL发布的公共软件,本手册我们结合所用的u-boot-0.2.0(其版本划分为 u-boot-*.*.*,分别为 version.subversion.patchlevel)来详细叙述整个的porting过程。我们所用的版本为u-boot-0.2.0,支持BOOTP,TFTP,SERIAL代码下载,后续版本可以引导OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks,LynxOS, pSOS, QNX内核映象,目前支持NetBSD,Linux,Vxworks和QNX;支持的目标CPU架构Alpha, ARM, Intel x86, IA64, MIPS, MIPS, PowerPC, IBM S390, SuperH, Sparc, Sparc 64 Bit,目前支持PowerPC。详细的说明可以参见U-BOOT目录下的README文件。
3.2 U-BOOT源代码分析
经过漫长的准备工作,现在终于可以进行实质性的工作了!首先我们来分析一下U-BOOT的源代码分布,这样才可以做到“知己知彼,百战不殆”!首先列出它的源码树(图3),然后再解剖它。
3.2.1 与目标板相关的代码
目前U-BOOT支持大多数比较常见的目标板,象MOTOROLA的ADS和FADS板,一般我们设计的主板和这些主板都是大同小异,不会有太大的差别。源代码树中board/下的每个文件夹对应一个或几个主板,象/board/fads目录对应的就是FADS板和ADS板的源代码,一些主板上的资源例如SDRAM和FLASH的初始化代码就在这个文件夹中。
3.2.2 与CPU相关的代码 该版本的U-BOOT只支持PowerPC系列的主板,与CPU相关的代码未于源代码树下的CPU/下的各个目录当中,例如我们用的相关CPU的代码就位于/cpu/mpc8xx/文件夹中,其中start.S是U-BOOT的入口代码,用汇编语言写的,是整个代码的入口,serial.c是串口的初始化代码。相应的,目录/cpu/mpc8260/对应的就是8260CPU的相关代码。
3.2.3 头文件 头文件位于源码树下的include/下,其中各种主板的配置文件位于/include/configs/文件夹中,象FADS860T主板的配置文件为/include/configs/FADS860T.h;目录/include/asm-ppc是一些比较底层的头文件,编译时会根据不同的配置与/include/configs/asm建立一个符号链接。
3.2.4 公共代码 除了和主板,CPU特性相关的代码外,其他大部分都是公用的代码,位于/common/下面,象U-BOOT的命令解析代码/common/command.c,U-BOOT环境变量处理代码environment.c等都位于该目录下。还有一个公共的代码就是PowerPC系列的主板初始化代码也是公用的,位于/lib_ppc/board.c中,在完成CPU的初始化之后就会跳到这个文件中,而与主板相关代码的执行都是在这个文件中调用的。
图3 U-BOOT源代码树
3.3.5 网络传输代码
网络传输代码位于目录中的/net/下面,象arp.c ,bootp.c,eth.c,tftp.c等都在这里,BOOTP,TFTP,以太网初始化等功能的实现也是由这些代码完成的 3.3.6 Makefile文件
Makefile文件位于U-BOOT的根目录下,是整个编译的控制主文件,后面我们会讲到如何修改该文件以添加我们自己主板的编译控制。 3.3.7 关键的驱动程序文件
U-BOOT中几个比较关键的外设驱动代码包括串口的初始化,以太网口驱动,SDRAM初始化,FLASH初始化,以FADS板为例,分别位于:
串口: /cpu/mpc8xx/serial.c
SDRAM: /board/fads/fads.c FLASH: /board/fads/flash.c ETHERNET: /cpu/mpc8xx/scc.c
FAST ETHERNET: /cpu/mpc8xx/fec.c
在我们移植的过程中这些都是我们要修改和关注的代码。
3.3 移植步骤
好了,对U-BOOT的代码有了了解之后,下面我们就一步一步的在做一个可以在我们自己主板上跑的U-BOOT! 3.3.1 编译测试
在主机开发系统上进入U-BOOT的目录中,以我的系统为例(后面的命令皆以我的系统为例):#cd /opt/u-boot-0.2.0 , 在进行编译之前设置目标板配置,U-BOOT支持的主板种类在其目录中的README中可以查到,针对FADS860T主板: #make FADS860T_config 屏幕出现:
rm –f include/config.h include/config.mk Configuring for FADS860T board… 配置成功,然后运行命令: #make
进行编译,编译完毕产生目标代码u-boot.srec u-boot.bin u-boot,说明U-BOOT和交叉编译环境都可以正常使用,下面我们就可以放心的做我们自己的主板U-BOOT了,如果有错误出现,至少不用怀疑U-BOOT和交叉编译环境了(不是完完全全不用啊!!!)。 3.3.2 U-BOOT启动过程
从哪里入手呢?先看看它的启动过程待会就知道从哪里入手了!
CPU入口函数(FLASH中运行): /cpu/mpc8xx/start.S CPU初始化(FLASH中运行): /cpu/mpc8xx/cpu_init.c
主板初始化(FLASH中运行): /lib_ppc/board.c (调用串口初始化:/cpu/mpc8xx/serial.c, sdram初始化: /board/fads/fads.c)
主板初始化(RAM中运行): /lib_ppc/board.c (调用其它公共函数)
3. 3.3 添加自己的配置文件
参照Makefile文件,选择一个与自己目标板最为相近的一个主板,我们选 择FADS860T板,在Makefile文件中 FADS860T_config: unconfig
@./mkconfig $(@:_config=) ppc mpc8xx fads
后面添加:
SUMMER860T_config: unconfig
@./mkconfig $(@:_config=) ppc mpc8xx fads
其中ppc是CPU的架构, mpc8xx是CPU对应的目录,fads是主板对应的目录,也可以新建一个目录,然后指向新的目录。
Makefile修改完毕还要添加对应的头文件,SUMMER860T_config对应的头文件应该是SUMMER860T.h, 在/include/configs/下添加该文件,你可以将FADS860T拷贝一份,命名为SUMMER860T.h:
#cd /opt/u-boot-0.2.0/include/configs #cp FADS860T.h SUMMER860T.h 完成之后,可以测试一下你的 …… 此处隐藏:3813字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




