IMX6ULL 启动方式之IVT与BootData数据

一.   load.imx 文件

本文针对 IMX6ULL的裸机开发中。x.bin 文件中,恩智浦官方提供加入 x.bin 文件中的头部信息分析。

例如,之前汇编开发 实现 LED 灯的程序。x.bin 通过 添加头文件信息生成 load.imx 文件。

load.imx 文件由以下组成:

1.  IVT(Image vector table);

2.  Boot data,启动数据;

3.  DCD(Device configuration data),设备配置信息,重点是 DDR3 的初始化配置;

4. 用户代码可执行文件,比如 led.bin

二.  Boot Rom做的事

设置内核时钟为396MHz。使能MMU和Cache,使能L1cache L2 cache MMU,目的就是为了加速启动。

从BOOT_CFG 设置的外置存储中,读取 image,然后做相应的处理。

三.  load.imx 文件中头信息

load.imx 文件中头信息中,大概包含IVT 信息,Boot Data数据,DCD数据,与其他的数据。

1.   IVT 和 Boot Data 数据

Image vector table 简称 IVT IVT 里面包含了一系列的地址信息,这些地址信息在
ROM 中按照固定的地址存放着。
Boot data 启动数据,包含了镜像要拷贝到哪个地址,拷贝的大小是多少等等。

Bin文件前面要添加头部。可以得到,我们烧写到SD卡中的load.imx文件在SD卡中的起始地址是0x400,也就是1024。

头部大小为3KB,加上偏移的1KB,一共是4KB,因此在SD卡中bin文件起始地址为4096。

IVT大小为32B/4=8条。

IVT+Boot Data的数据,很多是我从NXP官方u-boot.imx文件里面提取出来的。

2.  DCD数据

Device configuration data,简称 DCD,设备配置信息,重点是 DDR3 的初始化配置。即配置6ULL内部寄存器的。

首先,将CCRG0~CCGR6全部写为0XFFFFFFFF,表示打开所有外设时钟。然后就是DDR初始化参数。设置DDR控制器,也就是初始化DDR。

3.  其他的数据

检查数据命令、NOP命令、解锁命令。这些其实也都属于DCD

总结:

内部的 boot-rom 根据这些头部信息来完成 IMX6ULL 的 DDR 初始化,一些外设初始化,以及从 SD卡将 x.bin 文件(可执行程序)拷贝到DDR的哪个位置。

本文内容针对 IMX6ULL 裸机开发的。主要是保证x.bin文件可以在开发板中运行,必须添加的一些头部信息。这些头部信息的简略介绍,可以有一个初步的了解。

你可能感兴趣的:(嵌入式C开发,Linux下环境配置,linux)