4.I.MX6ULL启动方式

1.硬件启动方式选择

①.启动方式选择

​ 支持SD卡,SMMC,nand flash ,Nor flash。

​ 6ULL是怎么支持多种外置flash的启动方式。手册的第八章SYSTEM BOOT详细介绍。

②.启动方式的选择

​ BOOT_MODE0与BOOT_MODE1,两个IO进行控制的。选择从USB启动还是BOOT启动,如果要烧写系统到开发版中可以选择USB下载,下载到SD,EMMC,NAND,SPI flash灯外置存储中。烧写完从相应的外界存储中启动系统。

​ 通过BOOT_MODE0与BOOT_MODE1可以设置FUSE启动,串行下载,内部BOOT模式启动方式。

③.启动的过程

​ 当BOOT_MODE1=1时木九十内部boot模式了,此时会启动boot ROM的代码执行,它首先会初始化时钟(进行Device Configure(BOOT CGF))。设置时钟会选择BT_FREQ的模式,通过不同的模式,来配置不同的时钟频率。

​ 为了进一步加快boot ROM的执行速度会打开MMU与缓存。下载系统镜像的时候回打开一级缓存,验证镜像回同时打开二级缓存,验证完毕以后关闭一级二级缓存和MMU。

2.分析imx头部文件

头部信息里面组成

​ iamge vector table: IVT包含一些列的地址信息,这些信息在ROM中固定的地址中存放。包含了镜像的地址入口。不同的外部存储设备,存在不同的地方,详见手册IVT表

​ boot data:启动数据,将镜像系统拷贝到哪些地址,拷贝的大小是多少

​ device configuration: DCD,设备配置信息,重点是DDR3的初始化配置

​ bin文件

​ 这些信息可以将内部boot ROM 会将load.imx拷贝到DDR3中,用户代码从头部信息中的地址开始执行。

​ .imx文件起始在0x400位置,即1kb。头部大小是3k,加偏移量1kb,一共4Kb,因此在SD卡中bin文件起始地址为0xc00 , 4096字节。

DCD数据

​ DCD数据配置6ULL内部的寄存器,主要是DDR3的配置。分为三个部分Tag (0xD2起始),length, vision(0x40起始)。

​ 使用WinHEX软件查看二进制的IMX的头部信息,去参数手册中查找相关的地址,看初始化的参数是怎么样。

​ 首先将CCGR0-CCGR6全部写为0XFFFFFFFF,表示打开所有的外设时钟。然后DDR初始化参数。其他的数据全部为0了。

你可能感兴趣的:(IMX6ULL学习手册)