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

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

3天内不再提示

应用分享| HPM6000系列片上SRAM揭秘

先楫半导体HPMicro ? 2022-09-19 11:02 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

72cd000e-35f6-11ed-9ade-dac502259ad0.jpg

本期开发笔记由费神编写主要会为大家介绍HPM6000系列的各类片上SRAM并结合Segger Embedded Studio的linker文件介绍,提供了如何使用这些SRAM的建议,赶快来了解吧~

简介

在HPM6000系列微控制器上,集成了大容量的SRAM,可供用户存放代码,数据等,满足各类应用的需要。其中片上SRAM有多种分类,包括RISC-V CPU的指令和数据本地存储器ILM,DLM,通用内存AXI SRAM,AHB SRAM等,还包括AHB SRAM,APB SRAM等。这些SRAM的最高访问频率不同,数据保持的条件也不同,恰当地使用他们,可以极大的提升用户应用的效率。

片上SRAM介绍

HPM6000系列高性能MCU均集成了大容量片上SRAM,总结如下:

72f63a8c-35f6-11ed-9ade-dac502259ad0.pngHPM6000系列片上SRAM总结2.1 RISC-V CPU的本地存储器ILM和DLM
HPM6000系列高性能微控制器的RISC-V CPU都包含有指令和本地存储器,分别称为ILM(Instruction Local Memory,指令本地存储器)和DLM(Data Local Memory,数据本地存储器)。如下图所示,RISC-V CPU的ILM和DLM各自对应了内存映射表(Memory Map)中的2块地址映射区域。7309fce8-35f6-11ed-9ade-dac502259ad0.pngHPM6700系列ILM/DLM示意图ILM的映射有:
ILM,以HPM6700系列为例,容量256 KB,地址范围为0x00000000 ~ 0x0003FFFF。该地址区域只有RISC-V CPU可以通过自身的ILM接口访问,RISC-V CPU从ILM取指时,可以实现零等待周期,即ILM的访问时钟频率,与RISC-V CPU主频一致,并且RISC-V CPU的一级高速指令缓存I-Cache-L1对ILM无效。CPUx_ILM_SLV,以HPM6700系列的CPU0 ILM为例,容量256 KB,地址范围为0x01000000 ~ 0x0103FFFF。该地址区域也称为ILM0镜像,该地址区域可以供总线上所有的主设备访问,如DMA等,包括RISC-V CPU自身,也可以通过CPUx_ILM_SLV访问ILM。如图所示,CPUx_ILM_SLV是AXI系统总线的从接口,其访问时钟频率与总线时钟频率一致。RISC-V CPU访问CPUx_ILM_SLV时,一级高速指令缓存I-Cache-L1是有效的。
DLM的映射有:DLM,以HPM6700系列为例,容量256 KB,地址范围为0x00080000 ~ 0x000BFFFF。该地址区域只有RISC-V CPU可以通过自身的DLM接口访问,RISC-V CPU从DLM读写数据时,可以实现零等待周期,即DLM的访问时钟频率,与RISC-V CPU主频一致,并且RISC-V CPU的一级高速指令缓存D-Cache-L1对DLM无效。CPUx_DLM_SLV,以HPM6700系列的CPU0 DLM为例,容量256 KB,地址范围为0x01040000 ~ 0x0107FFFF。该地址区域也称为ILM0镜像,该地址区域可以供总线上所有的主设备访问,如DMA等,包括RISC-V CPU自身,也可以通过CPUx_DLM_SLV访问ILM。如图所示,CPUx_DLM_SLV是AXI系统总线的从接口,其访问时钟频率于总线时钟频率一致。RISC-V CPU访问CPUx_DM_SLV时,一级高速指令缓存D-Cache-L1是有效的。

2.1.1HPM6700系列

HPM6700系列微控制器上,指令/数据本地存储器的2块地址映射xLM和CPUx_xLM_SLV虽然地址不同,但访问的是同一块物理内存,RISC-V CPU可以通过xLM访问自身的指令/数据本地存储器,而其他总线主设备,比如DMA,需要通过CPUx_xLM_SLV来访问CPUx的指令/数据本地存储器。注意,RISC-V CPU本身,也可以通过CPUx_xLM_SLV访问自己的指令/数据本地存储器。
HPM6700系列支持双核RISC-V CPU,CPU从xLM地址映射总是访问到自身指令/数据本地存储器,而从CPUx_xLM_SLV可以访问到自身或者另一个CPU的指令/数据本地存储器。
以HPM6700系列RISC-V CPU0为例,从0x00000000和0x01000000读取到的,是CPU0指令本地存储器ILM0的首地址。从0x01180000读到的,是CPU1指令本地存储器ILM1的首地址。
以RISC-V CPU1为例,从0x00000000和0x01180000读取到的,是CPU1指令本地存储器ILM1的首地址。从0x01000000读到的,是CPU0指令本地存储器ILM0的首地址。7347acdc-35f6-11ed-9ade-dac502259ad0.png

2.1.2HPM6300系列

HPM6300系列为单核RISC-V CPU,RISC-V CPU和其他总线主设备都可以通过xLM地址映射访问CPU的指令/数据本地存储器,其中RISC-V CPU仍然可以通过自身的xLM接口对xLM实现零等待周期访问,即xLM的读写时钟频率与CPU的时钟同频。而其他总线主设备,需要以AXI系统总线的时钟频率访问xLM。

同时,xLM的镜像,CPUx_xLM_SLV映射仍然有效,包括RISC-V CPU在内的所有总线主设备,访问CPUx_xLM_SLV与访问xLM效果相同,访问的是同一块物理内存。注意RISC-V CPU通过CPUx_xLM_SLV访问自身的xLM时,会和其他总线主设备一样,读写时钟频率与AXI系统总线时钟频率一致,不再支持零周期等待,但是CPU的高速一级缓存会生效。
比如,RISC-V CPU和DMA,从0x00000000读取到的,是CPU0指令本地存储器ILM0的首地址。从0x01000000读取到的,也是CPU0指令本地存储器ILM0的首地址。注意RISC-V CPU从0x01000000取值后,如果高速缓存打开,其数据会被存入缓存。

2.2AXI总线SRAM


HPM6000系列高性能MCU支持通用的片上SRAM,称为AXI SRAM,可以用来存放数据或者代码。

736aa188-35f6-11ed-9ade-dac502259ad0.pngHPM6700系列AXI?SRAM示意图上图以HPM6700系列MCU为例,展示了AXI SRAM在系统中的位置。顾名思义,AXI SRAM连接到AXI系统总线的从接口,它的读写时钟频率就是AXI系统总线的时钟频率。所有的AXI系统总线主设备都可以访问AXI SRAM。
注意:系统内存映射表上,AXI SRAM的地址映射与RISC-V CPU的ILM/DLM镜像映射CPUx_xLM_SLV在地址上是连续的。因此可以把AXI SRAM和RISC-V CPU的本地存储器当作一块联系的大内存使用。详情请参考后文的SRAM使用建议。

2.3AHB总线SRAM


HPM6000系列高性能MCU包含挂载在外设总线AHB的片上SRAM,称为AHB SRAM,如下图所示,AHB SRAM连接到AHB外设总线的从设备接口。
AHB SRAM的读写时钟频率为AHB外设总线的时钟频率。注意,包括RISC-V CPU在内的总线主设备需要通过AXI系统总线,来访问AHB外设总线下的各个外设寄存器。而外设总线AHB上的主设备,比如HDMA,可以直接通过AHB总线访问外设寄存器,以及AHB SRAM。因此AHB SRAM比其他类型的片上SRAM更适合用作寄存器和SRAM之间的数据搬运。基于同样的理由,HDMA也比XDMA更适合用作AHB SRAM和寄存器之间的数据搬运。
因此,当使用HDMA用作通讯接口,如UART,SPI的数据收发时,推荐使用AHB SRAM作为数据的缓冲区。73a1dba8-35f6-11ed-9ade-dac502259ad0.pngHPM6700系列AHB?SRAM和APB?SRAM示意图

2.4APB总线SRAM


HPM6000系列高性能MCU的部分型号支持APB SRAM。上图以HPM6700系列MCU为例,展示了APB SRAM在系统中的位置。
APB SRAM位于电源管理域,由VPMC引脚供电。当MCU处于低功耗模式时,有可能通过关闭系统电源域的电源,使得VDD_SOC掉电。此时,APB SRAM可以作为片上的备份SRAM,保存必要的数据。
注意,对于不支持APB SRAM的型号,可以使用电源管理域通用寄存器PGPR,保存一定的备份数据。

在电池模式(VBAT Only Mode)下,VPMC也掉电,HPM6000系列MCU仅VBAT保持供电。此时,电池备份域通用寄存器BGPR,可以用来保存一定的备份数据。

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

    关注

    146

    文章

    18070

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    hpm6364内部flash使用时的openocd配置问题.

    /yasuoHPM6000xilieMCUFlashshiyongzhinanyiruheshiyongpianneiFlash120231101151455.pdf)中提到使用内部flash时openocd 的脚本文件应改为如下: flash bank
    发表于 07-12 19:48

    重磅更新 | HPM_SDK v1.10.0 发布

    版本更新概况[New]增加HPM5E00系列MCU以及HPM5E00EVK支持增加flash_xip_hybrid构建,在该模式下AXI_SRAM被用作FLASH前256KB的缓存,位
    的头像 发表于 07-02 15:07 ?600次阅读
    重磅更新 | <b class='flag-5'>HPM</b>_SDK v1.10.0 发布

    支持HPM6P00/HPM5E00系列!HPMicro Manufacturing Tool v0.6.0发布

    HPM6P00、HPM5E00系列SoC的烧写及其它操作,新增HPM6E00、HPM5E00固件;新增verify-checksum及que
    的头像 发表于 06-04 08:28 ?737次阅读
    支持<b class='flag-5'>HPM</b>6P00/<b class='flag-5'>HPM</b>5E00<b class='flag-5'>系列</b>!HPMicro Manufacturing Tool v0.6.0发布

    【强势新】HPM5E00:EtherCAT运动控制MCU,先楫半导体再拓工业总线产品新版图

    。该系列是继HPM6E00后的又一重磅布局,标志着先楫在EtherCAT工业通信领域的持续发力与技术深化。 HPM5E00系列 在延续HPM
    发表于 05-07 14:07 ?793次阅读
    【强势<b class='flag-5'>上</b>新】<b class='flag-5'>HPM</b>5E00:EtherCAT运动控制MCU,先楫半导体再拓工业总线产品新版图

    【强势新】HPM5E00:EtherCAT运动控制MCU,先楫半导体再拓工业总线产品新版图

    HPM6E00后的又一重磅布局,标志着先楫在EtherCAT工业通信领域的持续发力与技术深化。HPM5E00系列在延续HPM6E00高算力基因的基础
    的头像 发表于 05-06 11:09 ?658次阅读
    【强势<b class='flag-5'>上</b>新】<b class='flag-5'>HPM</b>5E00:EtherCAT运动控制MCU,先楫半导体再拓工业总线产品新版图

    浅谈MCURAM

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

    重磅更新 | 先楫半导体HPM_SDK v1.9.0 发布

    版本更新概况[New]增加HPM6P00系列MCU以及hpm6p00evk支持[New]增加了开发板已知问题说明[Update]将全系列开发板VCore电压调节至1.275V,
    的头像 发表于 04-02 08:31 ?512次阅读
    重磅更新 | 先楫半导体<b class='flag-5'>HPM</b>_SDK v1.9.0 发布

    hpm_apps v1.8.0上线:HPM6200四轴伺服驱控方案重磅发布!

    hpm_apps v1.8.0上线:HPM6200四轴伺服驱控方案重磅发布!
    的头像 发表于 02-12 08:04 ?680次阅读
    <b class='flag-5'>hpm</b>_apps v1.8.0上线:<b class='flag-5'>HPM</b>6200四轴伺服驱控方案重磅发布!

    开发者分享 | 适用于HPM的RustSBI实现

    HPMicro的MCU一直以高性能著称,之前也一直有想在HPM的MCU运行Linux的想法。直到看见Linux6.10中支持了RISC-V架构在S-mode中运行nommu内核*,才下定决心开始在HPM6360
    的头像 发表于 02-08 13:44 ?662次阅读
    开发者分享 | 适用于<b class='flag-5'>HPM</b>的RustSBI实现

    基于HPM_SDK_ENV开发应用程序的升级处理

    基于HPM_SDK_ENV开发应用程序的方式HPM_SDK_ENV是先楫半导体MCU的Windows集成开发环境,其包含HPM_SDK,工具链,依赖工具(cmake,ninja,openocd等
    的头像 发表于 02-08 13:38 ?1100次阅读
    基于<b class='flag-5'>HPM</b>_SDK_ENV开发应用程序的升级处理

    用femc操作sram,nce选一口气出32次

    用femc操作sram,nce选一口气出32次。 如下,在执行完value = *p;后选就会出32个波形。这样一操作就是一块地址,那么针对某一个地址如何操作才能相应只出一个选?
    发表于 11-29 09:31

    关于hpm6364的femc同时使用外接sdram和sram的问题

    femc连接32Mb的sdram,同时连接fpga,用sram方式与fpga通信。 配置IO口都配置了IOC_PAD_FUNC_CTL_ALT_SELECT_SET(12);当作femc接口
    发表于 11-20 14:45

    TMS320C6000 EMIF转外部异步SRAM接口

    电子发烧友网站提供《TMS320C6000 EMIF转外部异步SRAM接口.pdf》资料免费下载
    发表于 10-26 10:28 ?0次下载
    TMS320C<b class='flag-5'>6000</b> EMIF转外部异步<b class='flag-5'>SRAM</b>接口

    66AK2Hx系统(SoC)器件系列的功耗摘要

    电子发烧友网站提供《66AK2Hx系统(SoC)器件系列的功耗摘要.pdf》资料免费下载
    发表于 10-10 09:11 ?0次下载
    66AK2Hx<b class='flag-5'>片</b><b class='flag-5'>上</b>系统(SoC)器件<b class='flag-5'>系列</b>的功耗摘要

    SDK里面是否能添加HPM5300系列芯片支持包?

    SDK里面是否能添加HPM5300系列芯片支持包?只发现板级支持包。
    发表于 09-27 10:01