2013年12月3日星期二

ARMlink链接器中分散加载文件的base_address的理解

以下的是个人理解,仅供参考!
  ARMlink链接器中分散加载文件base_address加载区(load region)表示的是程序存储器的地址,其值范围根据所选ARM单片机的“内存”中的Flash区(Flash Memory)的大小而定。
  在执行区(execution region)时根据输入部分的属性而定,如果输入部分(input section)都是+RO(read only code and data)属性的话,那么你输入的base_address值表示的是程序存储器(Flash Memory)的地址;如果输入部分是+RW+ZI或者两者,那么执行区base_address地址表示的是内存(RAM)的地址!
STM32F030x memory map

Flash Memory

8051转ARM学习(它们之间的区别)

8051ARM的区别

ARM的内存模型(Memory mode)

只针对Cortex-M0系列的单片机,其他暂时没看过,估计差不多!
ARM的内存模型与8051的不同,ARM的“内存”地址范围为4GB,涵盖了程序储存器,RAM,外部RAM等等;而8051的就不同,内存和代码存储器(ROM)的地址不重叠,只是寄存器和内存的部分地址重叠。
下面的图显示了两个不同芯片的内存模型
8051单片机的内存模型

ARM官方的Cortex-M0处理器所说明的“内存”模型

ST厂商给出的STM32F0的“内存”模型,其实与上图一样