申明
本着学习交流的原则, 将个人移植u-boot的过程做一个记录. 文章参考了csdn blog里面的很多内容, 有的已经记不得出处了, 只好把当时的摘要直接贴出来. 如果冒犯, 还请见谅. 如有侵权, 请与我邮件联系. 谢谢!
概念
地址无关
- 地址无关是指代码在编译的时候,不论基于什么地址编译,在运行阶段,拷贝(或者直接在原地址运行,像norflash)到任何地址都能正常运行
地址相关
- 地址相关是指在代码编译的时候,如果基于某个地址编码,那么代码在运行阶段就必须要拷贝到这个地址才能运行.这种代码大多是高级语言编写的,比如在main函数里面调用init函数, init函数的地址是在编译阶段就确定的,这是个绝对地址.如果运行阶段的地址与编译阶段的不一样,跳转就会出问题了
嵌入式系统启动过程
- RomBoot --> SPL --> u-boot --> Linux kernel --> file system --> start application
- SPL: SPL是uboot新版本里面引进的一个概念. 它基本上是用地址无关的代码写成的. 主要目的是把uboot中真正做事情的stage2阶段的代码拷贝到外部RAM中去运行.SPL也可以理解为uboot的stage1阶段. 关于SPL的详细信息, 可以参考