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报如下错误
以上两种情况都需要重新上电!
4.TCM容量一定要保持最大
至此,i.MX RT1060 FlexRAM动态分配及注意事项讲解何其乐便介绍完毕了,掌声在哪里~~~
|