在生成SoC時,會生成一個預定義bootloader .bin文件,用于指定soc的工程運行的地址,這包括在flash的存儲地址 ,加載到外存中的運行地址及在外存中分配的存儲空間的大小 。下面我們來講解下怎樣定義自己的bootloader
在外部存儲的Bootloader
1、導入軟件自帶的bootloader工程,在工程中選擇bootloaderConfig.h文件。
2、修改參數(shù)。
USER_SOFTWARE_MEMORY:對應的是APP在外部存儲器中的運行起始地址;USER_SOFTWARE_FLASH:對應APP在flash中的存儲地址;USER_SOFTWARE_SIZE:APP對應片外存儲的大?。?/p>
如下是一個設(shè)置案例,也可以根據(jù)自己的需要進行相應的修改:
把下面參數(shù)
#define USER_SOFTWARE_MEMORY 0x00001000#define USER_SOFTWARE_FLASH 0x380000#define USER_SOFTWARE_SIZE 0x01F000
修改成:
#define USER_SOFTWARE_MEMORY 0x00008000#define USER_SOFTWARE_FLASH 0x500000#define USER_SOFTWARE_SIZE 0x01F000
3、編譯修改后的工程。接下來會有兩種方法處理。
方法一:
4、重新生成存儲器初始化文件。
(1)路徑轉(zhuǎn)到efinty安裝路徑的bin文件夾下,運行setup.bat,然后重新生成OCR初始文件。
${EFINITY_HOME}/bin/setup.bat
(2)再轉(zhuǎn)到embedded_sw//tool路徑下,并把bootloader.bin文件拷貝到該文件夾下,運行指令,打開浮點生成8個bin,f設(shè)置為1
python3 binGen.py -b bootloader.bin -s-f
(3)生成的初始化bin文件在tool/rom文件夾下;
5、將步驟4中的rom文件夾里的bin替換工程中的bin文件
----------------------------------------------------------------------
方法二:
4、勾選Cache/Memory下sapphire IP中Overwrite the default SPI flash bootloader with the user application前面的對勾。并添加上第3步生成的bootloader.hex文件.
5、重新生成IP并編譯。
--------------------------------------------------------------------
6、重新編譯工程。合成工程時注意指定的Flash地址.
這里有一個問題,修改flash的地址是多少合適呢?以Ti60F100為例 ,內(nèi)部合封了一個16Mb的flash,0x38000這個地址是超出范圍的,那RISCV的地址應該放上哪些呢,從上面的合并操作中可以看到soc.hex文件的Flash Length為0x00362c95,那memTest.bin的地址只要保證不重合,也就是大于0x00362c95即可。
另外值的強調(diào)的是邏輯工程生成的hex文件放在flash地址必須要從0x0開始。
-
FlaSh
+關(guān)注
關(guān)注
10文章
1613瀏覽量
147643 -
soc
+關(guān)注
關(guān)注
38文章
4083瀏覽量
217733 -
bootloader
+關(guān)注
關(guān)注
2文章
234瀏覽量
45496 -
RISC-V
+關(guān)注
關(guān)注
44文章
2200瀏覽量
45945
發(fā)布評論請先 登錄
相關(guān)推薦
評論