Skip to main content

3.2 IMX6ULL启动流程

3.2 IMX6ULL启动流程

​ 这个启动流程可以猜测出来,假设板子设置为SD/TF卡启动,boot ROM程序会做什么?把程序从SD/TF卡读出来,运行。

​ 从哪里读?从SD/TF卡读,这需要先初始化SD/TF卡:根据eFUSE或GPIO的设置初始化SD/TF卡。

​ 读到哪里去?读到内存即DDR去,这需要先初始化DDR。

​ 除了初始化启动设备、初始化DDR,还需要初始化什么?也许要初始化时钟,让CPU跑得更快一点。

​ 总结起来就是:初始化CPU、时钟等,初始化内存,初始化启动设备,从启动设备上把程序读入内存,运行内存的程序。

​ 官方的启动流程如下,这个流程图比较粗糙,总结起来就是:

​ a. 检查CPU ID

​ b. 检查Reset Type,冷启动、唤醒的启动过程是不一样的

​ c. 检查启动模式BOOT_MODE,检查eFUSE或GPIO

​ d. 根据上述检查从USB口、UART口或是某个启动设备下载boot image

​ e. 认证image

​ f. 启动

​ 对于具体的启动设备,IMX6ULL芯片手册《Chapter 8: System Boot》中有对应章节描述更为细致的启动流程。基本上就是对这些启动设备根据eFUSE或GPIO的设置进行初始化,尝试更高的工作频率等。 ​ 在往后的学习中,如果涉及这些细节,我们再描述。 ​ 假设使用SD/TF卡启动,卡上的程序有多大?它应该被复制到DDR哪里去?这些问题,请看《3.3 IMX6ULL映像文件制作与使用》。