分类: 嵌入式
2011-06-22 10:17:03
交叉编译工具链的构建:
所需资源 :安装包
1、 建立工作目录-建子目录2、建立环境变量3、编译安装binutils—包含的程序有addr2line、ar、as、c filt、libbfd等等。它的安装依赖于GCC、BASH、Glibc、make、perl等工具。
4、获得内核头文件、5、编译安装BOOT-trap gcc 6、建立glibc库7、编译安装完整的GCC。8、测试交叉编译工具链。
U-BOOT分析与移植
u-bootf分为stage1和stage2两个阶段。
(1)设置异常向量表
(2)设置CPU模式为SVC模式
(3)关闭看门狗
(4)禁制所有终端
(5)设置CPU的频率
(6)设置CP15寄存器
(7)配置内存控制寄存器
(8)配置栈空间
(9)BSS段清零
(10)复制NAND flash代码到RAM。
(11) 进入到C代码
2.uboot stage2 分析
Uboot的移植过程
软件环境——u-boot-1.1.3tar。bz2
Arm-linux-gcc 3.3.6
(1)修改makefile
(2)建立mike2410开发板目录
(3)建立配置头文件
(4)指定交叉编译器的路径
(5)测试编译
3.4基于s3c2410 开发板自己编写bootloader
系统的启动主要有两种方式:一种是直接从Nor Flash启动,另一种是可以将压缩的内存映像文件从flash中复制、解压到RAM中,然后再从RAM中启动。
Bootloader具体实现:
Stage1阶段:设置异常向量表、初始化看门狗和外围电路、初始化存储器、初始化堆栈、初始化数据区、跳转到c程序的main()函数。
Stage2阶段:(1)初始化系统频率(2)初始化I/O端口(3)初始化中断处理程序(4)串口初始化(5)其它部分的初始化(6)主程序循环
嵌入式linux内核移植:
移植分为三种情况:从一个硬件平台移植到另外一个硬件平台
每个arch目录代表支持多少个硬件平台:
Alpha、cris、ia64、m68knommu、sh、parc64、arm、v850、mips等等。
内核移植主要包括两方面的工作:arch目录下的体系结构的移植、二是移植drivers目录下的许多硬件驱动程序、最后是应用程序的移植。
因为硬件平台对于C语言是影响的:具体表现为:处理器的字长会影响数据类型的长度、数据对齐、字节顺序。
内核移植的准备:交叉编译链、下载内核代码、硬件准备。
内核移植:内核配置、内核编译、内核下载3个部分
内核配置:1、修改makefile2、设置NAND Flash分区:分为bootloader、kernel、rootfs、user四个分区。3、配置内核选项4
内核编译:1、清除冗余文件2、编译内核映像和模块3、安装模块
内核下载:
建立Linux根文件系统:
系统启动时,需要根文件系统来挂载。内核代码文件保存在根文件系统中,系统引导程序会从正广和根文件系统设备上把内核执行代码加载到内存中去。
以cramfs根文件系统为例:1、cramfs工具包主要是为了生成mkcramfs和cramfsck两个工具。2、构建———busybox