由于从F转到V,keil变为MounRiver,用gcc编译器。原先keil中的定位语句无法使用了。
1、keil在地址0x08005400位置定位一个变量用于存放程序版本号:
#define FW_APPVERSION_BASE 0x08005400
const uint16_t FW_wAppVersion __attribute__((at(FW_APPVERSION_BASE))) = VERSION_APP;
改成MounRiver不能这么写了,按照gcc方法改为:
const uint16_t FW_wAppVersion __attribute__((section (".myBufSection"))) = VERSION_APP;
然后在连接文件.ld的section段中增加下面红色部分,这样做对吗?好像跑起来程序有问题:
SECTIONS
{
.init :
{
_sinit = .;
. = ALIGN(4);
KEEP(*(SORT_NONE(.init)))
. = ALIGN(4);
_einit = .;
} >FLASH AT>FLASH
/* placing my named section at given address: */
.myBufBlock 0x00005400 :
{
KEEP(*(.myBufSection)) /* keep my variable even if not referenced */
} >FLASH AT>FLASH