【问题标题】:i.MX6SX run M4 firmware from DDRi.MX6SX 从 DDR 运行 M4 固件
【发布时间】:2015-03-10 07:33:05
【问题描述】:

我正在6SX-SABRE-SBD board 上进行测试。该板安装了 i.MX6SX,一个非对称双核 CPU:Cortex A9Cortex M4

目前系统以U-Bootlinux kernelSD 开始。这意味着 A9 运行 int DDR 区域。 M4固件有MQX 4.1.0 OS,freescale的移植。

到目前为止我做到了:

  1. 测试 pingpong 示例,MQX 提供的示例代码映射 QSPI2 中的 M4 代码。它运作良好。
  2. 我更改了 pingpong 示例的链接器脚本(icf,我正在使用 IAR) 使 ROM 区域位于 DDR 区域内(例如,0x84000000)。
  3. 在 U-Boot 启动时,我停止并将重新映射的 .bin 文件复制到 正确的地址(例如fatload mmc ${mmcdev}:${mmcpart} 0x84000000 myRemapped.bin
  4. 使用 U-Boot 的 bootaux 命令启动 M4 应用程序(例如,bootaux 0x84000000 和我尝试使用 bootaux 0x8400400 也跳过向量)

这些步骤似乎不起作用。

作为测试,我修改了标准 pingpong exaple 以修改0x84000000 的一些字节,DDR region 内的地址,它运行良好。这意味着M4拥有DDR region的权限。

有人可以帮助我了解必须了解/修改什么以使 M4 固件在 DDR 中运行吗?

【问题讨论】:

  • 您可以读/写 DDR 的事实并不意味着您可以从中运行。我首先要确保 M4 完全可以从外部存储器运行。低端嵌入式 MCU(Cortex-M4 就是其中之一)只能从内部闪存执行代码是很常见的。请查阅芯片的数据表/参考手册。
  • 我询问了飞思卡尔的 FAE,他向我证实可以,但显然他没有写给我如何...
  • 应该在您使用的具体MCU的参考手册中指定。另外,飞思卡尔有很多样品,也许你可以找到一个(或寻求他们的支持)。
  • @Eli Iser:真正的问题是 i.MX6SX 太新,于 2015 年 2 月 25 日发布。只有基本示例,没有一个让我了解如何正确重新映射 M4 应用程序。在 MCU 手册(4700 页)上花了一小章(40 页)来谈论 M4 内核,我找不到对我有用的东西。感谢您的建议。

标签: linux embedded embedded-linux cortex-m cortex-a


【解决方案1】:

在 Vybrid 的情况下,我们必须从 0x0f000411 运行 M4 - 据我所知,M4 的 ram 被映射到 0x0f000000。我不记得为什么结尾是 411 而不是 400 或 000,但它是这样工作的。

【讨论】:

  • 感谢您的回答。 Vybrid 平台(Cortex A5 - Cortex M4)具有不同的内存映射,并使用地址别名来映射一些内存范围。 i.MX6SX 具有从 0x80000000 开始的 DDR 范围和可以定义范围和访问规则的 RDC 模块。
猜你喜欢
  • 1970-01-01
  • 2022-01-03
  • 2015-03-12
  • 2018-09-29
  • 2016-12-28
  • 2011-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多