i.MX RT10xx 系列——USB 例程使用 OCRAM

使用过 NXP i.MX RT 系列 MCU 的伙伴都知道,内部 RAM 分了三个:DTCM 、ITCM、 OCRAM ,但是很多时候都单一的 RAM 大小并不能满足产品功能需求,好在设计的时候留了 FlexRAM 模块来分配,由于内部 BootROM 用到了 OCRAM ,我们不能将其设置为 0 ,很多时候是将 DTCM 和 ITCM 设为 0 ,将内部 RAM 大小全部设置为 OCRAM ,跑其它工程都很正常,但是在跑 USB 相关代码的时候却会出错,这篇文章就来说说这个问题。

 

我们以 USB CDC 例程为例,使用 i.MX RT1020 开发板,SDK 2.12.1,MCUXpresso IDE

导出工程,下载运行正常:

 







在属性中做以下设置,将数据全部放入 OCRAM :

 

 

再次编译下载,这时候看不到 USB 端口弹出,怎么解决这个问题呢,其实只需要修改 MPU 的 OCRAM 原有的属性设置为下图红框内容就可以了:

 

 

将 OCRAM 的 Shareable 使能,之前有讲到 OCRAM 与 TCM 的区别,CPU 对其的访问机制不同,这样会造成一些数据读取问题,区域属性设置对后便不会出现这种问题

 



对于其它的 USB 例程也是一样的修改方法,比如 USB MSC 的例程,当使用 OCRAM 出现问题的时候,也许就是 MPU 的一些属性没有配置正确。

 

参考资料:

《IMXRT1020RM》

https://www.nxp.com.cn/products/processors-and-microcontrollers/arm-microcontrollers/i-mx-rt-crossover-mcus/i-mx-rt1050-crossover-mcu-with-arm-cortex-m7-core:i.MX-RT1020

《AN12042》

https://www.nxp.com.cn/docs/en/application-note/AN12042.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论