打印

关于IAR中代码定位问题(搞不好哥就要改行去日本了)

[复制链接]
4436|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
0410910218|  楼主 | 2012-6-20 15:40 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 0410910218 于 2012-6-20 15:56 编辑

10分算不算多?呵呵
工具IAR,目标器件STM32F103VB
问题:
我想把Test1(), Test2()这两个函数放在iapcode这个区:
#pragma location = "iapcode"    //接下来的代码放在iapcode区
void Test1(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
void Test2(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
结果只有Test1()是在iapcode区,而Test2()仍在默认的区
如果在Test2()前面加上#pragma location = "iapcode" 的话:
#pragma location = "iapcode"    //接下来的代码放在iapcode区
void Test1(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
#pragma location = "iapcode"    //接下来的代码放在iapcode区
void Test2(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
两个函数都在iapcode区了。
但是我不要在每个函数前面都加一句废话, ugly!


IAR有没有像MDK中#pragma arm section [section_sort_list]这样似的编译命令?像下面这样的?
#pragma arm section code = "iapcode"    //接下来的代码放在iapcode区
void Test1(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
void Test2(void)
{
    u32 u32Temp=uc32GlobalVarible;
    u32Temp++;
}
#pragma arm section code    //接下来的代码放在默认区
我现在只能每个函数、每个变量去指定,想想你都会蛋疼.
沙发
香水城| | 2012-6-20 15:58 | 只看该作者
本帖最后由 香水城 于 2012-6-20 16:01 编辑

可以把一个.C文件中的所有函数都放在一个指定区域

在link文件中指定:
place at address mem:0xxxxxxxx { section .text object xxxx.o };

使用特权

评论回复
板凳
0410910218|  楼主 | 2012-6-20 16:11 | 只看该作者
香主,怎么做?修改icf文件?

2# 香水城

使用特权

评论回复
地板
香水城| | 2012-6-20 16:37 | 只看该作者
是的

使用特权

评论回复
5
0410910218|  楼主 | 2012-6-20 16:48 | 只看该作者
搞定了,方法:
1、place in IAP_region   {readonly object iap.o}; /* 把iap的代码和常量都保存在IAP_region*/
2、place in IAP_region   {readonly code object iap.o}; /* 把iap的代码都保存在IAP_region*/
3、place in IAP_region   {readonly data object iap.o}; /* 把iap的常量都保存在IAP_region*/
多谢香水城主
验证码真难啊,是为了防止色盲混入论坛吗?

使用特权

评论回复
6
Aaron238| | 2012-6-29 10:22 | 只看该作者
这样做的目的是什么?? 有什么好处???

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

7

帖子

1

粉丝