【cw10.x使用分享】将函数定义在指定地址
下面以codewarrior10.3调试KL05Z32为例说明,将函数放到0x1000这个地址上。1,修改连接文件
http://www.myhcs08.com/php/attachment/diary/Mon_1310/84343_50259798ce031ee.jpg
我的连接文件名字为MKL05Z32_flash.ld
在该文件中添加如下内容
.myRomBlock_Fun 0x1000:
{
KEEP(*(.myRomSection_Fun)) /* keep my variable even ifnot referenced */
} > m_text
2,定义我们的变量
在main.c中添加如下代码:
void __attribute__((section (".myRomSection_Fun"))) FuncInRom(int flag)
{
if(flag == 1)printf("Hello Worldn");
}
void __attribute__((section (".myRomSection_Fun"))) FuncInRom2(int flag)
{
if(flag == 1)printf("Hello Worldn");
}
3,编译工程
4,查看map文件
http://www.myhcs08.com/php/attachment/diary/Mon_1310/84343_2178229ec38b1bf.jpg
从map文件看,函数被我们放到了指定的地址处。
例程下载地址:http://www.myhcs08.com/downloads.php?file_id=299
第一次离版主这么近,好好学习一下。 请教,全局变量如何固定在固定的内存区? 这个好像很多人都问,keil里面是修改分散加载文件?
页:
[1]