目录
启动模式(8引脚设置启动模式)
对应原理图
boot ROM程序
空偏移
映像向量表(Image vector table,IVT)
IVT结构体
Boot data
DCD(外设寄存器配置信息,初始化关键外设)
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
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可烧录镜像。