指定全局变量占用一段内存空间的方法

前言:如果需要占用一段地址作为buffer使用,如果只用uint8_t *ring_buffer = (uint8_t *)0x20000000;形式,则会导致后续空间使用时侵占别的文件申明的空间,产生未知的问题。

1.指定空间,这段空间在sct文件中未被使用

#define BUFFER_ADDR 0x20000200
#define BUFFER_SIZE 512
uint8_t ring_buffer[BUFFER_SIZE] __attribute__((at(BUFFER_ADDR))); 

2.在sct文件中申明一段空间给指定的文件使用
sct文件

   BUFFER_IRAM 0x20000200 0x300 ;RAM  512BYTE
    {
        examples.o (+RW , +ZI)
    } 	

C文件

uint8_t ring_buffer[BUFFER_SIZE] __attribute__((section("BUFFER_IRAM"))); 

通过map文件可以发现该文件所有变量已经定义在指定ram区间中,而不是指定的地址中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值