Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux i、 MX6SX从DDR运行M4固件_Linux_Embedded_Embedded Linux_Cortex M_Cortex A - Fatal编程技术网

Linux i、 MX6SX从DDR运行M4固件

Linux i、 MX6SX从DDR运行M4固件,linux,embedded,embedded-linux,cortex-m,cortex-a,Linux,Embedded,Embedded Linux,Cortex M,Cortex A,我在6SX-SABRE-SBD板上做测试。该板上安装了一个i.MX6SX,一个不对称的双核CPU:Cortex A9和Cortex M4 目前,系统是从SD的U-Boot和linux内核启动的。这意味着A9在DDR区域内运行。M4固件具有MQX 4.1.0操作系统,即飞思卡尔的移植 到目前为止,我做到了: 测试乒乓球示例,MQX提供的示例代码映射QSPI2中的M4代码。它工作得很好。 我更改了链接器脚本icf,我正在使用乒乓球的IAR示例 要使ROM区域位于DDR区域内,例如0x84000000

我在6SX-SABRE-SBD板上做测试。该板上安装了一个i.MX6SX,一个不对称的双核CPU:Cortex A9和Cortex M4

目前,系统是从SD的U-Boot和linux内核启动的。这意味着A9在DDR区域内运行。M4固件具有MQX 4.1.0操作系统,即飞思卡尔的移植

到目前为止,我做到了:

测试乒乓球示例,MQX提供的示例代码映射QSPI2中的M4代码。它工作得很好。 我更改了链接器脚本icf,我正在使用乒乓球的IAR示例 要使ROM区域位于DDR区域内,例如0x84000000。 在U-Boot开始时,我停止并将重新映射的.bin文件复制到 正确的地址,例如fatload mmc${mmcdev}:${mmcpart}0x84000000 myRemapped.bin 使用U-Boot的bootaux命令启动M4应用程序,例如bootaux 0x84000000,我还尝试bootaux 0x8400400跳过向量 这些步骤似乎不起作用

作为测试,我修改了标准乒乓球示例,修改了0x84000000处的一些字节,这是DDR区域内的一个地址,效果很好。这意味着M4拥有DDR区域的权限


有人能帮助我理解,为了使M4固件在DDR中运行,必须知道/修改哪些内容?

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

您可以读/写DDR并不意味着您可以从中运行。我首先要确保M4完全可以从外部内存运行。低端嵌入式MCU(Cortex-M4就是其中之一)只能从内部闪存执行代码是很常见的。查阅芯片的数据表/参考手册。我向飞思卡尔的FAE询问,他向我证实了这一点,但显然他没有给我写信说明如何在您使用的特定MCU的参考手册中指定。另外,飞思卡尔有很多样品,也许你可以设法找到一个或寻求他们的支持。@Eli Iser:真正的问题是i.MX6SX太新了,于2015年2月25日发布。只有基本的例子,没有人让我了解如何正确地重新映射M4应用程序。在4700页的MCU手册中,花了40页的篇幅来讨论M4核心,在这里我找不到对我有用的东西。谢谢你的建议,谢谢你的回答。Vybrid平台Cortex A5-Cortex M4具有不同的内存映射,并使用地址别名映射某些内存范围。i、 MX6SX的DDR范围为0x8000000,RDC模块可以定义范围和访问规则。