; FLASH起始址 FLASH大小
LR_IROM1 0x0800 0000 0x000F 0000 ;这行描述的是编译后的执行代码存放在FLASH的哪地址,FLASH大小是多少。LR_IROM1是段名,随便写
{
ER_IROM1 0x0800 0000 0x000F 0000 ;这行描述了一个ROM段,表示代码存储的位置和ROM的大小。ER_IROM1是段名,随便起
{
*.o (RESET, +First) ;这行表示所有.o文件中标记为RESET的段要优先存放在这里。接下来才存放其它内容
*(InRoot$$Sections) ;表示用于引导的代码存到这里
.ANY (+RO) ;所有只读ROM数据存在这里
.ANY (+XO) ;其它所有可执行代码存在这里
}
;下面描述了两个RAM分段,当单片机有多个不连续的RAM区域时,可以这样分段。如果代码中定义了固定地址的RAM变量也可以这样分段
RW_IRAM1 0x2000 0000 ;这里是我用的单片机的RAM起始地址0x2000 0000,后面不要加RAM的长度,加了所有未使用的RAM都将
{ ;被指定为ZI Data。这样你会发现你编译出的代码ZI Data异常的大。
.ANY (+RW +ZI) ;此处存放任意可读写的变量,或只读RAM变量
}
;下面这个段描述了我在代码中指定的固定地址变量。也就是我在代码中定义了一个变量在0x2001FC00这个地址。如果没有这样定义变量,则不需要下面的段
RW_IRAM2 0x2001FC00
{
.ANY (+RW +ZI) ;此处存放任意可读写的变量,或只读RAM变量
}
}
以上是我结合网友分享的心得和我自己调试时发现的一些方法。在此记录一下,以后再遇一其它问题再完善。
标签:RW,0000,变量,KEIL,代码,RAM,语法,FLASH,SCT From: https://www.cnblogs.com/bloker/p/18191645