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

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

3天内不再提示

易灵思SOC onchip RAM初始化

XL FPGA技术交流 来源:易灵思FPGA技术交流 作者:易灵思FPGA技术交流 2024-07-21 16:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

最新有客户在询问soc的片上RAM启动方案。于是有了本篇文章。如果soc不 使用外部存储而是使用片上RAM的话,文档上似乎没有给出详细的说明,那这里我们就来介绍一下。

8aaa8288-449e-11ef-a4b4-92fbcf53809c.png

首先片上RAM启动要在IP上关闭外部存储,如下图,Include the external memory AXI interface。

这里要说,on chip RAM的启动方式与外部存储方式的启动方式有个很大的区别就是不需要bootloader从flash中搬运数据到存储器。on chip RAM启动方式不需要bootloader或者说应用程序就是bootlaoder。

另外,在新版本的sapphire IP中,已经支持把应用程序的hex文件直接添加到IP,相对于老的版本来说方便了很多。这时只需要勾选Overwrite the default SPI flash bootloader with the user application并且在User Application Path中添加用户程序生成的hex文件即可。

8ab1c8d6-449e-11ef-a4b4-92fbcf53809c.png

但是这样重新编译之后可能不能运行。因为soc RAM的初始化文件默认是工程目录下的bin文件,所以最好把这个工程目录下的bin文件先删除掉,然后再重新编译。当然也可能是别的原因,先不必深究。

8ab8a49e-449e-11ef-a4b4-92fbcf53809c.png

在生成IP的过程中应该是把hex文件转换成了4个bin文件,与IP同一个目录。所以每次修改程序并生成hex之后,都要打开IP重新生成IP,这时才会重新生成bin文件。

8acd6a32-449e-11ef-a4b4-92fbcf53809c.png

这样之后重新编译就可以了。

有一个问题:我们每次修改RISCV的工程,重新生成hex文件。都需要重新编译工程,这是很耗时的。所以需要一个办法把修改后的hex——也就是RAM的初始化文件使用一个简单的方法合成bit文件,以避免重新编译。

易灵思Efinity从2023.1.150开始增加了一个功能叫Open BRAM Initial Content Updater。它可以让用户快速更新BRAM初始化的数据而不需要全编译。它是更新elaborated网表的数据,

说明:--optimize-zero-init-rom综合选项是告诉软件优化初始化值为0的ROM的,如果你的ROM初始值是0,又想通过Open BRAM Initial Content Updater工具来修改初始值,需要把--optimize-zero-init-rom选项Disable。

8ad731a2-449e-11ef-a4b4-92fbcf53809c.png

8aed2066-449e-11ef-a4b4-92fbcf53809c.png

RISCV片上ROM更新

(1)当工程编译完成之后,打开该工具就可以看到可以初始化的BRAM块。其中ram_symbol0,1,2,3就是RISCV的初始化文件。用户只需要选择相应的文件,然后再点击Update memory content就会把初始化文件更新掉,RISCV有4个bin文件,所以要对每个bin文件都进行更新。

8afe49f4-449e-11ef-a4b4-92fbcf53809c.png

至于怎么生成要更新的bin文件呢?请参考embedded_sw/sapphire/tool下面的README-binGen.txt

8b101eb8-449e-11ef-a4b4-92fbcf53809c.png

(2)当4个文件都更新完成之后点击Genarate a new Bitstream,就会有提示是否要重样综合还是继续生成Bitstream的过程,按下图选择Proceed with Bitstream Generation.软件会运行最后一步生成新的bit流。

8b25321c-449e-11ef-a4b4-92fbcf53809c.png

(3)用新生成的数据流就可以重新下载看效果了。新生成的文件不会影响debug。

一般ROM的初始化

在Efinity的安装目录下提供了一个T20的参考工程。

/debugger/demo/helloworlddbg_GOLD

我把它修改成了Ti60F225的demo工程(因为手上没有T20的demo板)

链接:https://pan.baidu.com/s/106I_xipVjXc1sfV9c5982A?pwd=1234

提取码:1234

具体的操作步骤请参考efinity-ug.pdf的About the BRAM Initial Content Updater部分,有详细的说明,这里先不赘述。

审核编辑 黄宇

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

    关注

    8

    文章

    1398

    浏览量

    119824
  • soc
    soc
    +关注

    关注

    38

    文章

    4514

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Sapphire SoC中RISC-V平台级中断控制器深度解析

    随着 RISC -V处理器在 FPGA 领域的广泛应用, FPGA 的 Sapphire RISC-V 内核凭借软硬核的灵活支持,为开发者提供多样选择。本文深入探讨 Sapphire
    的头像 发表于 11-08 09:35 6822次阅读
    <b class='flag-5'>易</b><b class='flag-5'>灵</b><b class='flag-5'>思</b>Sapphire <b class='flag-5'>SoC</b>中RISC-V平台级中断控制器深度解析

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

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

    串口通信基石:Air8000下Modbus RTU串口初始化详解!

    串口初始化是Modbus RTU通信稳定可靠的关键起点。本篇深入剖析Air8000开发板串口参数配置、初始化代码实现及调试要点,结合master_rtu示例,分享实际操作中的经验与避坑指南,让您
    的头像 发表于 10-28 16:33 1440次阅读
    串口通信基石:Air8000下Modbus RTU串口<b class='flag-5'>初始化</b>详解!

    特威第二届机器视觉方案大会圆满收官

    近日,由特威联合举办的第二届机器视觉方案大会在深圳福田会展中心成功举行。本次大会以技术驱动与应用落地为核心,汇聚了行业专家、合作伙伴与资深工程师,共同探讨了机器视觉领域的前沿
    的头像 发表于 09-02 12:51 679次阅读

    GraniStudio:IO初始化以及IO资源配置例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入IO初始化以及IO资源配置例程,点击导入按钮。 打开IO初始化以及IO资源配置例程所在路径,选中IO初始化以及
    的头像 发表于 08-22 17:34 746次阅读
    GraniStudio:IO<b class='flag-5'>初始化</b>以及IO资源配置例程

    GraniStudio:初始化例程

    1.文件运行 导入工程 双击运行桌面GraniStudio.exe。 通过引导界面导入初始化例程,点击导入按钮。 打开初始化例程所在路径,选中初始化.gsp文件,点击打开,完成导入。 2.功能
    的头像 发表于 08-22 16:45 705次阅读
    GraniStudio:<b class='flag-5'>初始化</b>例程

    MCU外设初始化:为什么参数配置必须优先于使能

    在微控制器领域,初始化参数配置阶段至关重要。此时,虽无电源驱动,但微控制器在使能信号到来前,借初始化参数配置这一精细步骤,开启关键准备进程。初始化参数配置如同物理坐标锚定、逻辑指令部署、内在秩序预设
    的头像 发表于 08-13 10:38 569次阅读

    特威第二届机器视觉大会即将举办

    去年盛夏,首届特威机器视觉技术大会点燃了行业创新的火花。
    的头像 发表于 08-13 09:53 696次阅读

    定义IO初始化结构体

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构体类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此该结构体类型的变量可以包含IOPORT的相关
    的头像 发表于 07-16 16:26 1107次阅读

    IM 系列设备过载保护机制下界面初始化中断的底层逻辑与解决方案

    一、过载保护机制与界面初始化的关联基础 IM 系列设备的过载保护机制是保障设备安全运行的核心功能,其通过传感器实时采集设备运行参数,如电流、电压、温度、系统资源占用率等。一旦这些参数超出预设阈值
    的头像 发表于 06-27 09:58 367次阅读

    STM32CubeMX用于STM32配置和初始化C代码生成

    电子发烧友网站提供《STM32CubeMX用于STM32配置和初始化C代码生成.pdf》资料免费下载
    发表于 02-26 17:32 678次下载

    EE-359:ADSP-CM40x启动时间优化和器件初始化

    电子发烧友网站提供《EE-359:ADSP-CM40x启动时间优化和器件初始化.pdf》资料免费下载
    发表于 01-13 16:33 0次下载
    EE-359:ADSP-CM40x启动时间优化和器件<b class='flag-5'>初始化</b>

    EE-88:使用21xx编译器在C中初始化变量

    电子发烧友网站提供《EE-88:使用21xx编译器在C中初始化变量.pdf》资料免费下载
    发表于 01-13 15:54 0次下载
    EE-88:使用21xx编译器在C中<b class='flag-5'>初始化</b>变量

    OMAP5912多媒体处理器初始化参考指南

    电子发烧友网站提供《OMAP5912多媒体处理器初始化参考指南.pdf》资料免费下载
    发表于 12-17 16:20 0次下载
    OMAP5912多媒体处理器<b class='flag-5'>初始化</b>参考指南

    STM32F407 MCU使用SD NAND 不断电初始化失效解决方案

    STM32F407微控制器单元(MCU)与SD NAND的结合提供了强大的存储解决方案。然而,不断电初始化失效问题可能会导致系统稳定性和数据完整性受损。我们将STM32F407与SD NAND集成时可能遇到的初始化问题,并提供专业的解决方案。
    的头像 发表于 12-11 10:51 1481次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案