前言
学习韦东山老师的移植U-BOOT 2012.04.01已经有一段时间了,一直想着自己来移植最新的U-BOOT,看看是否真正的掌握了移植方法。并通过这个过程,学着写一些自己的博客。
至于为什么要选择2016.11版本,而不是最新的2018.09,是因为从U-BOOT 2016.11以后的版本就不再支持S3C2410单板,以目前的能力,我们要移植U-BOOT到开发板上一定是选择当前支持的单板或者至少是相近的。 U-BOOT代码可以从这里下载,链接:[ftp://ftp.denx.de/pub/u-boot/]
因为现在我还没有从头到尾的把2016.11版本的U-BOOT移植成功,并且还在上班,所以接下来以一个模块为一个章节不定时更新。每一个章节结束,我都会附上相应的补丁文件,大家可以直接从补丁文件看到这一章修改了哪些地方。
U-BOOT 2016.11 启动流程分析
一般u-boot要做以下这些事:
a. 初始化硬件:关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH
b. 如果bootloader比较大,要把它重定位到SDRAM
c. 把内核从NAND FLASH读到SDRAM
d. 设置"要传给内核的参数"
e. 跳转执行内核
下面主要列举了部分U-BOOT从上电到调用系统内核过程中的一些函数调用关系,其中加粗和斜体是移植U-BOOT中可能会修改到的函数。对部分函数进行了简单的注释,完整的启动流程分析以及函数注释可以看源代码,或者链接: [http://www.wowotech.net/u-boot/boot_flow_2.html].