0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

你以为的RAM不是你以为的RAM~

朱老师物联网大讲堂 2024-04-05 08:09 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、DTCM和AXI连接的RAM

STM32H7系列处理器内部有多个RAM空间,每个RAM空间的大小和响应速度都不一样。这里面我们重点关注DTCM总线矩阵连接的128KB RAM和AXI总线矩阵连接的512KB RAM。

d2089c24-f2e0-11ee-9118-92fbcf53809c.png

DTCM RAM 128KB:MDK配置是IRAM1:起始地址是0x20000000,大小是0x20000,128KB

AXI RAM 512KB: MDK配置是IRAM2:起始地址是0x240000000,大小是0x80000,152KB

d1fe83ce-f2e0-11ee-9118-92fbcf53809c.gif

二、lds链接脚本的内存分配

通过上述的分析,我们知道AXI RAM空间要比DTCM RAM空间是要大很多的,那么我们lds链接脚本该如何设置,才能使上电后start_xx.s汇编文件启动能将RW段、ZI段、HEAP、STACK能分配到AXI RAM 512KB 区域呐?取决于lds链接脚本的内存分配。首先我们分析一下RW段、ZI段、HEAP、STACK在内部RAM中是如何分配的(HEAP和STACK实际上也属于ZI段),这里面有几个概念需要清楚。通过下图的描述,我们能看到各个段的含义。

d2204f4a-f2e0-11ee-9118-92fbcf53809c.png

RAM中上述的段分配情况通过以下图表进行说明。从RAM起始地址开始依次存放RW-DATA,BSS、HEAP、STACK和剩余空间。这里举例是以0x20000000开始的128KB AXI RAM进行举例说明。

d2242dea-f2e0-11ee-9118-92fbcf53809c.png

既然有两个RAM存储区,那么我们的RW-DATA、BSS、HEAP、STACK应该链接在哪一个RAM区,这个时候就需要用到.lds链接脚本,链接脚本的作用就是对RAM和FLASH的分配做指定。

在MDK里有两种类型的链接脚本,一种链接脚本是MDK编译器自动指定,用户不需要关注,另外一种脚本是用户自定义,通过自定义脚本设定多片RAM的指定,和每一片RAM的具体用法。

用户自定义的用法是通过点击魔术棒->linker->按照下图的设置,然后点击Edit按钮就会打开链接脚本。

d230b736-f2e0-11ee-9118-92fbcf53809c.png

链接脚本的定义如下:通过注释我们知道有俩片RAM区,一片是RW_IRAM1(DTCM RAM:128KB,地址是0x20000000),一片是RW_IRAM2(AXI RAM:512K,地址是0x24000000),这里配置为RW_IRAM1注释掉不使用,使用RW_IRAM2。

.ANY (+RW +ZI),意思是将RW-DATA、ZI(BSS、HEAP、STACK)分配到RW_IRAM2内存区域。在程序上电启动时就会将此RAM使用起来,程序运行的临时变量、全局变量等都在RW_IRAM2中运行。

d244efd0-f2e0-11ee-9118-92fbcf53809c.png

此时我们发现AXI RAM 128KB空间没用到。如何将这个空间利用起来?rs485_sample_master.o (+RW +ZI)这句话的意思是将rs485_sample_master.c的这个文件中所有定义在RW_DATA段、ZI段的变量全部分布在RW_IRAM1这个RAM空间,也就是AXI RAM 128KB空间。

.ANY (axi_ram_128kb)这句话的意思是用户可以将任意的变量等按照一定的规则定义到RW_IRAM1这个RAM空间,也就是AXI RAM 128KB空间, (axi_ram_128kb) 的含义是这个将RW_RAM1这个内存区声明为axi_ram_128kb section。

在具体的C语言代码中的定义方式如下:

d25649d8-f2e0-11ee-9118-92fbcf53809c.png

我们查看.map文件可以看到具体的定义是否有效,或者通过串口查看变量分配地址。通过.map文件的查看,我们可以确定程序中定义的变量确实分配到0x20000000为起始地址的AXI RAM 128KB空间了。

rs485_sample_master.o文件的RW、ZI段也分配在了0x20000000为起始地址的AXI RAM 128KB空间了。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20335

    浏览量

    255052
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1401

    浏览量

    121012
  • 总线
    +关注

    关注

    10

    文章

    3060

    浏览量

    91870
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RAM存储器中的地址冲突场景

    RAM 是基于 FPGA 的系统设计中的关键组件,通常用于其高速数据存储功能。然而,地址冲突可能会带来重大挑战,影响系统的可靠性和性能。本文我们将探讨简单双端口 RAM 模块中地址冲突的概念,并
    的头像 发表于 04-24 09:59 4330次阅读
    块<b class='flag-5'>RAM</b>存储器中的地址冲突场景

    深入解析MXD1210非易失性RAM控制器

    深入解析MXD1210非易失性RAM控制器 引言 在电子设备的设计中,数据的安全性和可靠性至关重要。非易失性RAM控制器在保障数据不丢失方面发挥着关键作用。今天,我们就来深入了解一下MAXIM公司
    的头像 发表于 04-04 10:40 293次阅读

    深入解析DS1557:功能强大的非易失性计时RAM

    深入解析DS1557:功能强大的非易失性计时RAM 在硬件设计领域,一款优秀的计时RAM对于系统的稳定运行和数据存储至关重要。今天,我们就来深入探讨Maxim公司的DS1557,这款4Meg、非易失
    的头像 发表于 03-24 15:20 347次阅读

    的EMC瓶颈,不是经验不够,是体系不全

    EMC的EMC瓶颈,不是经验不够,是体系不全现在的状态,是不是这样?产品送测前,心里完全没底,不知道哪一项会挂传导发射超标,换了十几种电容电感,还是压不下去静电打几下,系统重启,
    的头像 发表于 03-10 16:41 478次阅读
    <b class='flag-5'>你</b>的EMC瓶颈,<b class='flag-5'>不是</b>经验不够,是体系不全

    技术剖析:Cypress CY15B004Q 4 - Kbit 串行 F - RAM

    技术剖析:Cypress CY15B004Q 4 - Kbit 串行 F - RAM 在嵌入式系统的应用中,非易失性存储器是不可或缺的一部分。今天我要分享的 Cypress 公司
    的头像 发表于 02-26 17:20 715次阅读

    探索MXD1210非易失性RAM控制器:特性、应用与设计要点

    MAXIM公司的MXD1210非易失性RAM控制器,了解其特性、应用场景以及设计中的关键要点。 文件下载: MXD1210.pdf 由于调用接口失败,暂时无法为搜索MXD1210非易失性RAM控制器的应用场景相关内容。下面我将
    的头像 发表于 02-11 15:30 253次阅读

    FM25V10 1-Mbit 串行 F-RAM 芯片的特性与应用解析

    FM25V10 1-Mbit 串行 F-RAM 芯片的特性与应用解析 在电子设计领域,找到一款性能卓越、功能丰富且稳定可靠的非易失性存储器至关重要。今天,我们就来深入探讨 Cypress 公司推出
    的头像 发表于 01-04 17:25 859次阅读

    Infineon SEMPER NOR Flash与HYPERRAM™ 2.0 Gen2 Flash+RAM MCP产品解析

    Infineon SEMPER NOR Flash与HYPERRAM™ 2.0 Gen2 Flash+RAM MCP产品解析 引言 在汽车集群和工业HMI应用中,通常会使用NOR Flash来存储
    的头像 发表于 12-20 16:20 1379次阅读

    Amphenol 38999 Ram-Lock 推拉接口连接器:设计与应用指南

    Amphenol 38999 Ram-Lock 推拉接口连接器:设计与应用指南 在电子设备的设计中,连接器的选择至关重要,它直接影响到设备的性能、可靠性和易用性。今天,我们来深入了解一下
    的头像 发表于 12-11 10:55 618次阅读

    MCU代码需要搬到RAM中才能运行吗?不这样做会有什么不妥嘛?

    是块,不能对指令直接寻址,因此不能直接运行其中的代码。 因此保存在nand flash中的程序不加载到ram中运行不了。即的硬盘中的Windows不加载到内存条中,运行不起来。
    发表于 12-04 07:39

    使用J-Link Attach NXP S32K3导致对应RAM区域被初始化成0xDEADBEEF

    在IAR Embedded Workbench for Arm中使用J-Link Attach NXP S32K3的时候,会提示对应RAM区域被初始化成0xDEADBEEF,导致对应RAM区域的数据被“篡改”。
    的头像 发表于 11-03 15:26 5588次阅读
    使用J-Link Attach NXP S32K3导致对应<b class='flag-5'>RAM</b>区域被初始化成0xDEADBEEF

    ram ip核的使用

    1、简介 ram 的英文全称是 Random Access Memory,即随机存取存储器, 它可以随时把数据写入任一指定地址的存储单元,也可以随时从任一指定地址中读出数据, 其读写速度是由时钟频率
    发表于 10-23 07:33

    USB读RAM buffer使用规范建议

    Questions:硬件和软件同时去访问 USB RAM buffer 造成数据乱掉或丢失 造成乱码流程: 软件设置 USB Valid 关总中断,USB 收数据到 RAM Buffer,此时
    发表于 09-22 17:27

    Xilinx Shift RAM IP概述和主要功能

    Xilinx Shift RAM IP 是 AMD Xilinx 提供的一个 LogiCORE IP 核,用于在 FPGA 中实现高效的移位寄存器(Shift Register)。该 IP 核利用
    的头像 发表于 05-14 09:36 1279次阅读

    浅谈MCU片上RAM

    MCU片上RAM是微控制单元(MCU)中集成于芯片内部的随机存取存储器,主要用于程序运行时的数据存储与高速读写操作。以下是其核心要点: 一、定义与分类 ‌片上RAM是MCU内部存储单元的一部分
    的头像 发表于 04-30 14:47 1549次阅读