//---------------------------------------------------------------------------------------------------
分散加载文件(scatter file):该文件用来指定ARM链接器在生成可执行文件时如何分配RO\RW\ZI等数据的存放地址
分散加载区域分为两部分:加载区;执行区。每个加载区可以创建一个或多个执行区
//---------------------------------------------------------------------------------------------------
一个标准的分散加载文件(KL25):
LR_IROM1 0x00000000 0x00020000 ; 第一个加载区,名为LR_IROM1,起始地址0x00000000,长度0x00020000 //这个加载区其实就是KL25的flash,128k
{
ER_IROM1 0x00000000 0x00020000 ; 第一个加载区中的第一个执行区,名为ER_IROM1,起始地址0x00000000,长度0x00020000 //第一个执行区其实就是整个flash
{
*.o (RESET, +First) ; *.o:匹配所有目标 ; RESET:汇编中定义的段名 ; +First:指定RESET段存放在执行区的起始位置 //这里其实就是程序的入口
*(InRoot$$Sections)
.ANY (+RO) ; .ANY:匹配所有目标文件和库 ; +RO:只读属性 //其实就是把所有的剩余代码和常量存放在这里
}
RW_IRAM1 0x1FFFF000 0x00001000 ; 第一个加载区中的第二个执行区,名为RW_IRAM1,起始地址0x1ffff000,长度0x00001000 //第二个执行区其实就是KL25的低地址RAM片,4k,KL25RAM分为2片
{
.ANY (+RW +ZI) ; +RW +ZI:所有变量
}
}
分散加载文件(scatter file):该文件用来指定ARM链接器在生成可执行文件时如何分配RO\RW\ZI等数据的存放地址
分散加载区域分为两部分:加载区;执行区。每个加载区可以创建一个或多个执行区
//---------------------------------------------------------------------------------------------------
一个标准的分散加载文件(KL25):
LR_IROM1 0x00000000 0x00020000 ; 第一个加载区,名为LR_IROM1,起始地址0x00000000,长度0x00020000 //这个加载区其实就是KL25的flash,128k
{
ER_IROM1 0x00000000 0x00020000 ; 第一个加载区中的第一个执行区,名为ER_IROM1,起始地址0x00000000,长度0x00020000 //第一个执行区其实就是整个flash
{
*.o (RESET, +First) ; *.o:匹配所有目标 ; RESET:汇编中定义的段名 ; +First:指定RESET段存放在执行区的起始位置 //这里其实就是程序的入口
*(InRoot$$Sections)
.ANY (+RO) ; .ANY:匹配所有目标文件和库 ; +RO:只读属性 //其实就是把所有的剩余代码和常量存放在这里
}
RW_IRAM1 0x1FFFF000 0x00001000 ; 第一个加载区中的第二个执行区,名为RW_IRAM1,起始地址0x1ffff000,长度0x00001000 //第二个执行区其实就是KL25的低地址RAM片,4k,KL25RAM分为2片
{
.ANY (+RW +ZI) ; +RW +ZI:所有变量
}
}