关于内存分配的一些代码格式
1.内存起名(把内存的实际地址分区间取名)
memery{
VECS : o = 0x10800000 l = 0x00000200
BOOT : o = 0x10800200 l = 0x00000200
IRAM : o = 0x10800400 l = 0x0001FA00
DDR2 : o = 0x80000000 l = 0x10000000
}
2.起段名,并对应内存名
section{
.bss > IRAM
.cinit > IRAM
.cio > IRAM
.const > DDR2
.data > IRAM
.far > IRAM
.stack > IRAM
.system > IRAM
.text > IRAM
.ddr2 > DDR2
}
这里的段名.bss ~ .ddr2
有的是编译器直接起好了名字,有的是自己起的名字,
.ddr2这个段就是自己起的名字。段是用来存放某种类型的数据的,
我们把有特定含义或者相同点的数据放到自己想要的段里面,方便管理,
.bss、.text等都是C编译器编译之后自己生产的段
段只是在名义上说明了或者规定了变量存在哪,但是还没有说明具体存放在哪个内存区域
只有.bss > IRAM语句执行了,才能将 变量 段 内存地址联系在一起,这句话的意思是
段.bss对应到内存的IRAM块,同时我们(或者编译器)规定哪些变量存放在什么段内,这就将变量直接对应到内存上了
3.将变量规定到特定的段内(我们想自己规定,不按照编译器的默认规定,如果自己不规定,编译器会自己默认有一套数据存放到段的分配方式)
在变量定义的文件中:
#pragma data_section(name_var, ".far"); //将名字为name_var的变量定义到了“.far”这个段中;
#pragma data_align(name_var, .......); //这个可以设置数据的一些存放读取格式;
float name_var[100]; //定义了一个float类型的数组在“.far”段中