精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    文章

    1367

    瀏覽量

    114527
  • soc
    soc
    +關注

    關注

    38

    文章

    4118

    瀏覽量

    217928
收藏 人收藏

    評論

    相關推薦

    基于旋轉平移解耦框架的視覺慣性初始化方法

    精確和魯棒的初始化對于視覺慣性里程計(VIO)至關重要,因為不良的初始化會嚴重降低姿態精度。
    的頭像 發表于 11-01 10:16 ?203次閱讀
    基于旋轉平移解耦框架的視覺慣性<b class='flag-5'>初始化</b>方法

    TMS320C6000 McBSP初始化

    電子發燒友網站提供《TMS320C6000 McBSP初始化.pdf》資料免費下載
    發表于 10-26 10:10 ?0次下載
    TMS320C6000 McBSP<b class='flag-5'>初始化</b>

    初始化IO口為外部中斷線的時候,最先初始化的會被后初始化的覆蓋掉為什么?

    初始化IO口為外部中斷線的時候,比如GPIOA6與GPIOB6先后初始化為外部中斷,最先初始化的會被后初始化的覆蓋掉,不知道是為什么?
    發表于 05-14 08:26

    RAM使用--Update5

    RAM在使用時可以會遇到一些問題,這里把常用的問題總結下。 1、ram初始化文件路徑是工程
    的頭像 發表于 04-24 08:43 ?707次閱讀
    <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 ?1028次閱讀
    <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 ?940次閱讀

    字符型、指針型等變量等該如何初始化

     對于數值類型的變量往往初始化為0,但對于其他類型的變量,如字符型、指針型等變量等該如何初始化呢?
    的頭像 發表于 03-18 11:02 ?1260次閱讀

    MCU單片機GPIO初始化該按什么順序配置?為什么初始化時有電平跳變?

    GPIO初始化時有時鐘配置、模式配置、輸出配置、復用配置,那么在編寫初始化代碼時,到底該按什么順序執行呢?如果順序不當那初始化過程可能會出現短暫的電平跳變。
    的頭像 發表于 02-22 11:07 ?1429次閱讀
    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 ?1313次閱讀

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

    串口初始化是指在使用串口進行數據通信之前,對串口進行一系列的設置和配置,以確保串口能夠正常工作。串口初始化的內容主要包括以下幾個方面: 串口硬件設置:首先,需要確定要使用的串口是哪一個,通常計算機
    的頭像 發表于 01-04 09:39 ?3053次閱讀

    labview運行后如何初始化

    LabVIEW是一款強大的圖形編程軟件,在運行之前通常需要進行一些初始化操作。本文將詳細介紹LabVIEW運行前的初始化過程,并提供了一些常用的初始化方法。 創建新項目: 在LabV
    的頭像 發表于 12-28 17:24 ?2483次閱讀

    自動初始化機制原理詳解

    自動初始化機制是指初始化函數不需要被顯式調用,只需要在函數定義處通過宏定義的方式進行申明,就會在系統啟動過程中被執行。這篇文章就來探索一下其中的奧秘, 簡單理解其原理!
    的頭像 發表于 12-16 09:33 ?965次閱讀
    自動<b class='flag-5'>初始化</b>機制原理詳解

    RAM使用--Update3

    RAM在使用時可以會遇到一些問題,這里把常用的問題總結下。 1、ram初始化文件路徑是工程
    的頭像 發表于 12-12 09:52 ?624次閱讀
    <b class='flag-5'>易</b><b class='flag-5'>靈</b><b class='flag-5'>思</b><b class='flag-5'>RAM</b>使用--Update3

    C語言編程時,各種類型的變量該如何初始化

    C語言編程時,各種類型的變量該如何初始化? 在C語言中,每個變量都需要在使用之前進行初始化初始化是為變量分配內存空間并賦予初始值的過程。C語言提供了不同的
    的頭像 發表于 12-07 13:53 ?1128次閱讀

    secondary cpu初始化狀態設置

    ,用于填寫secondary cpu的入口地址。 uboot負責將這塊內存的地址寫入devicetree中,當內核初始化完成,需要啟動secondary cpu時,就將其內核入口地址寫到那塊內存中
    的頭像 發表于 12-05 15:27 ?1008次閱讀
    secondary cpu<b class='flag-5'>初始化</b>狀態設置