前言:如果需要占用一段地址作为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区间中,而不是指定的地址中