最新有客戶(hù)在詢(xún)問(wèn)soc的片上RAM啟動(dòng)方案。于是有了本篇文章。如果soc不 使用外部存儲(chǔ)而是使用片上RAM的話(huà),文檔上似乎沒(méi)有給出詳細(xì)的說(shuō)明,那這里我們就來(lái)介紹一下。
首先片上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文件即可。
但是這樣重新編譯之后可能不能運(yùn)行。因?yàn)閟oc RAM的初始化文件默認(rèn)是工程目錄下的bin文件,所以最好把這個(gè)工程目錄下的bin文件先刪除掉,然后再重新編譯。當(dāng)然也可能是別的原因,先不必深究。
在生成IP的過(guò)程中應(yīng)該是把hex文件轉(zhuǎn)換成了4個(gè)bin文件,與IP同一個(gè)目錄。所以每次修改程序并生成hex之后,都要打開(kāi)IP重新生成IP,這時(shí)才會(huì)重新生成bin文件。
這樣之后重新編譯就可以了。
有一個(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。
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)行更新。
至于怎么生成要更新的bin文件呢?請(qǐng)參考embedded_sw/sapphire/tool下面的README-binGen.txt
(2)當(dāng)4個(gè)文件都更新完成之后點(diǎn)擊Genarate a new Bitstream,就會(huì)有提示是否要重樣綜合還是繼續(xù)生成Bitstream的過(guò)程,按下圖選擇Proceed with Bitstream Generation.軟件會(huì)運(yùn)行最后一步生成新的bit流。
(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ō)明,這里先不贅述。
審核編輯 黃宇
-
RAM
+關(guān)注
關(guān)注
8文章
1354瀏覽量
114438 -
soc
+關(guān)注
關(guān)注
38文章
4099瀏覽量
217767
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論