嵌入式面试题_1 如何将一个函数编译定位到指定的falsh地址

之前的项目中没有注意到这个问题,今天面试的时候,面试官老师问到了,就去百度学了一下,很简单,就以我的工程做个演示,具体步骤如下:
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文件:
在这里插入图片描述

在这里插入图片描述
修改变量所在地址也是类似的方法。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值