MDK定义程序区间范围外的数组,影响编译bin文件,如何能定义成指针指向FLASH固定位置,而不影响编译bin文件
因为做的远程升级考虑,程序的起点是0x8008000 0x8006000是我用来放些参数的,
我定义了三个数组ClientID、ClientKEY和ClientTOPIC想放在0X8007800开始位置,用MDK通过JLINK烧录的仿真正常,赋初值是因为我发现每次烧录都会在这三个位置全部放入0,所以直接放的初值,应该是烧录时向这些位置烧录数据了,
const double edition __attribute__((at(0X8008200)))= 2.01;
const char ClientID[64] __attribute__((at(0X8007800))) = "Smart_Gateway_Set/20230418";
const char ClientKEY[64] __attribute__((at(0X8007900))) = "8910jqka";
const char ClientTOPIC[128] __attribute__((at(0X8007A00))) = "Smart_Gateway_Set/data";
但是最终影响我生成bin文件了,我想要实现声明三个指针,只会指向这个位置,不需要赋初值,然后不影响编译bin文件
你可以直接定义个指针,指向需要的位置,但是你下面的写法就不只是定义一个指针了,而是定义了一个常量数组,这样的话,编译器就要给这个数组分配存储空间,而你指向的存储空间并不在你的硬件空间内,当然就不行了
不好意思,刚提完,找到解决的办法了
const char* ClientID = (const char *)0X8007800;
const char* ClientKEY = (const char *)0X8007900;
const char* ClientTOPIC = (const char *)0X8007A00;
不知道你这个问题是否已经解决, 如果还没有解决的话:不能解决该问题。