没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
29页
一、引言 二、移植环境 2.1 主机系统 2.2 开发编译环境 2.3 目标系统 2.4 主机配置 2.4.1 配置TFTP 服务器 2.4.2 配置超级终端 2.4.3 配置NFS 服务器 三、调试环境 3.1 环境组建 3.2 BDI 调试 四、U-Boot 的移植 4.1 U-Boot 简介 4.2 U-Boot 结构分析 4.3 U-Boot 移植 4.3.1 U-Boot 代码移植 4.3.2 U-Boot 运行流程 4.3.3 U-Boot 命令接口 4.3.4 U-Boot 引导内核 五、Linux 内核的移植 5.1 内核的编译 5.2 内核的裁减 5.3 内核的移植 5.3.1 内核源码结构分析 5.3.2 内核源码修改移植 六、文件系统的组建 6.1 组建网络文件系统(NFS) 6.2 组建自己的文件系统 6.2.1 自定义启动脚本 6.2.2 自定义文件系统 6.2.3 完善自定义文件系统 6.2.4 创建FLASH 文件系统 七、总结
资源推荐
资源详情
资源评论
嵌入式 linux 在 MPC8250 平台上的移植
一、引言 ..................................................................................................................................2
二、移植环境...........................................................................................................................2
2.1 主机系统...............................................................................................................2
2.2 开发编译环境.......................................................................................................2
2.3 目标系统...............................................................................................................3
2.4 主机配置...............................................................................................................4
2.4.1 配置 TFTP 服务器 ........................................................................................4
2.4.2 配置超级终端.................................................................................................4
2.4.3 配置 NFS 服务器 ...........................................................................................5
三、调试环境...........................................................................................................................6
3.1 环境组建....................................................................................................................6
3.2 BDI 调试 ....................................................................................................................7
四、U-Boot 的移植 .................................................................................................................9
4.1 U-Boot 简介 ...............................................................................................................9
4.2 U-Boot 结构分析 .......................................................................................................9
4.3 U-Boot 移植 ...............................................................................................................9
4.3.1 U-Boot 代码移植 ............................................................................................9
4.3.2 U-Boot 运行流程 .........................................................................................11
4.3.3 U-Boot 命令接口 ..........................................................................................12
4.3.4 U-Boot 引导内核 .........................................................................................16
五、Linux 内核的移植 .........................................................................................................17
5.1 内核的编译..............................................................................................................17
5.2 内核的裁减..............................................................................................................17
5.3 内核的移植..............................................................................................................18
5.3.1 内核源码结构分析.......................................................................................18
5.3.2 内核源码修改移植.......................................................................................19
六、文件系统的组建.............................................................................................................22
6.1 组建网络文件系统(NFS) ..................................................................................22
6.2 组建自己的文件系统..............................................................................................22
6.2.1 自定义启动脚本...........................................................................................22
6.2.2 自定义文件系统...........................................................................................25
6.2.3 完善自定义文件系统...................................................................................27
6.2.4 创建 FLASH 文件系统 ...............................................................................28
七、总结 ................................................................................................................................29
2
一、引言
近年来,随着计算技术、通信技术的飞速发展,嵌入式产品成为信息产业的主流。嵌入
式 linux 是指对 linux 经过裁减小型化以后,可以固化在存储器或单片机中,应用于特定嵌
入式场合的专用 linux 操作系统。与其他嵌入式操作系统相比,嵌入式 linux 具有以下特点:
第一,嵌入式 linux 源代码完全开放。这样使得针对特定设备的内核改造和驱动编写更
加方便,而且可以及时获得更多的帮助和支持,降低了开发的成本,也缩短了开发周期。
第二,嵌入式 linux 具有强大的网络和设备支持功能。Linux 诞生于网络时代并具有 Unix
的特性,保证了它支持所有标准的因特网协议,并且协议栈的效率很高。此外,linux 还支
持多种文件系统,提供众多的设备驱动,为嵌入式系统的应用打下了很好的基础。
第三,嵌入式 linux 具备一整套工具链,容易自行建立嵌入式系统的开发环境和交叉运
行环境,可以跨越嵌入式系统开发中仿真工具的障碍。而且,linux 也符合 IEEE POSIX 标
准,使应用程序具有较好的可移植性。
二、移植环境
嵌入式 linux 的移植最好在 linux 平台上完成。移植环境的搭建非常重要,完整、正确
的移植环境可以使移植工作顺利的进行下去。
2.1 主机系统
主机系统就是移植 linux 需要用到的计算机,一般情况下是个人 PC,这里,我用到的个
人 PC 的硬件配置如下:
CPU: P IV 2.4G
RAM: 256M DDR
HARDDISK: 40G
网卡: 10/100M 自适应网卡两块(一块也够了)
串口: RS232
主机操作系统为 Fedora core1。
2.2 开发编译环境
主机准备好之后就得考虑安装交叉编译环境。我们需要一套编译环境,将在X86上的C
代码编译为MPC8250系统可以识别的目标代码。其实在linux上,完全可以自己建立嵌入式
linux的交叉编译环境,不过这一过程有些繁琐,要考虑到各个版本软件的匹配等问题。在
这里非常感谢德国的denx软件中心(www.denx.de),他们为我们提供了一套供PowerPC 嵌
入式linux移植的完整的开发编译环境套件:eldk,即Embedded Linux Development Kit,大
家可以到ftp://ftp.leo.org/pub/eldk
上免费下载,你也可以邮购eldk的CD,这样将获得denx软
件中心的支持。
目前,从 denx 的网站上看到最新发布的 eldk 的版本为 3.0。我所选用的 eldk 的版本为
2.1.0,该版本并不支持我的主机所用到的 Fedora Core 1 操作系统,所以需要下载一个 eldk
的升级包:ftp://ftp.denx.de/pub/tmp/ELDK-update-2.2.0.tar.bz2
。如果大家选用 ELDK3.0,就
不会存在这个问题。
下面是 ELDK2.1.0 所包含的主要软件及版本:
kernel: 2.4.4 gcc: 2.95
gdb: 5.1.1 binutils: 2.11.93
安装 eldk 其实很简单,其过程如下:
3
下载并解压缩到目录:/opt/eldk-ppc-linux
进入目录: cd /opt/eldk-ppc-linux
删除如下文件: RPMS/rpm-4.0.3-1.03b_2..i386.rpm
RPMS/rpm-build-4.0.3-1.03b_2.i386.rpm
RPMS/rpm-devel-4.0.3-1.03b_2.i386.rpm
tools/usr/lib/rpm/rpmpopt-4.0.3
在该目录下面安装升级包:
tar jxf /tmp/ELDK-update-2.2.0.tar.bz2
下面可以开始安装了:
./install –d /opt/work ppc_82xx
在安装时需要注意 install,rpm 等文件的属性和权限问题。
到这里,开发编译环境的安装基本完成了,现在我们要设置一下系统环境,使 eldk 正
常工作。在主机的 linux 用户目录,编辑文件 .bash_profile,加入如下内容:
PATH=$PATH:$HOME/bin:/opt/work/usr/bin:/opt/work/bin:/usr/bin
CROSS_COMPILE=ppc_82xx-
export PATH CROSS_COMPILE
这个时候,我们重新登陆,使该配置文件生效,开发编译环境的设置就完成了。 编译
一个文件测试一下:
ppc-linux-gcc -o hello_world hello_world.c
或者:
ppc_82xx-gcc -o hello_world hello_world.c
没有问题,我们用 file 命令看一下 hello_world 文件的类型:
hello_world: ELF 32-bit MSB executable, PowerPC or cisco 4500, version 1 (SYSV),
for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped
的确生成了 PowerPC 上可以运行的目标文件,OK,到目前为止,用于 linux 移植的开发
编译环境已经完全做好了。
PowerPC 版本的 ELDK 目前支持如下类型的 PowerPC 处理器:
ppc_8xx = MPC8xx Processors
ppc_82xx = MPC82xx Processors
ppc_4xx = IBM 4xx Processors without FPU
ppc_4xxFP = IBM 4xx Processors with FPU
ppc_7xx = MPC7xx Processors
ppc_74xx = MPC74xx Processors
当然,ELDK 还有 ARM 和 MIPS 系统的版本,大家可以到 denx 的网站上查询。
2.3 目标系统
目标系统是需要将嵌入式 linux 移植过去的系统,我的目标系统如下:
CPU: MPC8250,66MHz (core 200MHz,bus 66MHz,CPM 133MHz, PCI 33MHz)
BOOTROM: 512K (用于存放启动代码)
SDRAM: 64MB (用作内存)
FLASH: 8MB (用于存放内核镜像,文件系统和应用程序)
网口: FCC1,FCC2,2 x 10/100Mb
串口: RS232
4
对于 linux 的移植来说,硬件系统必须首先将地址资源规划好,下面是我的系统的地址
分布:
设备名 地址范围 使用空间大小
SDRAM 0x0000_0000 ~ 0x0400_0000 64 Mbytes
FLASH28F640 0x6000_0000 ~ 0x6080_0000 8 Mbytes
CPU DPRAM 0xFF00_0000 ~ 0xFF02_0000 128 Kbytes
FLASH39VF040 0xFFF0_0000 ~ 0xFFF8_0000 512 Kbytes
然后根据这个地址分配表,进行相应的移植工作。
2.4 主机配置
我们需要对主机进行一些配置,这些配置在移植 linux 系统时是需要用到的。
2.4.1 配置 TFTP 服务器
TFTP(简单文件传输协议)服务器在嵌入式 linux 的移植中主要用于目标系统从主机系
统上获取可执行的代码或内核镜像文件。如果你用到了调试工具,如 BDI2000,TFTP 服务器
也为调试工具提供了文件传输服务。
一般 linux 系统都自带了 TFTP 服务,开启该服务可以进行如下操作:
以超级用户编辑 /etc/xinetd.d/tftp 文件,设置如下:
service tftp
{
disable = no
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
per_source = 11
cps = 100 2
flags = IPv4
}
或者,以超级用户在终端上运行 setup,在[system service]里面钩上 tftp,然后重起
xinetd 服务:
/etc/init.d/xinet.d restart
或 service xinet.d restart
即可。注意,根目录下面必须要有 tftpboot 这个目录,如果没有可以手动建一个。
2.4.2 配置超级终端
在大多数嵌入式系统中的目标系统,是没有配置显示设备的,那么在调试和配置目标系
统时,我们大都采用串口来管理的方法,即把目标系统的串口当作目标系统的显示终端,无
论是打印输出,还是管理配置输入,都使用串口。这就需要我们的主机系统能够提供类似于
windows 上的超级终端一样的功能。在缺省的 linux 中,这项功能是存在的。UUCP 软件包为
我们提供了这项功能。
我们对 UUCP 配置如下:
首先编辑 /etc/uucp/sys 文件,设置为:
5
# /dev/ttyS0 at 9600 bps
system SO@9600
port Serial0_9600
time any
然后编辑 /etc/uucp/port 文件,设置为:
# /dev/ttyS0 at 9600 bps
port Serial0_9600
type direct
device /dev/ttyS0
speed 9600
hardflow false
这样,超级终端的设置就完成了,通过 UUCP 提供的命令文件“cu”,我们来使用超级
终端:
$ cu S0@9600
Connected.
接下来我们就可以好好享用这个超级终端了。
2.4.3 配置 NFS 服务器
网络文件系统(NFS)是一种在网络上的机器间共享文件的方法,文件就如同位于客户
的本地硬盘驱动器上一样。在嵌入式 linux 的移植过程中,NFS 服务主要用于目标系统和主
机系统共享相同的文件目录,这样,主机系统就可以通过 NFS 服务来向目标系统提供一个根
文件系统,以供目标系统启动。
大家可以通过主机系统的图形界面来配置 NFS 服务,命令行的配置如下:
编辑 /etc/exports 文件,设置如下:
/opt/eldk/ppc_82xx/ *(rw,insecure,sync,no_root_squash)
其中“/opt/eldk/ppc_82xx”是共享的目录,也是目标系统的根文件系统目录;“*”
表示该服务提供给所有的主机和网络。
然后重新启动 nfs 服务,刚才的设置就生效了
/etc/init.d/nfs restart
注意,在使用 nfs 服务的请大家确认防火墙没有限制 nfs 服务,并且,在系统服务中
portmap 服务是启动运行的。
OK,现在我们测试一下 nfs 服务,假设有 nfs 服务的主机的 IP 为 192.168.0.1,我们
在 192.168.0.2 上测试,
首先在 192.168.0.2 上建立目录/home/tmp,然后用超级用户执行下列命令
mount 192.168.0.1:/opt/eldk/ppc_82xx /home/tmp
这样,将 192.168.0.1 上的目录“/opt/eldk/ppc_82xx”通过 NFS 挂载到了 192.168.0.2
的目录“/home/tmp”上,在 192.168.0.2 上查看一下目录“/home/tmp”里面的内容是否和
192.168.0.1 上目录“/opt/eldk/ppc_82xx”里面的内容完全一样,确定 NFS 服务可用。
到目前为止,主机配置就完成了,有些文档里指出需要设置 DHCP 服务器,在我的移植
过程中,没有设置 DHCP 服务器,目标系统的 IP 设置我是在 Uboot 里面完成的。接下来我们
就可以开始我们的移植工作了。
剩余28页未读,继续阅读
资源评论
- mft050451282013-08-27好东西,学习了,感谢分享。
zchli
- 粉丝: 0
- 资源: 20
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 微信小程序源码 车源宝 二手车交易平台 源码下载
- 微信小程序源码 实现 城市切换 demo 根据城市首字母排序城市 选择城市 源码下载
- VMware7.0虚拟机硬盘无法编辑,无法连接到Profile-Driven Storage Service
- arm64内核的mongo镜像
- 基于stm32f103c单片机+MPU6050+0.96英寸OLED显示屏双柄遥控器硬件(原理图+PCB)工程文件.zip
- 整理的关于少儿编程的学习路径,以及如何在小升初,初升高和大学充分的利用起来编程经验的优势
- nhit完整源码+论文学习
- 足球比赛结果统计表2006-2011年大约28W场比赛
- 基于PHP+mysql的社区交流系统(源代码)
- yolov5,SSD 可能使用到的一些代码
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功