【发布时间】:2015-03-10 07:33:05
【问题描述】:
我正在6SX-SABRE-SBD board 上进行测试。该板安装了 i.MX6SX,一个非对称双核 CPU:Cortex A9 和 Cortex M4。
目前系统以U-Boot 和linux kernel 从SD 开始。这意味着 A9 运行 int DDR 区域。 M4固件有MQX 4.1.0 OS,freescale的移植。
到目前为止我做到了:
- 测试 pingpong 示例,MQX 提供的示例代码映射 QSPI2 中的 M4 代码。它运作良好。
- 我更改了 pingpong 示例的链接器脚本(icf,我正在使用 IAR)
使 ROM 区域位于 DDR 区域内(例如,
0x84000000)。 - 在 U-Boot 启动时,我停止并将重新映射的
.bin文件复制到 正确的地址(例如fatload mmc ${mmcdev}:${mmcpart} 0x84000000 myRemapped.bin) - 使用 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