打包出現(xiàn):ERROR: update_mbr failed
24993+0 records in
24993+0 records out
6398208 bytes (6.4 MB) copied, 0.0271082 s, 236 MB/s
ERROR: dl file rtos_riscv.fex size too large
ERROR: filename = rtos_riscv.fex
ERROR: dl_file_size = 1579 sector
ERROR: part_size = 1000 sector
ERROR: update mbr file fail
ERROR: update_mbr failed
這是因?yàn)?rtos_riscv.fex
太大了,分區(qū)容量設(shè)置過小。
解決方法
- 確定打包使用的分區(qū)表
運(yùn)行打包命令,找到打包使用發(fā)分區(qū)表。例如這里使用的是 sys_partition_xip.fex
- 編輯分區(qū)表
使用 cconfigs
命令進(jìn)入目錄,找到打包使用的分區(qū)表,編輯修改
- 找到上面報(bào)錯(cuò)的行,修改
size
選項(xiàng),單位是扇區(qū)。對(duì)于 NOR 方案請(qǐng)對(duì)齊。這里我們修改到7000
- 重新打包,正常通過
修改分區(qū)表后系統(tǒng)無法啟動(dòng)
有些時(shí)候,修改 sys_partition_xxx.fex
后系統(tǒng)無法啟動(dòng),例如將 config
的大小從 32
改到 64
后,系統(tǒng)無法啟動(dòng)卡死。
這是由于擴(kuò)大分區(qū)后踩到內(nèi)存了,一般配置 LPSRAM 前面 2M 給 M33 核使用,M33 的代碼運(yùn)行在前面 2M 上,另外這 2M 中的前 16K 是sysconfig
配置。
可以看到 M33 系統(tǒng)的啟動(dòng)地址為 0x8004000
但是 config
現(xiàn)在有 32K 載入到了 0x8000000-0x8008000
的內(nèi)存中,覆蓋了 M33
的部分內(nèi)存,這樣一般叫做 "踩內(nèi)存"。
解決方法:
- 精簡(jiǎn)該分區(qū),刪除不需要的配置項(xiàng)
保持 config
大小為 32
,刪除不需要的配置項(xiàng)目減少 config
的大小。
- 修改 M33 核心的運(yùn)行地址,這里將 M33 核心往后移動(dòng)了一部分,將啟動(dòng)地址配置到
0x8008000
,同時(shí)注意修改內(nèi)存長度防止踩到 C906 核心的內(nèi)存,將0x1FC000
改為0x1F8000
。
這樣就不會(huì)踩到內(nèi)存導(dǎo)致啟動(dòng)失敗。正常啟動(dòng)。
審核編輯 黃宇
-
mcu
+關(guān)注
關(guān)注
146文章
17301瀏覽量
352136 -
全志
+關(guān)注
關(guān)注
24文章
249瀏覽量
53206 -
R128
+關(guān)注
關(guān)注
0文章
41瀏覽量
112
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論