读写.code/.text段有什么用?
Whats the use of read - write .code/.text segment?
我的理解是目标文件的 .code/.text 段用于存储指令和文字,应该是只读的,因为它们在 运行 期间不应该被更改。但是,我遇到了一个源文件 (flash memory driver of STM32 HAL Library),它在编译时占用了一些读写代码段(68 字节)。我从 IAR EWARM 生成的项目映射文件中获得了内存列表和映射信息 IDE。
读写代码内存段的潜在用途是什么? & 是什么导致指令放置在这个段中?
Whats the potential use of read - write code memory segment?
原因有很多,但最重要的有两个。
- 您无法对 运行 代码所在的闪存段进行编程。您需要从 RAM
执行它
- SRAM 是 0WS 内存。如果中断处理程序的延迟很重要,通常会将其放置在 SRAM 内存中。许多 STM32 uC 具有直接总线到内核的 TCM 内存。其中一些甚至将 ITCM 和 DTCM 与核心指令和数据总线紧密耦合,允许并行指令获取和数据访问。
What causes the placement of instructions in this segment?
是从FLASH拷贝到RAM的启动代码。该段是 RW,因为 SRAM 是 RW。该代码会将数据从 FLASH 复制到 SRAM。您的代码稍后(如果 uC 有 MPU)可能会保护这个区域,但从链接描述文件的角度来看,这个区域是 RW。
我的理解是目标文件的 .code/.text 段用于存储指令和文字,应该是只读的,因为它们在 运行 期间不应该被更改。但是,我遇到了一个源文件 (flash memory driver of STM32 HAL Library),它在编译时占用了一些读写代码段(68 字节)。我从 IAR EWARM 生成的项目映射文件中获得了内存列表和映射信息 IDE。
读写代码内存段的潜在用途是什么? & 是什么导致指令放置在这个段中?
Whats the potential use of read - write code memory segment?
原因有很多,但最重要的有两个。
- 您无法对 运行 代码所在的闪存段进行编程。您需要从 RAM 执行它
- SRAM 是 0WS 内存。如果中断处理程序的延迟很重要,通常会将其放置在 SRAM 内存中。许多 STM32 uC 具有直接总线到内核的 TCM 内存。其中一些甚至将 ITCM 和 DTCM 与核心指令和数据总线紧密耦合,允许并行指令获取和数据访问。
What causes the placement of instructions in this segment?
是从FLASH拷贝到RAM的启动代码。该段是 RW,因为 SRAM 是 RW。该代码会将数据从 FLASH 复制到 SRAM。您的代码稍后(如果 uC 有 MPU)可能会保护这个区域,但从链接描述文件的角度来看,这个区域是 RW。