在生成SoC時(shí),會(huì)生成一個(gè)預(yù)定義bootloader .bin文件,用于指定soc的工程運(yùn)行的地址,這包括在flash的存儲(chǔ)地址 ,加載到外存中的運(yùn)行地址及在外存中分配的存儲(chǔ)空間的大小 。下面我們來(lái)講解下怎樣定義自己的bootloader
指向外部存儲(chǔ)的Bootloader
1、導(dǎo)入軟件自帶的bootloader工程,在工程中選擇bootloaderConfig.h文件。

2、修改參數(shù)。
USER_SOFTWARE_MEMORY:對(duì)應(yīng)的是APP在外部存儲(chǔ)器中的運(yùn)行起始地址;USER_SOFTWARE_FLASH:對(duì)應(yīng)APP在flash中的存儲(chǔ)地址;USER_SOFTWARE_SIZE:APP對(duì)應(yīng)片外存儲(chǔ)的大??;
如下是一個(gè)設(shè)置案例,也可以根據(jù)自己的需要進(jìn)行相應(yīng)的修改:
把下面參數(shù)
修改成:
3、編譯修改后的工程。接下來(lái)會(huì)有兩種方法處理。
方法一:
4、重新生成存儲(chǔ)器初始化文件。
(1)路徑轉(zhuǎn)到efinty安裝路徑的bin文件夾下,運(yùn)行setup.bat,然后重新生成OCR初始文件。
${EFINITY_HOME}/bin/setup.bat
(2)再轉(zhuǎn)到embedded_sw/
python3 binGen.py -b bootloader.bin -s<RAMsize>-f<FPU>

(3)生成的初始化bin文件在tool/rom文件夾下;

5、將步驟4中的rom文件夾里的bin替換工程中的bin文件

----------------------------------------------------------------------
方法二:
4、勾選Cache/Memory下sapphire IP中Overwrite the default SPI flash bootloader with the user application前面的對(duì)勾。并添加上第3步生成的bootloader.hex文件.

5、重新生成IP并編譯 。
--------------------------------------------------------------------
6、重新編譯工程。合成工程時(shí)注意指定的Flash地址.

這里有一個(gè)問(wèn)題,修改flash的地址是多少合適呢?以Ti60F100為例 ,內(nèi)部合封了一個(gè)16Mb的flash,0x38000這個(gè)地址是超出范圍的,那RISCV的地址應(yīng)該放上哪些呢,從上面的合并操作中可以看到soc.hex文件的Flash Length為0x00362c95,那memTest.bin的地址只要保證不重合,也就是大于0x00362c95即可。
另外值的強(qiáng)調(diào)的是邏輯工程生成的hex文件放在flash地址必須要從0x0開(kāi)始。
指向內(nèi)部存儲(chǔ)的Bootloader
今天有客戶在問(wèn)如果打開(kāi)了外部存儲(chǔ),但是希望程序從片上RAM啟動(dòng)應(yīng)該怎么修改bootloader。只需要將bootloader工程的makefile里面的LDSCRIPT ?= ${BSP_PATH}/linker/bootloader.ld指向linker文件夾下的default_i.ld(對(duì)應(yīng)鈦金系列,default.ld對(duì)應(yīng)trion系列)


-
FlaSh
+關(guān)注
關(guān)注
10文章
1656瀏覽量
150609 -
soc
+關(guān)注
關(guān)注
38文章
4303瀏覽量
221052 -
bootloader
+關(guān)注
關(guān)注
2文章
238瀏覽量
46334 -
RISC-V
+關(guān)注
關(guān)注
46文章
2461瀏覽量
48005
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
自定義RISC V的bootloader-v2

如何使用RISC-V創(chuàng)建自定義處理器

自定義視圖組件教程案例
如何看待RISC-V SoC設(shè)計(jì)中自定義擴(kuò)展的指令集架構(gòu)

ArkUI如何自定義彈窗(eTS)
Out項(xiàng)目之增強(qiáng)RISC-V處理器性能的自定義硬件模塊

評(píng)論