以smdk2410开发板为基础的uboot学习笔记(1) 概览

来源:互联网 发布:万网域名注册怎么用 编辑:程序博客网 时间:2024/06/01 07:48


零:目的
在非开发模式下,即启动加载模式下,uboot执行到最后,将linux的参数放在0x30000100为起始的地方,将linux内核放在0x30008000为起始的地址,然后跳转到0x30008000处执行,剩下的就是linux的事了。

一:上电
uboot被烧写到flash中以0x00000000为起始的地方。
开发板硬件决定了上电后,开发板从0x00000000处开始执行程序。
开始的几条指令是与程序编译时确定的地址无关的命令,做了些基本的设置后,将整个uboot代码复制到内存中(以0x33f80000为起始的地方)。然后,通过一条指令:ldr pc , _start_armboot
跳转到c语言代码,正式使用程序编译时确定的地址来执行程序。

二:架构
整个体系中,smdk2410开发板的独立文件有:
/board/smdk2410 文件夹
/include/config/smdk2410.h 文件
对于不同的开发板,类似。
其他的文件则是通用的。

三:编译命令
make smdk2410_config
make
得到我们想要的uboot映像。

四:配置
uboot的配置集中在 /include/config/smdk2410.h 中。
其中主要有两类宏:
一类是选项,前缀为"CONFIG_";
一类是参数,前缀为"CFG_";

五:编译链接
1.首先编译 cpu/$(CPU)/start.S ,对于不同的CPU,还可能编译cpu/$(CPU)下的其他文件。
2.然后,对于开发板相关的每个目录,每个通用目录都使用他们各自的Makefile生成相应的库。
3.将1 2 步生成的 .o  .a 文件按照 board/$(BOARDDIR)/config.mk 文件中指定的代码段起始地址 和 board/$(BOARDDIR)/U-BOOT.lds 链接接脚本进行链接。
4.第3步得到的是ELF格式的U-Boot,后面Makefile还会将它转换为二进制格式,S-Record格式。
 

原创粉丝点击