构建嵌入式Linux开发平台;嵌入式交叉编译环境搭建;嵌入式系统层次结构;宿主机;目标机; 1)在/usr/local/目录下新建arm目录,并进入该目录。[root@vm-dev local]# mkdir arm[root@vm-dev local]# cd arm

2)使用cp命令,把cross_3.3.2.tar.bz2拷贝到新建立的/usr/local/arm目录下。

3)解压交叉编译器安装文件(cross_3.3.2.tar.bz2)。 [root@vm-dev arm]# tar -jxvf cross_3.3.2.tar.bz2

; 4)增加编译器路径。 [root@vm-dev arm]# vi /etc/profile……#Path manipulationif[ `id-u`=0 ]; thenpathmunge /sbinpathmunge /usr/sbinpathmunge /usr/local/sbinpathmunge /usr/local/arm/3.3.2/binfi使用export命令增加环境变量:# export PATH=$PATH:/usr/local/arm/2.95.3/bin ;在“/”目录先建立安装ARM-Linux软件包目录软件包:linux-2.4.18-rmk7-pxa1-mz5-zhiyuan.tar.bz2建立/zylinux目录,将ARM Linux源代码解压至该目录下;编译ARM Linux内核;编译ARM Linux内核;编译ARM Linux内核;构建嵌入式Linux目标平台;Bootloader;硬件设备初始化;为加载引导系统的stage2准备RAM空间;拷贝引导系统的stage2程序到RAM空间中;设置好堆栈;跳转到stage2的C程序入口点。;初始化本阶段要用到的硬件设备;检测系统内存映射(memory map);将操作系统内核映像和根文件系统映像从Flash读到RAM空间中;为操作系统内核设置启动参数;调用操作系统内核。; 由于引导系统是完全依赖于硬件实现的,不同类别的处理器有不同的汇编语言,不同的开发平台有不同的硬件资源。因此,在嵌入式世界里建立一个通用的Bootloader几乎是不可能的。尽管如此,仍然可以对Bootloader归纳出一些通用的概念来指导特定的Bootloader设计与实现。;Bootloader共性分析;常用bootloader; Linux内核移植 ; 操作系统作为一组管理软硬件资源的程序,它能够管理内存、决定系统资源分配、控制输入/输出设备以及管理网络文件等,是系统软硬件之间的纽带,其典型存储地址结构如图所示。;Linux内核移植过程;修改Makefile文件 Magic ARM2410的主处理器是S3C2410X,属于ARM920T,使用交叉编译器arm-linux-,需修改内核的底层Makefile文件。

[root@vm-dev linux-]# vi Makefile

修改前:ARCH ?= $(SUBARCH)CROSS_COMPILE ?=

修改后:ARCH ?= armCROSS_COMPILE ?= arm-linux-;拷贝.config配置文件 由于Magic ARM2410的配置和SMDK2410开发板的类似,可以使用SMDK2410的配置文件s3c2410_defconfig,只需要把该文件拷贝成内核目录下的.config文件即可:[root@vm-dev linux-]# cp ./arch/arm/configs/s3c2410_defconfig ./.config;修改Nand Flash分区 Linux内核移植过程所使用的是SMDK2410开发板原型,而SMDK2410开发板的NAND Flash和Magic ARM2410开发板不一样,需修改。

用vi打开arch/arm/plat-s3c24xx/common-smdk.c文件; 找到关于Nand Flash分区的结构体struct mtd_partition smdk_default_nand_part[]

[root@vm-dev linux-]# vi ./arch/arm/plat-s3c24xx/common-smdk.c;static struct mtd_partition smdk_default_nand_part[] = {[0] = { .name = "Bootloader", .size = 0x80000