FlexRAM框架
FlexRAM意为高度可配置RAM门列阵。这个东西把内部集成的512KBRAM平均分成了16个bank,每个32KB。FlexRAM可以把他们配置成三张模式之一:ITGM,DTIM,OCRAM
- ITCM:指令紧耦合RAM。与内核同频运行,通过64-bit的I-TCM总线访问,用来存放指令
- DTCM:数据紧耦合RAM。与内核同频运行,通过2*32-bit的D0/D1-TCM总线访问,用来存放只有内核访问的数据
- OCRAM:片上RAM。以1/4内核频率运行,连接到总线矩阵SIM_M7的NIC接口,由于这个特性,OCRAM可以被连接到SIM_M7的其他master访问。比如DMA。当打开L1 Cache时,OCRAM会通过L1 Cache访问以加快访问速度。
FlexRAM常用配置
FlexRAM划分的16个bank并不是可以自由配置模式,其只有16中组合方式,通过fusemap(offset 0x6d0)[19:16]字段或者IOMUXC_GPR_GPR17[FLEXRAM_BANK_CFG]配置
IOMUXC_GPR_GPR16[FLEXRAM_BANK_CFG_SEL] | 说明 | 备注 |
---|---|---|
0 | 使用fusemap(offset 0x6d0)[19:16]字段对FlexRAM进行配置 | 静态配置,启动时配置 |
1 | 使用IOMUXC_GPR_GPR17[FLEXRAM_BANK_CFG]字段对FlexRAM进行配置 | 动态配置,芯片运行时会根据字段配置而动态调整bank分配 |
FlexRAM配置原则
- 需要快速执行的code存放于ITCM中,比如中断服务函数,中断向量表
- 仅core使用,需要快速访问的date存放于DTIM中,比如任务堆栈
- core为总线矩阵其中一个master,多master访问的数据必须存放于OCRAM或者外扩SDRAM/SRAM。其他不频繁访问的数据可以选择存放于OCRAM,
以上存放位置通过分散加载文件配置