目录
[boot ROM程序](#boot ROM程序)
[映像向量表(Image vector table,IVT)](#映像向量表(Image vector table,IVT))
[Boot data](#Boot data)
[NXP官方I.MX 6ULL开发SDK](#NXP官方I.MX 6ULL开发SDK)
启动模式(8引脚设置启动模式)
三大模式:
熔丝:烧录一次,发布产品。
外部:USB、串口等。
内部:SD卡、EMMC、NAND。
设置方法 :BOOT_MODE0、BOOT_MODE1。
内部介质设置方法 :BT_CFG1[4:7]接口编号设置方法 :BT_CFG2[3]
介质属性设置方法 :如SD、EMMC,位宽(BT_CFG2[5])
对应原理图

boot ROM程序
选择内部启动方式,启动boot ROM程序
初始化时钟、外部DDR3
从外部存储介质加载代码
镜像空偏移,由芯片厂商设定。Image vector table(IVT),关键数据位置。
Boot data,启动数据。镜像加载地址、大小。
Device configuration data(DCD),关键外设的寄存器配置信息(时钟、DDR3相关)。
bin文件,真正程序文件。
空偏移
镜像不是从存储介质头部开始存储的,不同介质分别对应一段偏移地址。
映像向量表(Image vector table,IVT)
映像向量表是ROM从提供程序映像的引导设备中读取的数据结构,该程序映像包含成功启动所需的数据组件。
IVT包含程序映像入口点、指向设备配置数据(DCD)的指针和ROM在引导过程中使用的其他指针。

IVT结构体

Boot data
Boot data记录"镜像"在内存中的加载地址和大小。

DCD(外设寄存器配置信息,初始化关键外设)
复位后,芯片使用系统中所有外设的默认寄存器值。但是,这些默认值对于实现最佳系统性能来说并不理想,深圳有些外设在使用之前必须进行配置。DCD是包含在程序镜像中的配置信息,ROM对其解释以配置芯片上的各种外设。
例如,EIM默认配置允许核心在复位后立即连接到NOR闪存设备。这允许芯片与任何NOR闪存设备接口,但缺点是性能慢。此外,一些组件(如DDR)在准备使用之前需要一些寄存器编程作为配置的一部分。DCD可用于将EIM寄存器和MMDC寄存器编程到最佳配置。
ROM根据IVT的信息可确定DCD的位置。

NXP官方I.MX 6ULL开发SDK
下载SDK2.2_iMX6ULL_LINUX。下载完成后名字为:SDK_2.2_MCIM6ULL_RFP_Linux.run
虚拟机通过共享文件夹得到。并运行。./SDK_2.2_MCIM6ULL_RFP_Linux.run
运行完成,会在\opt\生成SDK_2.2_MCIM6ULL文件夹。
在\opt\SDK_2.2_MCIM6ULL\tools\imgutil\readme.txt附有说明文档。1、复制.bin文件到imgutil\evkmcimx6ull文件下,并重命名为sdk20-app.bin。
2、在imgutil\evkmcimx6ull文件下,终端中运行mkimage.sh命令,获取可启动的镜像文件sdk20-app.imag。
如果镜像是用RAM链接文件构成的,使用"mkimage.sh ram"命令制作可启动镜像。
如果镜像是用Flash链接文件构成的,使用"mkimage.sh flash"命令制作可启动的XIP镜像。
如果镜像是用RAM链接文件构成的,并希望从MicroSD卡启动,使用"mkimage.sh sd"命令制作可启动镜像。
根据mkimage.sh和dcd.config文件,dcdgen.bin生成DCD表,imgutil.bin生成img可烧录镜像。