zoukankan      html  css  js  c++  java
  • STM32WB SRAM2

    SRAM2存储:

    1、挂接总线及地址大小

    2、地址镜像

    3、RDP(read protection)等级

     

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

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

    1)在icf文件中定义region

    每个芯片开发商都会针对每款芯片来编写一个.icf文件就是传说中的链接文件。对于基本的应用,这个.icf文件足以满足你的工程需要。但有时也会需要改动,比如当你的项目要添加外部RAM时就要修改一下icf。

    给MEM1、MEM2、MAPPING_TABLE添加了region区,定义region区大小位置。

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

    分散加载文件是一个文本文件,通过编写一个分散加载文件来指定ARM连接器在生成映像文件时如何分配RO,RW,ZI等数据的存放地址

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

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

    3)使用#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段

    地址如下:

    可以看到地址从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大小

    SRAM2a安全区:

    SRAM2b安全区:

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

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

    即SRAM2a安全区起始地址为SRAM2a Base address + [SBRSA x 0x0400] = 0X20030000 + 10 * 1024 = 0X20032800;安全区范围0X20032800-0X20038000

    所以CPU1、CPU2可共享的SRAM2a大小为10K,CPU2专用SRAM2a区大小为32-10=22K

    SRAM2b安全区起始地址为SRAM2b Base address + [SNBRSA x 0x0400] = 0X20038000 + 20 * 1024 = 0X2003D000;安全区范围0X2003D000-0X2003FFFF

    所以CPU1、CPU2可共享的SRAM2b大小为20K,CPU2专用SRAM2b区大小为32-20=12K

    由此可以看出SBRSA、SNBRSA设置的值就是CPU1、CPU2共享的SRAM大小,剩余的数据存储区为CPU2专用SRAM区

  • 相关阅读:
    服务注册发现Eureka之二:高可用服务注册中心
    可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁
    红黑树(Red-Black tree)
    fuser 命令小结
    客户端负载均衡Ribbon之三:AvailabilityFilteringRule的坑(Spring Cloud Finchley.SR2)
    mysql重复记录的查询删除方法
    innodb的锁、update单条记录的花费时间压测
    被kill问题之1:进程物理内存远大于Xmx的问题分析
    服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)
    十二、jdk工具之jcmd介绍(堆转储、堆分析、获取系统信息、查看堆外内存)
  • 原文地址:https://www.cnblogs.com/yeshenmeng/p/10857222.html
Copyright © 2011-2022 走看看