[imx6ull]启动与头部信息详解
艾恩凝
2021/11/24
板子没到手,先熟悉芯片吧,上手轻车熟路,imx6ull启动方式有好多种,但正点原子主要就三种,外加一个下载,关于芯片启动方式在芯片手册第八章
那么先从板子上的拨码开关开始
下图说明了使用什么模式要具体怎么拨,还有原理图上的引脚
启动方式选择
BOOT_MODE[1:0] | BOOT 类型 |
---|---|
00 | 从 FUSE 启动 |
01 | 串行下载 |
10 | 内部 BOOT 模式 |
11 | 保留 |
Serial Downloader
当 BOOT_MODE1 为 0, BOOT_MODE0 为 1 的时候此模式使能,串行下载的意思就是可以通过 USB 或者 UART 将代码下载到板子上的外置存储设备中,我们可以使用 OTG1 这个 USB口向开发板上的 SD/EMMC、NAND 等存储设备下载代码。我们需要将 BOOT_MODE1 拨到“OFF”,将 BOOT_MODE0 拨到“ON”。
Internal Boot
在此模式下,芯片会执行内部的 boot ROM 代码,这段 boot ROM 代码会进行硬件初始化(一部分外设),然后从 boot 设备(就是存放代码的设备、比如 SD/EMMC、 NAND)中将代码拷贝出来复制到指定的 RAM 中,一般是 DDR。
启动方式
主要是sd,emmc,nand,这三种,其他的就不多谈了。首先看下面的这张图,芯片手册第8.3.2,258页上的表格,这就是需要配置的寄存器,3组
查看原理图
正点原子出厂的板子,大多数引脚接地,我们主要关注下面几个引脚
关于如何设置这三组寄存器,可以查看芯片手册第8.5小节,详细介绍了如何设置,同时也可以看下面这张图。简单清晰明了
具体含义
BOOT_CFG 引脚 | 对应 LCD 引脚 | 含义 |
---|---|---|
BOOT_CFG2[3] | LCD_DATA11 | 为 0 时从 SDHC1 上的 SD/EMMC 启动,为 1 时从SDHC2 上的 SD/EMMC启动。 |
BOOT_CFG1[3] | LCD_DATA3 | 当从 SD/EMMC 启动的时候设置启动速度,当从NAND 启动的话设置 NAND 数量。 |
BOOT_CFG1[4] | LCD_DATA4 | BOOT_CFG1[7:4]: |
BOOT_CFG1[5] | LCD_DATA5 | 0000 NOR/OneNAND(EIM)启动 |
BOOT_CFG1[6] | LCD_DATA6 | 0001 QSPI 启动。0011 SPI 启动。 |
BOOT_CFG1[7] | LCD_DATA7 | 010x SD/eSD/SDXC 启动。011x MMC/eMMC 启动。1xxx NAND Flash 启动。 |
板子上的拨码开关详细说明
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 启动设备 |
---|---|---|---|---|---|---|---|---|
0 | 1 | x | x | x | x | x | x | 串行下载,可以通过 USB 烧写镜像文件。 |
1 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | SD 卡启动。 |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | EMMC 启动。 |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | NAND FLASH 启动。 |
烧写头部信息
这个系列芯片都需要一个头部信息,然后加上真正的bin文件,这部分在手册8.7章节
所以IVT+Boot data+DCD+.bin是烧到板子上的最终程序,写到这又花了好久看手册,发现官方的手册真不是个东西,这部分是略写的,有些根本表述不清楚
11/25
大早上的接着看芯片手册,发现手册上的一张图很形象的描绘了这部分内容,在资料很少的时候,应该自习读读手册,正点原子写的手册里也没有提及,这个图很形象的描绘了头部信息的位置。
看到图,有一个疑问,按道理说灰色的部分是没用的,正点原子作者讲解的头部信息是按照nxp官方的文件头讲解的,还是回到手册,来看这句话
这句话flexible解释了图上的灰色部分,说明了这4kb的数据,减去1kb的偏移,剩下的3kb,任你怎么用就怎么用
IVT
突然感觉在这解释手册,其实关于这些参数在正点原子上手册中也都分析了,最重要的是,每个32位的的数据不是特定的,我认为这是最重要的,正点原子参考的是nxp的二进制源码反推的,只要在这3kb大小的里面,你可以随便操作,像上面的那个图一样,正点原子推导的IVT与boot data 是紧连着的。
Boot Data
这里注意一下,正点原子是设置了2mb大小,如果超过了就需要裁剪或者把这个数字调大
DCD
为什么要DCD,上面解释了没有最优的系统性能,甚至有些设备必须配置才能使用,具体使用信息,在手册311页,采用大端模式,DCD最大允许1768字节,结构如下
头结点
CMD
关于正点原子的,初始化了哪些寄存器这里就不介绍了,可以去看手册,最后想确认一下这个length是不是address与value的总大小,这里是Write data command format 总大小,就是 address+value+write data +command 的总大小
小结
看手册的日子里,不为 别的,主要是为了提高英语水平,哪里不会就要多看看芯片手册,相信没有什么比官方给的手册还要权威了。
分析imx6ull启动的头部信息就到这了,主要明白原理就ok了,还是多看看手册,不会的点一定要看手册