GCC指定某个c文件里的函数或者变量到某个section

1:定义某个section的属性

MEMORY

{

        FUNC_ADDR (rwx):        ORIGIN = 0x10000,        LENGTH = 0x100

        DATA_ADDR (rwx):        ORIGIN = 0x20000,        LENGTH = 0x100

        DDR (rwx):        ORIGIN = 0x20000000,        LENGTH = 0x100000

}

2:定义func段,将文件file_a.c 、file_b.c、file_ c.c中的函数放到这个段

.func_text_section :

{

        . = ALIGN(4);

        *file_a.c.0 (.text*)

        *file_b.c.0 (.text*)

        *file_c.c.0 (.text*)

        *.o (.func_text_section )        //使用attribute属性指向该段的函数

}  > FUNC_ADDR        AT > DDR

3:定义data段,将文件file_a.c 、file_b.c、file_ c.c中的数据放到这个段

.func_data_section :

{

        = ALIGN(4);

        *file_a.c.0 (.data* .rodata)

        *file_b.c.0 (.data* .rodata)

        *file_c.c.0 (..data* .rodata)

} > DATA_ADDR        AT > DDR

注意需要初始化阶段对代码和数据进行重定向,从DDR的存储地址拷贝到实际的运行地址去。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值