0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

易靈思SOC onchip RAM初始化

XL FPGA技術(shù)交流 ? 來(lái)源:易靈思FPGA技術(shù)交流 ? 作者:易靈思FPGA技術(shù)交流 ? 2024-07-21 16:54 ? 次閱讀

最新有客戶(hù)在詢(xún)問(wèn)soc的片上RAM啟動(dòng)方案。于是有了本篇文章。如果soc不 使用外部存儲(chǔ)而是使用片上RAM的話(huà),文檔上似乎沒(méi)有給出詳細(xì)的說(shuō)明,那這里我們就來(lái)介紹一下。

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

首先片上RAM啟動(dòng)要在IP上關(guān)閉外部存儲(chǔ),如下圖,Include the external memory AXI interface。

這里要說(shuō),on chip RAM的啟動(dòng)方式與外部存儲(chǔ)方式的啟動(dòng)方式有個(gè)很大的區(qū)別就是不需要bootloader從flash中搬運(yùn)數(shù)據(jù)到存儲(chǔ)器。on chip RAM啟動(dòng)方式不需要bootloader或者說(shuō)應(yīng)用程序就是bootlaoder。

另外,在新版本的sapphire IP中,已經(jīng)支持把應(yīng)用程序的hex文件直接添加到IP,相對(duì)于老的版本來(lái)說(shuō)方便了很多。這時(shí)只需要勾選Overwrite the default SPI flash bootloader with the user application并且在User Application Path中添加用戶(hù)程序生成的hex文件即可。

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

但是這樣重新編譯之后可能不能運(yùn)行。因?yàn)閟oc RAM的初始化文件默認(rèn)是工程目錄下的bin文件,所以最好把這個(gè)工程目錄下的bin文件先刪除掉,然后再重新編譯。當(dāng)然也可能是別的原因,先不必深究。

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

在生成IP的過(guò)程中應(yīng)該是把hex文件轉(zhuǎn)換成了4個(gè)bin文件,與IP同一個(gè)目錄。所以每次修改程序并生成hex之后,都要打開(kāi)IP重新生成IP,這時(shí)才會(huì)重新生成bin文件。

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

這樣之后重新編譯就可以了。

有一個(gè)問(wèn)題:我們每次修改RISCV的工程,重新生成hex文件。都需要重新編譯工程,這是很耗時(shí)的。所以需要一個(gè)辦法把修改后的hex——也就是RAM的初始化文件使用一個(gè)簡(jiǎn)單的方法合成bit文件,以避免重新編譯。

易靈思Efinity從2023.1.150開(kāi)始增加了一個(gè)功能叫Open BRAM Initial Content Updater。它可以讓用戶(hù)快速更新BRAM初始化的數(shù)據(jù)而不需要全編譯。它是更新elaborated網(wǎng)表的數(shù)據(jù),

說(shuō)明:--optimize-zero-init-rom綜合選項(xiàng)是告訴軟件優(yōu)化初始化值為0的ROM的,如果你的ROM初始值是0,又想通過(guò)Open BRAM Initial Content Updater工具來(lái)修改初始值,需要把--optimize-zero-init-rom選項(xiàng)Disable。

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

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

RISCV片上ROM更新

(1)當(dāng)工程編譯完成之后,打開(kāi)該工具就可以看到可以初始化的BRAM塊。其中ram_symbol0,1,2,3就是RISCV的初始化文件。用戶(hù)只需要選擇相應(yīng)的文件,然后再點(diǎn)擊Update memory content就會(huì)把初始化文件更新掉,RISCV有4個(gè)bin文件,所以要對(duì)每個(gè)bin文件都進(jìn)行更新。

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

至于怎么生成要更新的bin文件呢?請(qǐng)參考embedded_sw/sapphire/tool下面的README-binGen.txt

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

(2)當(dāng)4個(gè)文件都更新完成之后點(diǎn)擊Genarate a new Bitstream,就會(huì)有提示是否要重樣綜合還是繼續(xù)生成Bitstream的過(guò)程,按下圖選擇Proceed with Bitstream Generation.軟件會(huì)運(yùn)行最后一步生成新的bit流。

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

(3)用新生成的數(shù)據(jù)流就可以重新下載看效果了。新生成的文件不會(huì)影響debug。

一般ROM的初始化

在Efinity的安裝目錄下提供了一個(gè)T20的參考工程。

/debugger/demo/helloworlddbg_GOLD

我把它修改成了Ti60F225的demo工程(因?yàn)槭稚蠜](méi)有T20的demo板)

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

提取碼:1234

具體的操作步驟請(qǐng)參考efinity-ug.pdf的About the BRAM Initial Content Updater部分,有詳細(xì)的說(shuō)明,這里先不贅述。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1354

    瀏覽量

    114438
  • soc
    soc
    +關(guān)注

    關(guān)注

    38

    文章

    4099

    瀏覽量

    217767
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性初始化方法

    精確和魯棒的初始化對(duì)于視覺(jué)慣性里程計(jì)(VIO)至關(guān)重要,因?yàn)椴涣嫉?b class='flag-5'>初始化會(huì)嚴(yán)重降低姿態(tài)精度。
    的頭像 發(fā)表于 11-01 10:16 ?124次閱讀
    基于旋轉(zhuǎn)平移解耦框架的視覺(jué)慣性<b class='flag-5'>初始化</b>方法

    TMS320C6000 McBSP初始化

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

    RAM使用--Update5

    RAM在使用時(shí)可以會(huì)遇到一些問(wèn)題,這里把常用的問(wèn)題總結(jié)下。 1、ram初始化文件路徑是工程
    的頭像 發(fā)表于 04-24 08:43 ?675次閱讀
    <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在使用時(shí)可以會(huì)遇到一些問(wèn)題,這里把常用的問(wèn)題總結(jié)下。 1、ram初始化文件路徑是工程
    的頭像 發(fā)表于 04-23 14:52 ?998次閱讀
    <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操作原理分享
    的頭像 發(fā)表于 04-09 15:03 ?926次閱讀

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

     對(duì)于數(shù)值類(lèi)型的變量往往初始化為0,但對(duì)于其他類(lèi)型的變量,如字符型、指針型等變量等該如何初始化呢?
    的頭像 發(fā)表于 03-18 11:02 ?1202次閱讀

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

    GPIO初始化時(shí)有時(shí)鐘配置、模式配置、輸出配置、復(fù)用配置,那么在編寫(xiě)初始化代碼時(shí),到底該按什么順序執(zhí)行呢?如果順序不當(dāng)那初始化過(guò)程可能會(huì)出現(xiàn)短暫的電平跳變。
    的頭像 發(fā)表于 02-22 11:07 ?1386次閱讀
    MCU單片機(jī)GPIO<b class='flag-5'>初始化</b>該按什么順序配置?為什么<b class='flag-5'>初始化</b>時(shí)有電平跳變?

    MCU內(nèi)部SRAM的ECC初始化竟可由ROM完成

    大家好,我是痞子衡,是正經(jīng)搞技術(shù)的痞子。今天痞子衡給大家分享的是i.MXRT1170內(nèi)部RAM的ECC初始化工作可全部由ROM完成。
    的頭像 發(fā)表于 01-04 15:39 ?1271次閱讀

    串口初始化一般是初始化哪些內(nèi)容

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

    labview運(yùn)行后如何初始化

    LabVIEW是一款強(qiáng)大的圖形編程軟件,在運(yùn)行之前通常需要進(jìn)行一些初始化操作。本文將詳細(xì)介紹LabVIEW運(yùn)行前的初始化過(guò)程,并提供了一些常用的初始化方法。 創(chuàng)建新項(xiàng)目: 在LabV
    的頭像 發(fā)表于 12-28 17:24 ?2406次閱讀

    自動(dòng)初始化機(jī)制原理詳解

    自動(dòng)初始化機(jī)制是指初始化函數(shù)不需要被顯式調(diào)用,只需要在函數(shù)定義處通過(guò)宏定義的方式進(jìn)行申明,就會(huì)在系統(tǒng)啟動(dòng)過(guò)程中被執(zhí)行。這篇文章就來(lái)探索一下其中的奧秘, 簡(jiǎn)單理解其原理!
    的頭像 發(fā)表于 12-16 09:33 ?947次閱讀
    自動(dòng)<b class='flag-5'>初始化</b>機(jī)制原理詳解

    RAM使用--Update3

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

    C語(yǔ)言編程時(shí),各種類(lèi)型的變量該如何初始化?

    C語(yǔ)言編程時(shí),各種類(lèi)型的變量該如何初始化? 在C語(yǔ)言中,每個(gè)變量都需要在使用之前進(jìn)行初始化。初始化是為變量分配內(nèi)存空間并賦予初始值的過(guò)程。C語(yǔ)言提供了不同的
    的頭像 發(fā)表于 12-07 13:53 ?1093次閱讀

    實(shí)戰(zhàn)經(jīng)驗(yàn) | Keil、IAR、CubeIDE 中變量不被初始化方法

    關(guān)鍵詞:不被初始化,編譯環(huán)境 目錄預(yù)覽 1、前言 2、IAR 實(shí)現(xiàn)變量不初始化方法 3、Keil 實(shí)現(xiàn)變量不被初始化方法 4、CubeIDE 實(shí)現(xiàn)變量不初始化方法 01 前言 有些時(shí)候
    的頭像 發(fā)表于 11-24 18:05 ?3750次閱讀

    MSP430F5529硬件IIC驅(qū)動(dòng)OLED(初始化使用的寄存器)

    MSP430F5529硬件IIC驅(qū)動(dòng)OLED(初始化使用的寄存器)
    發(fā)表于 11-24 16:36 ?1次下載