不同开发板,启动方式不一样,今天我们来介绍imx6ull开发板的启动方式,这非常重要。若不了解清楚启动方式,后面的所有开发工作便无从谈起。
本文摘自100ask_imx6ull 开发板 配套学习手册-《嵌入式Linux应用开发完全手册_韦东山全系列视频文档全集V2.6》.pdf
1.1 IMX6ULL 启动方式
参考资料:
开发板资料网盘
路径:
06_Datasheet(数据手册)
-> Core_board->CPU->IMX6ULLRM.pdf”
中《Chapter 8: System Boot》。
1.1.1芯片手册讲解
IMX6ULL芯片内部有一个boot ROM,上电后boot ROM上的程序就会运行。它会根据BOOT_MODE[1:0]的值,以及eFUSE或GPIO的值决定后续的启动流程。
注:eFUSE即熔丝,只能烧写一次,一般正式发布产品时烧写最终值;平时调试时通过GPIO来设置开发板的启动方式。
boot ROM上的程序功能强大,可以从USB口或串口下载程序并把它烧写到Flash等设备上,也可以从SD卡或EMMC、Flash等设备上读出程序、运行程序。
问题来了:
① boot ROM是从USB口下载、运行程序,还是从SD卡等设备上读出、运行程序,这由谁决定?
由BOOT_MODE[1:0]的值来决定启动方式,它们来自于2个引脚BOOT_MODE1、BOOT_MODE0。这2个引脚在上电时是输入引脚,芯片启动后采集这2个引脚的值,存入BOOT_MODE寄存器。以后这2个引脚就可以用于其他功能,不会影响到BOOT_MODE寄存器。
BOOT_MODE[1:0]的值确定了4种启动模式,如下图:
![4b03b57eccba2ffe71cf7c20892853f4.png](https://i-blog.csdnimg.cn/blog_migrate/c69ad6b73c4697fde56049b65a82d1d1.jpeg)
BOOT_MODE
在100ASK_IMX6ULL中,这2个引脚对应的原理图如下: