《嵌入式开发环境与工具》实验指导书
Linux操作系统下安装Linux发行包以及交叉编译器arm-linux-gcc。然后对Linux进行配置(make menuconfig)并选择适合本实验系统的相关配置,配置完成后进行编译生成Linux映像文件zImage。然后通过u-boot将该文件下载到目标板并执行。
主机:Fedora10
目标机:S3C6410
安装Linux 启动U-BOOT 安装交叉编译器 下载Linux映像文件 配置Linux内核 运行Linux 编译内核zImage 图2-1 CVT-6410 Linux开发流程
2. Linux内核源代码的安装
本实验系统的Linux发行文件为linux-2.6.36.2.tar.gz,在Redhat下将该文件拷贝到/opt/cvtech目录下,然后在该目录下执行:tar zxvf linux-2.6.36.2.tar.gz,当tar程序运行完毕后,在/opt/cvtech目录下会有一个linux-2.6.36.2的新目录,这个目录就是linux的源码根目录,里面有进行linux内核开发的所有的源代码。 3. Linux交叉编译环境的建立和使用
通常,程序是在一台计算机上编译,然后再分布到将要使用的其他计算机上。当主机系统(运行编译器的系统)和目标系统(产生的程序将在其上运行的系统)不兼容时,该过程就叫做交叉编译。除了兼容性这个明显的好处之外,交叉编译还由于以下两个原因而非常重要:
1) 当目标系统对其可用的编译工具没有本地设置时;
2) 当主机系统比目标系统要快得多,或者具有多得多的可用资源时。
本实验的主机采用x86体系结构的Fedora10或者RedHat Linux系统。目标系统是S3C6410X ARM920T处理器。
GNU的交叉编译器,包括以下组件:
1. Gcc交叉编译器,即在宿主机上开发编译目标上可运行的二进制文件; 2. Binutils辅助工具,包括objdump、objcopy等; 3. Gdb调试器。 4 Linux内核的配置和编译
1) Linux源代码结构
Linux的源代码组织成如下结构:根目录是/opt/cvtech/linux-2.6.36.2_v1.05。
29
《嵌入式开发环境与工具》实验指导书
内核的文件组织结构为:
arch/arm:与架构和平台相关的代码都放在arch目录下。针对ARM的Linux,有一个子目录和它对应—arm。
drivers:这个目录包含了所有的设备驱动程序。驱动程序又被分成―block‖、―char‖、―net‖等几种类型。
fs:这里有支持多种文件系统的源代码,几乎一个目录就是一个文件系统,如MSDOS、VFAT、proc和ext2等。
include:相关的头文件。它们被分成通用和平台专用两部分。目录―asm-$(ARCH)‖包含了平台相关的头文件,在它下面进一步分成―arch-$(MACHINE)‖以及―arch-$(PROCESSOR)‖等子目录。与板子相关的头文件放在―arch-$(MACHINE)‖下,与CPU相关的头文件放在―arch-$(PROCESSOR)‖下。例如,对于没有MMU的处理器,―arch-arm‖用于存放硬件相关的定义。
init:含一些启动kernel所需做的所有初始化动作,里面有一个main.c,针对kernel做初始化动作,设置一些参数等,并对外围设备初始化。
ipc:提供进程间通信机制的源代码,如信号量、消息队列和管道等。
kernel:包含进程调度算法的源代码,以及与内核相关的处理程序,例如系统调用。 mm:该目录用来存放内存管理的源代码,包括MMU。 net:支持网络相关的协议源代码。
lib:包含内核要用到的一些常用函数。如字符串操作,格式化输出等。 script:这个目录中包含了在配置和编译内核时要用到的脚本文件。 2) 配置和编译Linux核心 1.配置内核:
[root@cvtech ~]#cd /opt/cvtech/linux-2.6.36.2_v1.05 [root@cvtech ~]#make menuconfig
如下图所示,
30
《嵌入式开发环境与工具》实验指导书
图2-2 CVT-6410 Linux配置
启动菜单配置工具后,选择―Load an Alternate Configuration File‖选项,然后确认(用上下移动键,将蓝色光标移动选择到―Load an Alternate Configuration File‖,然后键入回车键)。该选项将载入CVT-6410的标准配置文件config-6410,该文件保存在/opt/cvtech/linux-2.6.36.2_v1.05目录下,请不要修改这个文件。
在提示框中键入config-6410配置文件名,然后选择―Ok‖确认,将退回到主菜单。然后按―Esc‖键退出,并将提示是否保存,请选择―Yes‖保存。
2.编译:可以通过make或者make zImage进行编译,它们的差别在于make zImage将make生成的核心进行压缩,并加入一段解压的启动代码,本实验采用make zImage编译。
[root@cvtech ~]#make zImage
生成的Linux映像文件zImage保存在/opt/cvtech/linux-2.6.36.2_v1.05/arch/arm/boot/目录下。
5. 下载Linux核心并运行
编译成功后的Linux核心为/opt/cvtech/linux-2.6.36.2_v1.05/arch/arm/boot/zImage。通过CVT-6410的u-boot将该核心zImage下载到NANDFLASH中。
把准备好的zImage内核文件以及文件系统,放入对应的SD卡中,拨码开关设置正确,烧写成功后,切换为启动模式,查看linux启动过程。启动信息如下图所示:
31
《嵌入式开发环境与工具》实验指导书
2.2.6 实验步骤
1. 编译Linux核心;
[root@cvtech ~]#cd /opt/cvtech/linux-2.6.36.2_v1.05 [root@cvtech ~]#make menuconfig
选择―Load an Alternate Configuration File‖,加载config-6410配置文件,保存并退出。 [root@cvtech ~]#make zImage 编译成功后,拷贝zImage到下载目录
[root@cvtech ~]#cp /opt/cvtech/linux-2.6.36.2_v1.05/arch/arm/boot/zImage /mnt/hgfs/share
2. 下载Linux核心并运行;
3. 重新配置Linux,删除网络、显示器、触摸屏等硬件,编译、下载并运行。
2.2.7 实验报告要求
1. 交叉编译环境包括哪些工具,它的作用是什么? 2. 简述Linux的启动过程。
32

