linux进阶-I.MX 6ULL

目录

启动模式(8引脚设置启动模式)

对应原理图

[boot ROM程序](#boot ROM程序)

空偏移

[映像向量表(Image vector table,IVT)](#映像向量表(Image vector table,IVT))

IVT结构体

[Boot data](#Boot data)

DCD(外设寄存器配置信息,初始化关键外设)

[NXP官方I.MX 6ULL开发SDK](#NXP官方I.MX 6ULL开发SDK)


启动模式(8引脚设置启动模式)

三大模式:

熔丝:烧录一次,发布产品。

外部:USB、串口等。

内部:SD卡、EMMC、NAND。

设置方法 :BOOT_MODE0、BOOT_MODE1。
内部介质设置方法 :BT_CFG14:7

接口编号设置方法 :BT_CFG23

介质属性设置方法 :如SD、EMMC,位宽(BT_CFG25)

对应原理图

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可烧录镜像。

相关推荐
LCG米3 小时前
STM32硬件CRC外设实测:多项式固定陷阱、CRC-32校验不匹配根因与软件查表法耗时对比落地
stm32·单片机·嵌入式硬件
La Pulga7 小时前
【FreeRTOS源码学习笔记】任务切换
单片机·mcu·学习·嵌入式·freertos·实时操作系统
女神下凡11 小时前
芯参谋(85):Linux_PPI_NAND_驱动开发指南
linux·运维·arm开发·驱动开发·单片机·嵌入式硬件·设计规范
硅基手札12 小时前
【Linux 内核专栏 19】20 · 嵌入式子系统 — GPIO·pinctrl·clock·regulator
linux·运维·单片机·linux内核·嵌入式开发·调试定位
何粥学14 小时前
Vivado 2024.2 开发记录(AC820 Zynq-7020)——软件使用,点亮led灯
单片机·嵌入式硬件·zynq
Sakura_j_h_15 小时前
51 单片机驱动四位数码管:动态扫描、限流电阻与消影的取舍
单片机·嵌入式硬件·51单片机·嵌入式·数码管·动态扫描·限流电阻
HANDY0920016 小时前
从“不照人”到“剂量达标”:扇叶遮挡式UV-C空气消毒的工程边界与可验证评估框架
开发语言·人工智能·嵌入式硬件·智能家居
飞凌嵌入式19 小时前
千次静电放电试炼,守住飞凌嵌入式硬件可靠底线
嵌入式硬件
蹊黎1 天前
Linux 下用 C 语言实现进度条
linux·c语言·单片机
无敌贵点大王1 天前
从寄存器层面重学STM32(6)——串口USART实战部分
stm32·单片机·嵌入式硬件