为什么要使用交叉编译工具?
1 嵌入式系统硬件资源限制:cpu主频、内存容量…
2 嵌入式系统MCU体系结构和指令集不同:ARM、MIPS、PowerPC…
3 提高开发效率
编译器的主要部件
1 分析器: 将源代码转变为汇编代码
2 汇编器: 将汇编代码转变成机器码
3 链接器: 将生成的机器码进行组装生成最后的可执行文件
4 标准C库 : 核心的C函数被打包成库,被链接成可执行文件的一部分
嵌入式软件的分层
嵌入式linux系统移植的要点
搭建交叉开发环境
bootloader的选择和移植
kernel的配置 编译 移植和调试
根文件系统的制作
为什么要移植uboot
每种不同的CPU体系结构都有不同的bootloader
bootloader还依赖具体的嵌入式板级设备的配置,比如板卡的硬件地址的分配,外设芯片的类型等…
uboot启动流程
stage1 (直接在对应nanflash这样的内存上运行):
- 硬件设备初始化
- 为加载bootloader的stage2准备ram空间
- 拷贝bootloader的stage2到ram空间
- 设置好堆栈(为C语言提供运行环境)
- 跳转到stage2的入口点
stage2:
- 初始化本阶段所要用到的硬件设备
- 将内核映像和根文件系统映像从flash拷贝到ram中
- 调用内核
## 内存分布:arm32##
uboot目录结构
board:uboot移植主要修改的地方
common:实现uboot支持的命令行功能
include:头文件定义,顶层目录所包含的configs目录与开发板配置 寄存器地址定义相关
…
平台相关目录:board include…
平台五个目录:common net fs drivers
工具和文档:tools doc
…