MEMORY
{
PAGE 0:ROM:origin-0C00h,length=1000h
PAGE 1:RAM:origin=60h,length=20h
}
SECTIONS
{
.text: load =ROM,run=800h
.vectors:> 0FF80h
.const:load >ROM
.bss: load >RAM
}
代码中给出了两个页面(Page):Page 0 和 Page 1。每个页面都有不同的类型和地址范围。
Page 0 是只读存储器(ROM)页面,起始地址为0C00h,长度为1000h。在此页面中,可以读取从0C00h到0C00h+1000h的地址范围内的数据。
Page 1 是随机存储器(RAM)页面,起始地址为60h,长度为20h。在这个页面中,可以读取从60h到60h+20h的地址范围内的数据。
代码中的SECTIONS部分定义了不同的代码段和数据段的加载和运行位置。
.text 段的加载位置是ROM,并且在运行时的起始地址是800h。在ROM中的代码将被加载到单片机的0C00h+800h的地址开始处,并从该地址开始运行。
.vectors 段的加载位置是大于0FF80h的地址。这可能是中断向量表的位置,其中包含处理器中断的地址。
.const 段被加载到ROM中。其中定义的常量数据将存储在ROM的地址范围内。
.bss 段被加载到RAM中。其中定义的未初始化的全局变量和静态变量将存储在RAM的地址范围内。