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

    文章

    1368

    浏览量

    114640
  • soc
    soc
    +关注

    关注

    38

    文章

    4161

    浏览量

    218160
收藏 人收藏

    评论

    相关推荐

    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 304次阅读
    STM32F407 MCU使用SD NAND 不断电<b class='flag-5'>初始化</b>失效解决方案

    FPGA产品的主要特点

    近年来,全球半导体供应链屡受挑战,芯片短缺问题一度对行业产生深远影响。通过优化供应链管理、强化产能规划,确保客户的FPGA需求得到及时满足。面向工业控制、机器视觉、医疗影像、消费电子、汽车智驾等一众终端领域,
    的头像 发表于 12-04 14:20 365次阅读
    <b class='flag-5'>易</b><b class='flag-5'>灵</b><b class='flag-5'>思</b>FPGA产品的主要特点

    基于旋转平移解耦框架的视觉惯性初始化方法

    精确和鲁棒的初始化对于视觉惯性里程计(VIO)至关重要,因为不良的初始化会严重降低姿态精度。
    的头像 发表于 11-01 10:16 322次阅读
    基于旋转平移解耦框架的视觉惯性<b class='flag-5'>初始化</b>方法

    TMS320C6000 McBSP初始化

    电子发烧友网站提供《TMS320C6000 McBSP初始化.pdf》资料免费下载
    发表于 10-26 10:10 0次下载
    TMS320C6000 McBSP<b class='flag-5'>初始化</b>

    瀚海微SD NAND应用之SD协议存储功能描述2 初始化命令

    初始化和识别过程: 总线激活后,主机启动卡初始化和识别过程。 初始化过程从SD SEND OP COND (ACMD41)开始,通过设置其操作条件和OCR中的HCS位。HCS (Host
    的头像 发表于 07-22 10:54 354次阅读
    瀚海微SD NAND应用之SD协议存储功能描述2 <b class='flag-5'>初始化</b>命令

    初始化IO口为外部中断线的时候,最先初始化的会被后初始化的覆盖掉为什么?

    初始化IO口为外部中断线的时候,比如GPIOA6与GPIOB6先后初始化为外部中断,最先初始化的会被后初始化的覆盖掉,不知道是为什么?
    发表于 05-14 08:26

    RAM使用--Update5

    RAM在使用时可以会遇到一些问题,这里把常用的问题总结下。 1、ram初始化文件路径是工程
    的头像 发表于 04-24 08:43 744次阅读
    <b class='flag-5'>易</b><b class='flag-5'>灵</b><b class='flag-5'>思</b><b class='flag-5'>RAM</b>使用--Update5

    RAM使用--Update4

    RAM在使用时可以会遇到一些问题,这里把常用的问题总结下。 1、ram初始化文件路径是工程
    的头像 发表于 04-23 14:52 1090次阅读
    <b class='flag-5'>易</b><b class='flag-5'>灵</b><b class='flag-5'>思</b><b class='flag-5'>RAM</b>使用--Update4

    FPGA flash操作原理

    FPGA flash操作原理分享
    的头像 发表于 04-09 15:03 989次阅读

    字符型、指针型等变量等该如何初始化

     对于数值类型的变量往往初始化为0,但对于其他类型的变量,如字符型、指针型等变量等该如何初始化呢?
    的头像 发表于 03-18 11:02 1433次阅读

    MCU单片机GPIO初始化该按什么顺序配置?为什么初始化时有电平跳变?

    GPIO初始化时有时钟配置、模式配置、输出配置、复用配置,那么在编写初始化代码时,到底该按什么顺序执行呢?如果顺序不当那初始化过程可能会出现短暂的电平跳变。
    的头像 发表于 02-22 11:07 1526次阅读
    MCU单片机GPIO<b class='flag-5'>初始化</b>该按什么顺序配置?为什么<b class='flag-5'>初始化</b>时有电平跳变?

    MCU内部SRAM的ECC初始化竟可由ROM完成

    大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家分享的是i.MXRT1170内部RAM的ECC初始化工作可全部由ROM完成。
    的头像 发表于 01-04 15:39 1430次阅读

    串口初始化一般是初始化哪些内容

    串口初始化是指在使用串口进行数据通信之前,对串口进行一系列的设置和配置,以确保串口能够正常工作。串口初始化的内容主要包括以下几个方面: 串口硬件设置:首先,需要确定要使用的串口是哪一个,通常计算机
    的头像 发表于 01-04 09:39 3151次阅读

    labview运行后如何初始化

    LabVIEW是一款强大的图形编程软件,在运行之前通常需要进行一些初始化操作。本文将详细介绍LabVIEW运行前的初始化过程,并提供了一些常用的初始化方法。 创建新项目: 在LabV
    的头像 发表于 12-28 17:24 2624次阅读