SRAM2存储:

1、挂接总线及地址大小

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

STM32WB SRAM2 随笔 第1张

2、地址镜像

STM32WB SRAM2 随笔 第2张

3、RDP(read protection)等级

 STM32WB SRAM2 随笔 第3张

4、不同等级下的访问状态

 

STM32WB SRAM2 随笔 第4张

STM32WB SRAM2 随笔 第5张

5、声明位于SRAM2区中的数据

1)在.sct文件中声明SRAM2区地址以及可用大小(除开安全区的大小)

STM32WB SRAM2 随笔 第6张

这里定义了地址位于0X20030000大小为0X2800(10K)的存储区,标记为RW_RAM_SHARED

定义了三个段:MAPPING_TABLE、MB_MEM1、MB_MEM2,这三个段共享从地址0X20030000处开始大小为0X2800(10K)的数据存储区

2)使用#define PLACE_IN_SECTION( __x__ )  __attribute__((section (__x__)))来放置数据在哪一段

PLACE_IN_SECTION("MB_MEM2") ALIGN(4) static uint8_t MB_MEM2_var[2]; //MB_MEM2_var放在MB_MEM2段
PLACE_IN_SECTION("MAPPING_TABLE") ALIGN(4) static uint8_t MAPPING_TABLE_var[2]; //MAPPING_TABLE_var放在MAPPING_TABLE段
PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static uint8_t MB_MEM1_var[2]; //MB_MEM1_var放在MB_MEM1段

地址如下:

STM32WB SRAM2 随笔 第7张

可以看到地址从0X20030000处开始

如果定义的数据超过.sct文件中定义的大小,就会报错:

PLACE_IN_SECTION("MB_MEM1") ALIGN(4) static uint8_t MB_MEM1_var1[20000];

XXXXX.axf: Error: L6220E: Execution region RW_RAM_SHARED size (22880 bytes) exceeds limit (10240 bytes). Region contains 4 bytes of padding and 0 bytes of veneers (total 4 bytes of linker generated content).
Finished: 0 information, 0 warning and 1 error messages.

提示超过RW_RAM_SHARED定义的大小限制10K(10240bytes)

6、SRAM2安全区大小

SRAM2分为SRAM2a与SRAM2b两块,每块32KB大小

STM32WB SRAM2 随笔 第8张

SRAM2a安全区:

STM32WB SRAM2 随笔 第9张

SRAM2b安全区:

STM32WB SRAM2 随笔 第10张

通过设置FLASH_SRRVR寄存器可以设置安全区大小,位于安全区内的存储空间只能由CPU2读写访问

STM32WB SRAM2 随笔 第11张

STM32WB SRAM2 随笔 第12张

通过在线仿真可以看到,SBRSA设置为0X0A,SNBRSA设置为0X14

STM32WB SRAM2 随笔 第13张

即SRAM2a安全区为32-10=22K,SRAM2b安全区为32-20=12K

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄