IMX6ULL芯片内部的ROM中存储的代码的作用和工作原理

ROM中的代码是可以直接执行的,它的作用是什么?

提问:IMX6ULL芯片内部的ROM中的代码是不是也要被加载到内存(RAM)中才能运行?

答:IMX6ULL 内部 ROM 的代码 不需要被加载到内存中,它直接在 ROM 中执行。

ROM 代码的执行方式

  • IMX6ULL 具有一个内置的 Boot ROM(位于芯片内部),这段代码在芯片上电或复位时直接从 ROM 执行,不会被加载到 RAM 或其他存储介质中。
  • 这段 Boot ROM 代码是固定烧录在 IMX6ULL 芯片内部,不能被修改。
  • ROM 代码的主要作用是:
    1. 读取 BOOT_MODE 设置,确定启动介质(如 eMMC、NAND、SD 卡、UART、USB 等)。
    2. 访问相应的存储设备,读取第一阶段的引导代码(如 SPL 或 U-Boot)到 RAM 中。
    3. 跳转到加载的代码执行,进入下一步引导流程。

ROM 中的代码如何访问外部存储?

  • ROM 代码直接访问外设,如 eMMC 控制器、SPI、NAND 控制器等,来读取启动设备中的引导代码。
  • 由于 IMX6ULL 在上电时 RAM 还未初始化,Boot ROM 代码会使用芯片内部的 OCRAM(On-Chip RAM,大约 128KB) 来存放 SPL 或者临时数据。
  • 一旦 SPL 运行并初始化外部 DRAM,后续的 U-Boot、Linux 内核等就可以使用更大的内存空间。

总结

  • IMX6ULL 的 Boot ROM 代码存储在芯片内部,直接执行,不需要加载到内存(RAM)中。
  • ROM 代码的作用是初始化最基本的硬件,并从外部存储(如 eMMC)加载引导代码(SPL)。
  • SPL 运行后初始化 DDR,接着 U-Boot 和 Linux 继续启动流程。

ROM中的代码为什么能被直接执行

提问:IMX6ULL内部的ROM是不是因为有地址线所以存储在它里面的代码才可以不用加载到RAM中就能被执行?

是的,IMX6ULL 内部的 ROM(Boot ROM)可以直接执行,正是因为它有地址线,使得它是能 映射到处理器的地址空间 的,从而CPU 能够直接从 ROM 读取和执行指令,而无需先将其加载到 RAM 中。

1. 为什么 IMX6ULL 的 ROM 可以直接执行?
IMX6ULL 的内部 Boot ROM 是 基于地址总线的存储器,它被映射到 CPU 的物理地址空间(通常在 0x0000_0000 或特定区域)。CPU 上电复位后,直接从该地址取指令执行,无需额外加载到 RAM。

关键点

  1. ROM 通过地址线连接到 CPU,类似于 NOR Flash,CPU 可直接取指执行。
  2. ROM 的代码是出厂时写入的,不可更改,它负责 IMX6ULL 的 Boot 启动流程
  3. 无需先加载到 RAM,但在 Boot 过程中,如果从 eMMC、NAND Flash、SD 卡等外部存储启动,ROM 会将 Bootloader(如 U-Boot)加载到 RAM 再执行。

2. eMMC/NAND Flash 为什么不能直接执行?
与 IMX6ULL 内部 ROM 不同,eMMC/NAND Flash 没有直接映射到 CPU 的地址空间,而是通过 SD/MMC 控制器或 NAND 控制器 访问,因此:

  • CPU 无法直接从 eMMC/NAND 取指令,只能读取数据并加载到 RAM,再让 CPU 在 RAM 中执行。
  • 这就是为什么 eMMC/NAND Flash 需要 Boot ROM 先加载 Bootloader 到 RAM,然后再运行。

3. IMX6ULL 的 Boot 流程
IMX6ULL 上电后,内部 Boot ROM 执行:

  1. CPU 复位后,自动从 ROM 预定义地址执行(无需 RAM)。
  2. ROM 代码检测启动模式(BOOT_MODE 引脚)
    • 从 eMMC / NAND / SD / UART / USB 启动。
  3. 如果从 eMMC/NAND 启动
    • ROM 通过 SD/MMC/NAND 控制器读取存储设备中的 Bootloader(如 U-Boot)。
    • 将 Bootloader 复制到 RAM 并执行。
  4. Bootloader(U-Boot)运行后,再引导 Linux 内核

4. 结论

  • IMX6ULL 的 ROM 直接映射到 CPU 地址空间,因此能直接执行,不需要加载到 RAM。
  • eMMC/NAND 不能直接执行,因为它们是外部存储,CPU 需要 Boot ROM 先加载 Bootloader 到 RAM,然后才可以执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值