【问题标题】:ARM start addressARM 起始地址
【发布时间】:2015-07-21 22:55:55
【问题描述】:

您好,我是 ARM 新手,正在使用带有 IAR 编译器的 SAM3S4A ARM 处理器。

了解闪存代码从 0x00400000 – 0x0043FFFF 开始,并且处理器从地址零(0x00000000)开始,PC 如何跳转到 0x00400000,因为 VTOR 寄存器默认为零。

【问题讨论】:

  • 好吧,数据表中的内存映射将 0x00000000 - 0x003fffff 显示为“引导内存”,第 8.1.4 节(“引导策略”)概述了这一点。您是否在澄清文档所说的内容后?
  • 我想做的是将运行时位于 0x00000004 的应用程序起始地址更改为新值,然后重置处理器。这是我正在实施的引导加载程序。问题是,如何写入新值并将其保存到安全寄存器 0x​​00000004?

标签: arm


【解决方案1】:

根据我从文档中了解到的情况,ARM proc 在重置时会变为 0x0。 0x00000000 处的 4K 地址空间可以使用 GPNVM 寄存器映射到 ROM 或 FLASH。因此,在复位时,ARM 开始执行来自 ROM 或 FLASH 的代码。 (ROM 包含一些专有的引导加载程序,您可以在闪存中拥有自己的操作系统/引导加载程序)。一旦控制到达您写入闪存的代码,您就可以设置一个新的向量表并更新 VTOR,以便将新的异常路由到那里。

【讨论】:

    猜你喜欢
    • 2011-01-04
    • 2018-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多