发 帖  
原厂入驻New

[经验] 【文末福利!】基于IMX6ULL开发板的启动方式——开源资料,操作详解

2020-9-8 17:18:52  113 嵌入式 开发板
分享
0
1.1 imx6ULL启动方式
参考资料:网盘开发板资料“06_Datasheet(数据手册)/Core_board/CPU/IMX6ULLRM.pdf”中《Chapter 8​: System Boot》。
网盘地址:
【IMX6ULL】100ASK_IMX6ULL开发板配套资料
链接:https://eyun.baidu.com/s/3smDzFAH
密码:LDCn

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种启动模式,如下图:
图片1.png


在100ASK_IMX6ULL中,这2个引脚对应的原理图如下:
图片2.png

00模式在我们的开发过程中很少用到,简单介绍一下:在这种模式下,GPIO的值被忽略。Boot ROM会根据eFUSE的值来选择启动设备、设置启动设备。但是,对于刚出厂的芯片eFUSE值可能是错乱的、不适合你的设备的,怎么办?eFUSE中有一个值BT_FUSE_SEL,它的出厂值是0,表示eFUSE未被烧写。boot ROM程序发现BT_FUSE_SEL为0时,它会通过USB或串口来下载程序;发现BT_FUSE_SEL为1时,才会根据eFUSE的值选择启动设备,读出、运行该设备上的程序。
01模式,boot ROM程序通过USB或串口下载、运行程序,这个模式可以用来烧写EMMC等设备。我们的开发板出厂时,就是通过这个模式下载、烧写出厂程序的。
10模式,称之为内部模式,简单地说就是从SD卡、EMMC等设备启动程序。这就引入下面第2个问题。

② 如何选择启动设备?
00模式下是通过eFUSE的值选择启动设备,我们不关心。
10模式下既可以通过eFUSE的值也可以通过GPIO的值来选择启动设备,但是到底通过谁来决定?eFUSE中有一个值BT_FUSE_SEL,对,又是它。它的初始值为0,表示eFUSE未被烧写。在10模式下,当BT_FUSE_SEL为0时就会通过GPIO来选择启动设备;当BT_FUSE_SEL为1时就会通过eFUSE来选择启动设备。
在开发阶段,我们使用GPIO来选择设备,这就引入下面第3个问题。
③ 如何通过eFUSE或GPIO选择、设置启动设备?
通过eFUSE或GPIO不仅能选择启动设备,还可以设置启动设备。
为什么还需要设置?比如Nand Flash参数各有不同,有些的页大小是2048,有些是4096。这些参数不同,boot ROM程序读Nand Flash的方法就不同,我们必须把这些参数告诉boot ROM:通过eFUSE或GPIO来标明这些参数。

首先看看要设置哪些eFUSE或GPIO来选择不同的启动设备。
图片3.png

从上图可知,既可以使用eFUSE也可以使用GPIO来选择启动设备,换句话说GPIO可以覆盖eFUSE的值。哪些GPIO覆盖哪些eFUSE?这可以查看IMX6ULL芯片手册《Chapter 8​: System Boot》里的《GPIO boot overrides》,我们把它摘出来放在1.1.3小节里。
选择启动设备后,还需要标明一些参数。
比如选择EMMC启动时,EMMC接在哪一个接口,eSDHC1还是eSDHC2?它的速度如何?
比如选择TF卡启动时,TF卡接在哪一个接口,eSDHC1还是eSDHC2?它的速度如何?

假设使用EMMC启动,或是TF卡启动,怎么设置eFUSE或GPIO?这些信息可以查询IMX6ULL芯片手册《Chapter 5​:  Fusemap》,摘录如下。
图片4.png

当BOOT_MODE设置为0b00时,通过eFUSE选择启动设备,通过eFUSE获得设备的参数。
当BOOT_MODE设置为0b10时,通过eFUSE或GPIO来选择启动设备,获得设备的参数;使用eFUSE还是GPIO由eFUSE中的BT_FUSE_SEL决定,它默认是0,表示使用GPIO。
以BOOT_MODE为0b10为例,解析一下上图。
要设置为SD卡、TF卡启动,有2个设置方法:
a. 设置eFUSE的BOOT_CFG1[7:5]为0b010,或
b. 查看《3.1.3 GPIO boot overrides》确定BOOT_CFG1[7:5]对应的GPIO为LCD1_DATA07~05,把这3个引脚设置为0b010。
根据SD卡、TF卡的性能,可以设置eFUSE或GPIO来表示它能否提供更高的速度:
a. 设置eFUSE的BOOT_CFG1[4:0],或
b. 查看《3.1.3 GPIO boot overrides》确定BOOT_CFG1[4:0]对应的GPIO为LCD1_DATA04~00,设置这些引脚。
IMX6ULL有两个SD卡、TF卡接口,使用哪一个接口?请看下表:
a. 设置eFUSE的BOOT_CFG2[4:3]可以确定使用eSDHC1或eSDHC2,或

b. 查看《3.1.3 GPIO boot overrides》确定BOOT_CFG2[4:3]对应的GPIO为LCD1_DATA12~11,设置这些引脚
图片5.png

通过eFUSE或GPIO,还可以标明启动设备的更多参数,具体细节可以参考芯片手册《Chapter 5​:  Fusemap》,作为硬件开发人员需要去细细研究;作为软件开发人员,实际上只需要看开发板手册知道怎么设置启动开关即可。
1.1.2 100ASK_IMX6ULL启动方式选择
100ASK_IMX6ULL开发板上的红色拨码开关用来设置启动方式、选择启动设备,支持这3种方式:EMMC启动、SD卡启动、USB烧写。
板子背后画有一个表格,表示这3种方式如何设置。
表格如下:
BOOT CFG
BOOT
SW1(LCD_DATA5)
SW2(LCD_DATa11)
SW3(BOOT_MODE0)
SW4(BOOT_MODE1)
EMMC
OFF
OFF
ON
OFF
SD
ON
ON
ON
OFF
USB
X
X
OFF
ON
拔码开关中的SW3、SW4用来设置BOOT_MODE,ON表示0,OFF表示1。
所以当SW3、SW4设置为ON、OFF时,BOOT_MODE为0b10,将会使用SD卡、TF卡、EMMC等设备启动。
刚出厂的开发板中BT_FUSE_SEL默认为0,表示使用GPIO来设置参数。即使用LCD1_DATA07~05来选择启动设备。
100ASK_IMX6ULL开发板只支持SD/TF卡、EMMC启动,LCD1_DATA07~05为0b010时选择SD/TF卡启动,LCD1_DATA07~05为0b011时选择EMMC启动。这两种启动设备对应的LCD1_DATA07~06的值相同,都是0b01,这在核心板上已经通过电阻设置好,我们只需要在拨码开关上设置SW1(对应LCD1_DATA05)就可以。
IMX6ULL上有2个EMMC Flash接口,也复用为2个SD/TF卡接口,通过LCD1_DATA12~11来选择接口。0b00对应eSDHC1接口,0b01对应eSDHC2接口。LCD1_DATA12的值在核心板上已经通过电阻设置好。LCD1_DATA11的值通过拨码开关SW2来设置:ON表示0,对应eSDHC1接口,100ASK_IMX6ULL的TF卡接口使用了eSDHC1接口;OFF表示1,对应eSDHC2接口,100ASK_IMX6ULL的EMMC接口使用了eSDHC2接口。

这3种启动方式的设置示意图如下:
图片6.png

要注意的是,设置为USB启动时,不能插上SD卡、TF卡。
刚出厂的板子在EMMC上烧写了系统,你可以设置为EMMC启动方式。
1.1.3 GPIO boot overrides
IMX6ULL中既可以通过eFUSE也可以通过GPIO来选择、设置启动设备,在手册里大部分场合只列出了eFUSE,对应的GPIO需要查表:IMX6ULL芯片手册《Chapter 8​: System Boot》里的《GPIO boot overrides》。

我们把它摘录出来。
图片7.png

看到这里的小伙伴们注意啦~想要亲自动手实践下这个启动方式的过程吗~?现在韦东山老师联合电子发烧友学院推出100ASK_IMX6ULL(带屏) 开发板免费试用活动!
只需进入申请页面提交申请,即可有机会获取免费试用的资格哦~感兴趣的小伙伴赶紧来参与吧~!

活动时间
1.申请报名:2020/08/19-2020/09/19
2.公布名单:2020/09/21
3.发货日期:2020/09/23
4.试用期限:截止至10月23号

扫码立即申请

韦东山IMX6ULL二维码.png

相关经验

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
发经验
关闭

站长推荐 上一条 /8 下一条

快速回复 返回顶部 返回列表