RT1052系统包含的存储器
存储器 | 容量 | 访问速度 | 访问方式 | 特性 |
---|---|---|---|---|
SPI-NorFlash | 标配32MB | 5 | FlexSPI外设 | FLASH,板载外部存储器(掉电保存) |
SDRAM | 标配 32MB | 4 | SEMC 外设 | DRAM,板载外部存储器 |
OCRAM | 默认 256KB | 3 | 32 位总线 | SRAM, RT1052 芯片内部的通用缓存,使用 32 位总线访问 |
DTCM | 默认 128KB | 2 | 双 32 位总线 | SRAM, RT1052 芯片内部的“数据紧耦合缓存”, 只可用于缓存数据 |
ITCM | 默认 128KB | 1 | 64 位总线 | SRAM, RT1052 芯片内部的“指令紧耦合缓存”, 只可用于缓存指令(代码) |
1.代码存储在外部NorFlash中并且执行
代码保存在 SPINorFlash 中, 内核通过 FlexSPI 外设从 SPI-NorFlash 中加载代码并执行,而 DTCM、
OCRAM、 SDRAM 存储器则用于存储 C 语言的堆栈、以及显存等内容,即内核从这些位置
加载运行的数据。
由于 SPI-NorFlash 掉电后能正常保存内容,所以在下一次上电后,系统仍然能正常执
行 NorFlash 中保存的程序,所以在发布应用的时候通常采用把代码保存到 NorFlash 的这种
方式。
2.代码存储在 RAM 中并执行
无论代码是存储在 ITCM、 OCRAM 或 SDRAM,它们相对于 NorFlash 的写入速度都
快得多,但由于掉电后代码会丢失,所以这种运行方式通常只用于开发阶段进行调试。
3.代码存储在 FLASH,在 RAM 中执行
系统平时把代码存储在 NorFlash,这能保证掉电后也能正常存储,
在上电后把代码从 NorFlash 复制到 ITCM、 OCRAM 或 SDRAM 中, 在正式运行时,内核
直接从这些 RAM 内加载代码并执行, 由于内核对 RAM 的访问速度更快,所以这能提高代
码的执行速度,尤其是与内核联系紧密、使用 64 位线宽的 ITCM,它是专门设计需要高速
执行代码的。