瑞萨芯片在CS+中分区方法
CS+的分区是以图形配置。需要添加分区时,先规划好分区的地址,然后来section来添加。
进入分区

添加分区
注意添加分区时先添加地址栏,然后在新建地址栏后面建立标签。

添加分区名称
填写自己分区名字后需要在后面添加分区类型:.bss .data .const .text
- .bss:表示该分区存储的变量没有初始值,一般直接使用给RAM的分区后缀。
- .data:表示该分区存储的变量有初始值,如果该区在RAM,会没有初始值。
- .test:表示该分区存储代码段。一般用于ROM。

代码中使用分区
如下代码,使用分区CAL,则编译器会查找CAL.data段来存储该变量。
#pragma section r0_disp32 "CAL"
char test[8] = "test";
#pragma section分区映射
一般.data有RAM和ROM。ROM用于存储初始值。RAM是代码寻址使用的地址,如果只有RAM则该变量没有初始值,只有ROM则该变量不能修改。地址映射,则是将ROM存储的变量的地址映射到RAM区。

上电数据迁移
地址映射完成但是该RAM区上电是没有初值的,需要代码进行搬移。

; when the section has the initial value
.section    ".INIT_DSEC_PE0.const", const
.align      4
.dw		   #__s.data,  #__e.data,  #__s.data.R
.dw         #__s.PE0.data,  #__e.PE0.data,  #__s.PE0.data.R
.dw         #__sCAL.data,  #__eCAL.data,  #__sCAL_RAM.data
; when the section without initial value
.section    ".INIT_BSEC_PE0.const", const
.align      4
.dw         #__s.bss,   #__e.bss
.dw         #__s.PE0.bss,   #__e.PE0.bss
;.dw	   #__s.R_RFD_BSS.bss, #__e.R_RFD_BSS.bss注意:
- .INIT_DSEC_PE0.const分区是放的需要数据搬移的起始结束地址,.INIT_BSEC_PE0.const分区是放的需要数据初始化为0的起始结束地址。该文件后面会有具体数据搬移和初始化为0的代码。
- 需要分区搬移数据的分区标号可以在map文件中查看
 
                     
                     
                        
                        