问题描述: GCC编译器不支持__attribute__ ((at(addr)))指令,从而出现警告情况,提示信息为“warning: ’at’ attribute directive ignored”,
该命令__attribute__ ((at(addr)))在Keil中给的使用方式图图1所示。
需要使用__attribute__ ((section(“name”)))。
图1 Keil中定义数组于某个地址的方式
解决办法:使用__attribute__ ((section(“name”))),由于section的使用方法在国内较少,从而只能去国外查找,最后在网站 找到了解决办法。
第一步
由于使用了GCC编译器,从而一定有一个连接文件,该文件的后缀名为.lds。
第二步
(添加变量到Flash中):
打开文件后,将Flash中的变量添加到图2的②中。
①是对Flash中的函数,中断等进行内存的初始化,
③是开始对RAM中的变量进行初始化。
图2 Flash中段的添加
第二步(添加变量到RAM中):
RAM中段的添加如图3中的
②所示。
①是栈的初始化,
③是定义的一些变量的初始化。
图3 RAM中段的添加
第三步
将数组定义到对应的段中。如定义到Flash中如图4所示。
图4 变量定义于Falsh中的方式
问题描述: GCC编译器不支持__attribute__ ((at(addr)))指令,从而出现警告情况,提示信息为“warning: ’at’ attribute directive ignored”,
该命令__attribute__ ((at(addr)))在Keil中给的使用方式图图1所示。
需要使用__attribute__ ((section(“name”)))。
图1 Keil中定义数组于某个地址的方式
解决办法:使用__attribute__ ((section(“name”))),由于section的使用方法在国内较少,从而只能去国外查找,最后在网站 找到了解决办法。
第一步
由于使用了GCC编译器,从而一定有一个连接文件,该文件的后缀名为.lds。
第二步
(添加变量到Flash中):
打开文件后,将Flash中的变量添加到图2的②中。
①是对Flash中的函数,中断等进行内存的初始化,
③是开始对RAM中的变量进行初始化。
图2 Flash中段的添加
第二步(添加变量到RAM中):
RAM中段的添加如图3中的
②所示。
①是栈的初始化,
③是定义的一些变量的初始化。
图3 RAM中段的添加
第三步
将数组定义到对应的段中。如定义到Flash中如图4所示。
图4 变量定义于Falsh中的方式
举报