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

    文章

    19155

    浏览量

    229059
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1367

    浏览量

    114517
  • 总线
    +关注

    关注

    10

    文章

    2865

    浏览量

    87973
收藏 人收藏

    评论

    相关推荐

    如何检测电脑的RAM内存

    在现代计算机系统中,随机存取存储器(RAM)是至关重要的组件之一。它负责存储当前正在使用的程序和数据,以便CPU可以快速访问。随着技术的发展,RAM的速度和容量都有了显著的提升,但如何准确地检测
    的头像 发表于 11-11 09:51 195次阅读

    如何选择合适的RAM内存

    随着技术的发展,计算机已经成为我们日常生活中不可或缺的一部分。无论是工作、学习还是娱乐,一台性能出色的计算机都能极大地提高效率和体验。而RAM(随机存取存储器)作为计算机的重要组成部分,直接影响
    的头像 发表于 11-11 09:40 181次阅读

    什么是RAM内存 RAM内存对电脑性能的影响

    什么是RAM内存? RAM(Random Access Memory,随机存取存储器)是电脑中的一种易失性存储器,它用于存储电脑运行时的数据和程序。与硬盘等非易失性存储器不同,RAM在断电后会丢失
    的头像 发表于 11-11 09:38 361次阅读

    什么是RAM?它有哪些作用?

    RAM,即随机存取存储器(Random Access Memory),是计算机系统中至关重要的一个组成部分。它作为一种临时存储设备,具有独特的工作原理和多种关键作用。以下是对RAM的详细探讨,包括其定义、工作原理、作用以及相关信息。
    的头像 发表于 09-26 18:22 718次阅读

    ram和eeprom各有什么特点

    RAM(Random Access Memory,随机存取存储器)和EEPROM(Electrically Erasable Programmable Read-Only Memory,电
    的头像 发表于 09-18 11:11 645次阅读

    什么是RAM和ROM

    RAM(Random Access Memory,随机存取存储器)和ROM(Read-Only Memory,只读存储器)是计算机存储系统中的两种重要组成部分,它们在计算机的性能和功能上扮演着不同的角色。下面将分别详细解释RAM和ROM的定义、特点、工作原理、类型及其在计
    的头像 发表于 08-30 11:38 2847次阅读

    怎么解决MCU RAM空间不够用的问题?

    之前使用沁恒公司的一款BLE芯片CH573,随着代码量的增多,开发到后期时遇到了RAM空间不够用的问题,当时吓了我一跳,以为需要重新换更大RAM的芯片。
    的头像 发表于 05-01 09:57 1298次阅读
    怎么解决MCU <b class='flag-5'>RAM</b>空间不够用的问题?

    易灵思RAM使用--Update5

    易灵思RAM在使用时可以会遇到一些问题,这里把常用的问题总结下。 1、ram初始化文件路径是工程路径 在对ram进行初始化时需要指定文件路径,这里要注意'/'的方向。 (1)如果文件放在工程目录
    的头像 发表于 04-24 08:43 705次阅读
    易灵思<b class='flag-5'>RAM</b>使用--Update5

    易灵思RAM使用--Update4

    易灵思RAM在使用时可以会遇到一些问题,这里把常用的问题总结下。 1、ram初始化文件路径是工程路径 在对ram进行初始化时需要指定文件路径,这里要注意'/'的方向。 (1)如果文件放在工程目录
    的头像 发表于 04-23 14:52 1021次阅读
    易灵思<b class='flag-5'>RAM</b>使用--Update4

    fpga双口ram的使用

    FPGA双口RAM的使用主要涉及配置和使用双端口RAM模块。双端口RAM的特点是有两组独立的端口,可以对同一存储块进行读写操作,从而实现并行访问。
    的头像 发表于 03-15 13:58 921次阅读

    IC设计:ram的折叠设计操作步骤

    在IC设计中,我们有时会使用深度很大,位宽很小的ram。例如深度为1024,位宽为4bit的ram
    的头像 发表于 03-04 15:08 2098次阅读
    IC设计:<b class='flag-5'>ram</b>的折叠设计操作步骤

    MCU复位RAM会保持吗,如何实现复位时变量数据保持

    在使用MCU时,通常大家默认MCU复位时RAM会被复位清零,那实际MCU复位时RAM是什么状态?如何让mcu复位时RAM保持不变呢?
    的头像 发表于 03-01 09:32 2342次阅读
    MCU复位<b class='flag-5'>RAM</b>会保持吗,如何实现复位时变量数据保持

    ram和rom的作用和区别是什么

    RAM(Random Access Memory)是一种计算机内部存储器,而ROM(Read-Only Memory)则是一种只读存储器。两者在计算机系统中扮演着不同的角色,起到不同的作用。本文将
    的头像 发表于 02-04 17:05 4477次阅读

    RAM和ROM的区别,哪个与CPU连接

    RAM(Random Access Memory)和ROM(Read-Only Memory)是计算机中两种主要的存储器件,它们在结构、功能以及与CPU之间的连接上有不同之处。RAM主要用于临时存储
    的头像 发表于 01-31 14:14 2224次阅读

    易灵思RAM使用--Update3

    易灵思RAM在使用时可以会遇到一些问题,这里把常用的问题总结下。 1、ram初始化文件路径是工程路径 在对ram进行初始化时需要指定文件路径,这里要注意'/'的方向。 (1)如果文件放在工程目录
    的头像 发表于 12-12 09:52 616次阅读
    易灵思<b class='flag-5'>RAM</b>使用--Update3