ARM单片机的内存分布(重要)
一、S32K344的内存布局
MEMORY
{
int_pflash : ORIGIN = 0x00400000, LENGTH = 0x003D4000 /* 4096KB - 176KB (sBAF + HSE)*/
int_dflash : ORIGIN = 0x10000000, LENGTH = 0x00020000 /* 128KB */
int_itcm : ORIGIN = 0x00000000, LENGTH = 0x00010000 /* 64KB */
int_dtcm : ORIGIN = 0x20000000, LENGTH = 0x0001F000 /* 124KB */
int_stack_dtcm : ORIGIN = 0x2001F000, LENGTH = 0x00001000 /* 4KB */
int_sram : ORIGIN = 0x20400000, LENGTH = 0x000330F0 /* 184KB, needs to include int_sram_fls_rsv */
int_sram_fls_rsv : ORIGIN = 0x204330F0, LENGTH = 0x00000100
int_sram_no_cacheable : ORIGIN = 0x204331F0, LENGTH = 0x0000FF00 /* 64KB, needs to include int_sram_results */
int_sram_results : ORIGIN = 0x2043FF00, LENGTH = 0x00000100
int_sram_shareable : ORIGIN = 0x20440000, LENGTH = 0x00004000 /* 16KB */
ram_rsvd2 : ORIGIN = 0x20444000, LENGTH = 0 /* End of SRAM */
}
- 对上述区域的的功能介绍:
int_pflash:
作用: 内部程序闪存(Program Flash),用于存储程序代码。
地址范围: 从0x00400000到0x007B3FFF(4096KB - 176KB)。
备注: 这里减去的176KB可能是用于存储启动引导程序(sBAF)和硬件安全环境(HSE)。
int_dflash:
作用: 内部数据闪存(Data Flash),用于存储初始化数据。
地址范围: 从0x10000000到0x1001FFFF(128KB)。
int_itcm:
作用: 内部指令TCM(Tightly Coupled Memory),用于存储需要快速访问的代码。
地址范围: 从0x00000000到0x0000FFFF(64KB)。
int_dtcm:
作用: 内部数据TCM,用于存储需要快速访问的数据。
地址范围: 从0x20000000到0x2001EFFF(124KB)。
int_stack_dtcm:
作用: 堆栈使用的内部数据TCM,用于存储函数调用时的堆栈信息。
地址范围: 从0x2001F000到0x2001FFFF(4KB)。
int_sram:
作用: 内部静态随机存取存储器(Static RAM),用于存储变量和堆栈。
地址范围: 从0x20400000到0x20433000(184KB)。
int_sram_fls_rsv:
作用: 内部SRAM中保留的一段内存,可能用于特定目的,如闪存模拟。
地址范围: 从0x204330F0到0x204330FF(256字节)。
int_sram_no_cacheable:
作用: 不可缓存的内部SRAM,用于存储需要直接内存访问的数据。
地址范围: 从0x204331F0到0x204430EF(64KB)。
int_sram_results:
作用: 内部SRAM中用于存储结果的区域。
地址范围: 从0x2043FF00到0x2043FFFF(256字节)。
int_sram_shareable:
作用: 可共享的内部SRAM,用于存储多个任务或进程共享的数据。
地址范围: 从0x20440000到0x20443FFF(16KB)。
ram_rsvd2:
作用: 保留的RAM区域,可能用于未来的扩展或特定的硬件需求。
地址范围: 从0x20444000开始,长度未指定。
- 常见粗略的单片机内存分配: