当前位置: 首页 > web >正文

[IMX] 01.IVT 表长度计算

目录

1.IVT 表起始位置(SD/EMMC)

2.IVT 表的结构

3.Boot Data 大小

4.地址计算


1.IVT 表起始位置(SD/EMMC)

SD 卡起始 1K 字节大小的空间用于存储 SD 卡自身相关信息,因此 IVT 表在 SD 卡中的偏移量为 0x400,IVT 表加上 SD 卡头部的总大小为 4K 字节,所以,镜像可使用的空间为 3K 字节:

IVT + Boot Data + DCD 的总大小为 4KByte - 1KByte = 3KByte

若 SD/EMMC 每个扇区为 512 字节,则 load.imx 应该从第三个扇区开始烧写,前两个扇区要空出来存放 SD 卡自身的头部信息

load.imx 中从第 3K 字节开始才是真正的 .bin 文件

2.IVT 表的结构

IVT 表包含 8 个字段,每个字段占用 32-bit,因此 IVT 表的总长度为 32-bytes:

3.Boot Data 大小

Boot Data 包含以下三个字段:

每个字段占 32-bit,因此 Boot Data 在 IVT 表中所占大小为:(32 * 3) / 8-bit = 12-bytes(0x0C)

4.地址计算

手册中这部分内存分布的图形描述如下所示:

  • 从官方 U-Boot 中得到程序执行的起始位置为 0x87800000,即 .bin 的起始地址为 0x87800000;

  • 初始加载区域的大小为 4KBytes,SD/EMMC 自身的信息占用 1KBytes,剩余空间为 3KBytes(0xC00),这部分空间用于存储 IVT + Boot Data + DCD;

  • load.imx 文件包含了 IVT + Boot Data + DCD + .bin(即 3KBytes + .bin),而 .bin 的起始地址为 0x87800000,因此,IVT + Boot Data + DCD 的起始地址为 0x87800000 - 0xC00 = 0x877FF400;

  • load.imx 的头部 32-bytes 存储 IVT 表(大小 0x20),即 IVT 表的起始位置为 0x877FF400;

  • 紧跟其后的 Boot Data 数据占用 12-bytes(大小 0xC),即 Boot Data 的起始位置为 0x877FF400 + 0x20 = 0x877FF420

  • 再之后才是存储的 DCD 数据,因此 DCD 数据的起始位置为 0x877FF420 + 0xC = 0x877FF42C;

  • 一般 IVT + Boot Data + DCD 不会将 3KBytes 全部用完,多余空间的值为 0;

完整的内存分布如下所示:

IMX6ULL 规定镜像大小不能大于 2MBytes,教程中使用全部的空间,即 SD Header + IVT + ... + .bin 的可用大小为 2MBytes,即0x200000

正点原子开发板的 DDR 起始地址为 0x80000000,ARM Cortex-A7 的栈内存为向下增长的方式,因此在编写程序设置 SP 栈指针时,将值设置为 0x80200000,即从该地址开始取数据

http://www.xdnf.cn/news/6617.html

相关文章:

  • 考研408《计算机组成原理》复习笔记,第二章(2)数值数据的表示(浮点数篇)
  • 【springboot项目服务假死、内存溢出问题排查】
  • shell-awk
  • TVS管用万用表测量方法详解(含二极管档使用指南)
  • 【微信小程序】webp资源上传失败
  • 告别碎片化!MCP 带来 AI Agent 开发生态的革命性突破
  • Qt之QMessageBox
  • 【RabbitMQ】实现RPC通信的完整指南
  • 浅谈算法中的贪心策略:从直觉到策略的思维跨越
  • ios打包ipa获取证书和打包创建经验分享
  • (独家)SAP CO模块中 销售发票对应的Cost Document中的PSG对象是什么东东??
  • leetcode0621. 任务调度器-medium
  • 论QT6多线程技术
  • linux-配置定时任务
  • 一道canvas算法题(看过记录下)
  • js在浏览器执行原理
  • 【Linux】Linux安装并配置mysql
  • vue基本介绍
  • H.264/AVC 变换量化编码核心技术拆解
  • C#语言中 (元,组) 的发展史
  • Unity基础学习(十五)核心系统——音效系统
  • PC:使用WinSCP密钥文件连接sftp服务器
  • c++作业整理2
  • 纯前端实现基于位置的天气和动态背景图片
  • 行为型模式:责任链模式
  • 代码随想录 算法训练 Day2:数组
  • 第七节第三部分:从JDK8开始接口新增的方法、接口的多继承、注意事项
  • 一.android Studio开发系统应用——导入TvSettings源码
  • Medical | 药品追溯码【待续】
  • 2025-5-15Vue3快速上手