i.MX6SX从DDR运行M4固件

时间:2015-03-10 07:33:06

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

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

系统从U-Boot开始linux kernelSD。这意味着A9运行在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跳过向量)
  5. 这些步骤似乎不起作用。

    作为一项测试,我修改了标准的pingpong exaple来修改0x84000000的一些字节,这是DDR region内的一个地址,并且效果很好。这意味着M4拥有DDR region的权利。

    有人可以帮我理解在DDR中运行M4固件需要知道/修改的内容吗?

1 个答案:

答案 0 :(得分:0)

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