之前的项目中没有注意到这个问题,今天面试的时候,面试官老师问到了,就去百度学了一下,很简单,就以我的工程做个演示,具体步骤如下:
1、打开魔术棒,点击Linker(链接)选项…
2、设置我们规定的flash地址
注意:这个当时0x08060000是随机写的,超出了flash的大小,只做演示用。
3、创建一个宏定义如下:
#define MY_ROM __attribute__ ((section("my_rom")) //用这个宏定义就可以去修饰函数了。
4、定义一个测试函数
void test(void) MY_ROM;
void test(void)
{
printf("test_flash\r\n");
}
//或者
void test(void);
MY_ROM void test(void)
{
printf("test_flash\r\n");
}
5、查看.map文件,具体怎么看.map
点击:https://blog.csdn.net/sjxpf922/article/details/118407691
我看网上还有其他的方法:
不用上一个办法的第1,2,的步骤,直接在函数声明的后面加上
void test(void) __attribute__ ((section(".ARM.at_0x08050000")));
void test(void)
{
printf("testmyrom\r\n");
}
编译之后查看.map文件:
修改变量所在地址也是类似的方法。