i.MX RT1060 FlexRAM动态分配及注意事项

1 FlexRAM动态配置

    i.MX RT1060 有共有512KB的FlexRAM,可以配置为三种形态(ITCM/DTCM/OCRAM),默认ITCM/DTCM/OCRAM都是FlexRAM总容量,这并不代表ITCM/DTCM/OCRAM实际容量,只代表ITCM/DTCM/OCRAM可能的最大容量。另外还有512KB独立的OCRAM。ITCM的基地址0x0000 0000,DTCM的基地址0x2000 0000,OCRAM的基地址0x2020 0000。

 

i.MXRT1060支持利用IOMUXC_GPR寄存器来动态配置FlexRAM,这也是为了解决利用eFuse静态配置FlexRAM的两个主要缺点:

  • Fuse烧写仅可一次,因此无法多次调整FlexRAM配置
  • Fuse中仅4/6bit配置位,没有穷尽所有FlexRAM Bank组合

利用IOMUXC_GPR寄存器可以多次重复配置FlexRAM各形态容量,并且配置是立即生效的,而且IOMUXC_GPR寄存器仅在POR时才被复位,普通System Reset无法复位其值。利用IOMUXC_GPR寄存器配置FlexRAM需要按照如下步骤来操作:

1.1 分配Bank

  首先是指定FlexRAM各Bank的分配情况,利用IOMUXC_GPR17寄存器的FLEXRAM_BANK_CFG位,你可以自由指定每个Bank最终形态(ITCM/DTCM/OCRAM)

    

 

1.2 激活Bank分配

      分配好各Bank形态后,将IOMUXC_GPR16寄存器的FLEXRAM_BANK_CFG_SET置位,FLEXRAM_BANK_CFG指定的配置即立刻生效,此时你去访问ITCM/DTCM/OCRAM,已经是新配置下的映射空间了

   

 

1.3 示例代码

      1. 修改link文件,编译APP

         

      2. .s文件中Reset_Handler中设置GPR寄存器

         

      3. 如果同时需要下载调试,别忘记设置debug初始化文件

         

2 FlexRAM注意事项

      1. 默认ITCM/DTCM/OCRAM都是FlexRAM总容量,这并不代表ITCM/DTCM/OCRAM实际容量,只代表ITCM/DTCM/OCRAM可能的最大容量。

        2.修改flexram之后,download报如下错误

       

       3.修改flexram之后,debug报如下错误

       

       以上两种情况都需要重新上电!

       3.TCM容量一定要保持最大

      至此,i.MX RT1060 FlexRAM动态分配及注意事项讲解何其乐便介绍完毕了,掌声在哪里~~~

      本章很多内容参照了衡杰的博客内容!

posted @ 2020-09-01 11:37  何其乐  阅读(1142)  评论(0)    收藏  举报