data_section有两种写法,写法如下 :
一:c
#pragma DATA_SECTION(oddemo_rangeAzimuthHeatMap, ".l3data");
#pragma DATA_ALIGN(oddemo_rangeAzimuthHeatMap, 8);
float oddemo_rangeAzimuthHeatMap[ODDEMO_ANGLEHEATMAP_BUF_SIZE];
.l3data: type=NOINIT, start(_L3data_start), size(_L3data_size), load=L3SRAM PAGE 1
第一行是将某一个变量放在某一个段中
第二行是所放在这个段中以8字节对齐的位置
第三行是定义该变量包含有多大的位置大小
第四行是定义这个段一般在makefile,或者.cmd文件中来定义,里第一个参数是不初始化,防止里面有其它代码,第二个是开始位置,第三个是段长,第三个参数是加载到哪一个区, 第四个参数是 PAGE 0代表程序空间,PAGE 1代表数据空间
关键是不初始化也可以。
这种写比较常用于dsp中
但对于其它的片子,就不能这样:
二:c++
#pragma data_seg("MyData")
int g_Value; // Note that the global is not initialized.
#pragma data_seg()
对于这个话,如果不进行初始化的话则它会被编译器放在bss段(未初始化数据段中)。
以上方法对于进程间通信很重要。在应用时要特别注意。