您好,
我正在使用 MCUXpresso 及其 SDK 为 RT1170 开发一个应用程序。
所提供的示例项目似乎都是使用 “DTC” RAM 版本的。与许多其他用户一样,我的应用程序太大了,无法容纳在那里,所以我正在尝试使用“同步动态随机存取存储器(SDRAM)”。
在尝试了论坛上其他一些帖子(尤其是https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979)中提出的解决方案后现在,我可以执行我的程序,如果应用程序已闪存,我还可以调试程序。
但是,如果我使用 “将应用程序链接到RAM” 进行版本和执行,那么一旦遇到断点,应用程序通常会卡在那里。
我的假设是这是因为我没有正确初始化同步动态随机存取存储器(SDRAM)。上述文章使用 “rt1050_SDRAM_init.scp 作为调试器初始化 同步动态随机存取存储器(SDRAM) 控制器的连接脚本”。如果我使用这个文件,失败也就不足为奇了。
我不知道如何调整这个脚本才能在 RT1170 上运行。有没有人这样做过,或者能提供如何生成的建议?
感谢您提供的任何帮助。
按照提供的步骤,使用 RT1170_BriefOverview_v210.pdf 中提到的修改刷新 hello world,我可以在调试模式下使用同步动态随机存取存储器(SDRAM)。
但是在这种变化之后,同步动态随机存取存储器(SDRAM)也用于存储代码。
在我的应用程序中,我希望代码存储在闪存中,而 BOARD_SDRAM 仅用于堆和堆栈部分。
我将把我的应用程序闪存到闪存中,该应用程序的堆和栈部分将使用 BOARD_SDRAM。
请指导我进行所需的更改。
谢谢@ Jingpan、
我只需要添加 .scp文件,结果成功了。
我已经掌握了第 5、第 6 和第 8 步,但我会试试其他步骤。
如果有帮助我还在 board.c 中做了以下更改,我认为这等同于<https://community.nxp.com/t5/i-MX-RT/MCUXpresso-and-RT1050-download-and-debug-in-SDRAM/m-p/896979>中描述的 RT1170_SDRAM_NOT_CACHED:
#ifdef USE_SDRAM
#ifndef RT1170_SDRAM_NOT_CACHED
/* 区域 9 设置:内存为普通类型,不可共享,外部/内部回写 */
MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U);
MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 0, 0, 1, 1, 0, ARM_MPU_REGION_SIZE_64MB);
#else
MPU->RBAR = ARM_MPU_RBAR(9, 0x80000000U);
MPU->RASR = ARM_MPU_RASR(0, ARM_MPU_AP_FULL, 1, 0, 0, 0, ARM_MPU_REGION_SIZE_64MB);
#endif /* RT1170_SDRAM_NOT_CACHED */
#endif
你好@robert_s、
此脚本适用于 RT1050/60,但不适用于 RT1170/60。您可以使用附带的脚本。除脚本文件外,您还需要执行其他步骤。
在 C/C++ 版本 > MCU 属性设置中的内存详细信息中,将 BOARD_SDRAM 移至 SRAM_DTC_M7 上方。
此致,
景