0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

i.MX RT的FlexRAM配置问题

jf_pJlTbmA9 来源:恩智浦MCU加油站 作者:恩智浦MCU加油站 2023-10-24 15:46 次阅读

本文以i.MXRT1050为例来做说明,其它i.MX RT10xx系列在FlexRAM的使用上是一样的,只是容量大小有差别。

一、文档说明

i.MX RT1050一共有512KB内部FlexRAM,默认的情况是128KB ITCM,128KB DTCM,256KB的OCRAM。在实际的使用中,有些客户需要重新分配各个存储区的大小,来均衡自己应用所需要的ITCM, DTCM以及OCRAM容量。

通过官方应用笔记Using the i.MX RT FlexRAM,我们可以知道一些关于FlexRAM的知识以及配置的限制等。

重新配置FlexRAM的分区情况,主要可以通过FUSE或者IOMUXC_GPR_GPR17寄存器去配置,具体关系如下:

wKgZomUDy8uAPi-MAAEt8rBZ-JU755.png

如果修改fuse,那么以后就难以重新修改,因为fuse的位只能从0到1,不能从1到0,所以,在实际的调试过程中,可以通过修改内部寄存器方式临时修改FlexRAM的分区配置。

最近发现有部分网友在使用寄存器重新分区FlexRAM的过程中,出现了各种各样的问题,比如不能debug,debug问题解决之后,又出现debug可以运行,但是下载进去,重新复位代码不能起来的问题。

本篇文章针对需要配置FlexRAM功能的网友,总结了在MCUXPresso IDE下具体的重新配置i.MX RT1050 FlexRAM ITCM、DTCM以及OCRAM大小的步骤, 其他i.MX RT芯片系列方法也是类似,只是具体的寄存器分区大小,按照实际的芯片寄存器去配置。

二、FlexRAM配置分析

i.MXRT1050 默认的FlexRAM配置为:128KB ITCM、128KB DTCM和256KB的OCRAM。那么如果需要配置FlexRAM为:128KB ITCM、256KB DTCM和128KB的OCRAM,应该怎么做呢?

从上面的表格,我们可以看出,可以将IOMUXC_GPR_GPR17配置为下表的黄色行数据:

wKgaomUDy82AafRLAAEuNKeQwqg165.png

IOMUXC_GPR_GPR17寄存器中每2位表示一个Bank,定义如下:

00b—bank is not used.

01b—bank is configured for OCRAM.

10b—bank is configured for DTCM.

11b—bank is configured for ITCM.

i.MX RT1050共有512KB FlexRAM, 做16等分,则每个bank 为512KB/16=32KB。

所以需要128KB ITCM, 256KB DTCM, 128KB的OCRAM时,分配如下:

ITCM:4个bank,共4个11b

DTCM: 8个bank, 共8个10b

OCRAM: 4个bank, 共4个01b

FlexRAM分区地址关系如下:

wKgaomUDy86AS0CJAABrk8iVT-k081.png 相关的寄存器配置如下: IOMUXC_GPR->GPR17 = 0x5AAFFAA5; IOMUXC_GPR->GPR16 |= 0x7; IOMUXC_GPR->GPR14 = (9<<20) | (8<<16);

三、MCUXPresso IDE的配置步骤

下面在MIMXRT1050-EVKB开发板上以SDK 的led_blinky MCUXpresso工程为例,给出具体操作步骤。

首先下载最新的SDK并且在MCUXpresso IDE中导入led_blinky工程。

修改MCU Settings的memory配置

wKgZomUDy8-AEjzKAAFY1VXzlgU166.png

将DTCM, ITCM, OCRAM改为实际需要的大小后,点击apply。

在startup文件里的Reset代码部分添加FlexRAM的代码:

FLEXRAM->TCM_CTRL = 4;

IOMUXC_GPR->GPR17 = 0x5AAFFAA5;

IOMUXC_GPR->GPR16 |= 0x7;

IOMUXC_GPR->GPR14 = (9<<20) | (8<<16) ;

准备IDE的调试脚本.scp文件

RT1050_connect_128Kocram_128Kitcm_256Kdtcm.scp 内容为:

100REM===============================
110REMRT1050_connect.scp
120REM
130REMCopyright2019NXP
140REMAllrightsreserved.
150REM===============================
160print"RT1050ConnectScript"
170REMprobelist
180p%=probefirstfound
190remprobeopenbyindexp%
200wireswdconnectp%
210selectprobecorep%0
220cminitapdpthis
230cmhaltthis
235goto320
240remtrapinbootrom
250cmwatchsetthis00x400F8004RW
260cmresetvectorcatchclearthis
270print"Resettingandtrapping"
280cmsysresetreqthis
290print"Backfromreset"
300cmresetvectorcatchsetthis
310cmwatchclearthis0
320print"DisablingMPU"
330s%=Peek32this0xE000ED94
340s%=s% 0xFFFFFFFE
350Poke32this0xE000ED94s%
360REM======ConfigureFlexRAM======
370print"ConfigureFlexRAMfor128KBOCRAM,128KBI-TCM,256KBD-TCM"
380REMTCMCTRLPoke0x400B0000-toforceRAMclockingandsetwaitstates=b100
390Poke32this0x400B00000x4
400REMIOMUXC_GPR170x400AC044-thissetsbitfieldallocationofFlexRAM32KBbankstoOC256KBb01,I128KBb11,D128KBb10
410Poke32this0x400AC0440x5AAFFAA5
420REMIOMUXC_GPR160x400AC040-thissetsenablesforIandDTCMandthesourceoftheTCMconfig=0x200007
430Poke32this0x400AC0400x200007
440print"Finished"
450REM===============================
460end

将这个超长文件名的文件,RT1050_connect_128Kocram_128Kitcm_256Kdtcm.scp拷贝到IDE安装目录下:

C:nxpMCUXpressoIDE_11.1.0_3209idebinariesScripts

拷贝完之后,在debug configuration界面的script connect 中添加这个脚本文件:

wKgZomUDy9GAG8bHAALqKFOMhg8935.png

修改stack的起始位置

将STACK的位置由end改为start,这样可以解决烧录之后,重新上电不运行的问题。

wKgaomUDy9OAWPRMAAF72f3nZN8735.png

下面就可以编译代码,并且运行,测试结果如下:

wKgZomUDy9WAUg51AATmqGEqn4M728.png

可以发现,寄存器的FlexRAM情况确实是需要的配置情况,烧录之后,退出debug重新上电,可以发现led还是可以闪烁,说明功能已经正常工作。

本文最初发表在“恩智浦中文社区”,可以在原帖那里下载到代码。

来源:恩智浦MCU加油站

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5342

    浏览量

    120305
  • i.MX
    +关注

    关注

    1

    文章

    47

    浏览量

    35608
收藏 人收藏

    评论

    相关推荐

    i.Mx RT平台内存建议

    哪些超总线存储器被推荐用于NXP的I.MX RT平台。CyPress的超闪存/HyrRAM MCP设备与NXP的I.MX RT系列兼容吗?应用笔记和用户体验将不胜感激。 以上来自于百
    发表于 09-05 14:33

    i.MX RT1020到i.MX RT1010的迁移手册

    i.MX RT1020到i.MX RT1010的迁移指南
    发表于 12-12 06:25

    使用i.MX RTFlexRAM的教程

    使用i.MX RTFlexRAM
    发表于 12-12 07:36

    i.MX RT1060到i.MX RT1064的迁移手册

    i.MX RT1060到i.MX RT1064的迁移指南
    发表于 12-12 07:21

    01:i.MX RT系列产品的介绍与演示

    i.MX RT产品是今年市场上最受欢迎的跨界MCU产品。本讲座将对i.MX RT系列做一个简要的介绍,包括主要特性和主要外设。然后会分享能够加快用户设计进度的各种攻略。作为无闪存的MC
    的头像 发表于 01-23 07:21 3000次阅读
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列产品的介绍与演示

    01:i.MX RT的市场应用和参考解决方案

    i.MX RT产品是今年市场上最受欢迎的跨界MCU产品。i.MX RT定位为一款MCU产品,它可以重复利用传统的Arm MCU生态系统。除此之外,本次讲座还将简要介绍
    的头像 发表于 01-21 07:13 3355次阅读
    01:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>的市场应用和参考解决方案

    02:i.MX RT系列产品的介绍与演示

    i.MX RT产品是今年市场上最受欢迎的跨界MCU产品。本讲座将对i.MX RT系列做一个简要的介绍,包括主要特性和主要外设。然后会分享能够加快用户设计进度的各种攻略。作为无闪存的MC
    的头像 发表于 01-21 07:04 2308次阅读
    02:<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>系列产品的介绍与演示

    恩智浦i.MX RT1170开创GHz MCU时代

    自2017年上市以来,i.MX RT系列取得了优秀的市场表现。i.MX RT1170跨界MCU是恩智浦i.MX
    的头像 发表于 03-22 11:14 3490次阅读

    恩智浦i.MX RT1170在将该系列带上了更高的层面

    自2017年上市以来,i.MX RT系列取得了优秀的市场表现。i.MX RT1170跨界MCU是恩智浦i.MX
    的头像 发表于 05-18 11:15 3777次阅读

    i.MX RT开发笔记-08 | i.MX RT1062嵌套中断向量控制器NVIC(按键中断检测)

    系列文章目录i.MX RT开发笔记-01 | 初识 i.MX RT1062 跨界MCUi.MX RT
    发表于 12-01 13:51 2次下载
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>开发笔记-08 | <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>1062嵌套中断向量控制器NVIC(按键中断检测)

    RT-Thread & NXP 发布 i.MX RT 系列 BSP 新框架

    前言i.MX RT 是 NXP 推出的跨界处理器系列。该系列下又包括 i.MX RT1020、i.MX
    发表于 12-07 13:06 2次下载
    <b class='flag-5'>RT</b>-Thread & NXP 发布 <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b> 系列 BSP 新框架

    i.MX RT超低功耗模式捉虫记

    SNVS模式是i.MX RT10XX和i.MX RT11XX系列MCU中功耗最低的状态,其标志性特点是除SNVS电源域保持供电,其余的电源域均处于断电状态。
    发表于 02-08 15:14 0次下载
    <b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>超低功耗模式捉虫记

    适用于i.MX RT500和i.MX RT600 MCU的Xtensa音频框架介绍

    在众多的恩智浦i.MX RT跨界处理器当中,您可能会发现有些系列除了Arm内核之外还结合了高性能的DSP,利用集成DSP的技术优势,可提供高性能音频数字信号处理能力,并包含特定算法操作,可实现完全
    的头像 发表于 11-10 09:39 2707次阅读

    RT-Thread文档_野火 I.MX RT1052上手指南

    RT-Thread文档_野火 I.MX RT1052 上手指南
    发表于 02-22 18:25 2次下载
    <b class='flag-5'>RT</b>-Thread文档_野火 <b class='flag-5'>I.MX</b> <b class='flag-5'>RT</b>1052上手指南

    理解i.MX RT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值

    理解i.MX RT中FlexSPI外设lookupTable里配置访问行列混合寻址Memory的参数值
    的头像 发表于 10-30 17:23 503次阅读
    理解<b class='flag-5'>i.MX</b> <b class='flag-5'>RT</b>中FlexSPI外设lookupTable里<b class='flag-5'>配置</b>访问行列混合寻址Memory的参数值