我正在使用GCC for ARM V4.8.3开发一个嵌入式C项目。我想要实现的是将结构放入MCU的FLASH(ROM)存储器中。由于我的previous post我认为每个被定义为常量(const
)的对象标识符都要放入.rodata
部分,在我的情况下(根据liker脚本)是由.text
嵌套,另一方面,它驻留在FLASH存储区域内。
我倾向于这么认为,因为我检查了一个对象定义,这是一个常量指针:
const char * const project_stringInvalidCharacter = "Invalid Character! \n";
如果限定为常量,则指针位于FLASH中。
但是,当我定义了一个类型为int(const uint_8 myObj;
)的常量对象时,我看到它的地址代表了一个属于RAM或.bss
区域的数字。
换句话说,const
适用于指针,但不适用于整数类型。通过工作我的意思是它做了我所期望的,从我之前的帖子推断,即将标识符“放置”到FLASH(ROM)中。
答案 0 :(得分:5)
也许编译器有点困惑,因为你没有为常量赋值。 尝试:
const uint_8 myValue=42;
并查看它的位置。