打包出現: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
這是因為 rtos_riscv.fex
太大了,分區容量設置過小。
解決方法
- 確定打包使用的分區表
運行打包命令,找到打包使用發分區表。例如這里使用的是 sys_partition_xip.fex
- 編輯分區表
使用 cconfigs
命令進入目錄,找到打包使用的分區表,編輯修改
- 找到上面報錯的行,修改
size
選項,單位是扇區。對于 NOR 方案請對齊。這里我們修改到7000
- 重新打包,正常通過
修改分區表后系統無法啟動
有些時候,修改 sys_partition_xxx.fex
后系統無法啟動,例如將 config
的大小從 32
改到 64
后,系統無法啟動卡死。
這是由于擴大分區后踩到內存了,一般配置 LPSRAM 前面 2M 給 M33 核使用,M33 的代碼運行在前面 2M 上,另外這 2M 中的前 16K 是sysconfig
配置。
可以看到 M33 系統的啟動地址為 0x8004000
但是 config
現在有 32K 載入到了 0x8000000-0x8008000
的內存中,覆蓋了 M33
的部分內存,這樣一般叫做 "踩內存"。
解決方法:
- 精簡該分區,刪除不需要的配置項
保持 config
大小為 32
,刪除不需要的配置項目減少 config
的大小。
- 修改 M33 核心的運行地址,這里將 M33 核心往后移動了一部分,將啟動地址配置到
0x8008000
,同時注意修改內存長度防止踩到 C906 核心的內存,將0x1FC000
改為0x1F8000
。
這樣就不會踩到內存導致啟動失敗。正常啟動。
審核編輯 黃宇
-
mcu
+關注
關注
146文章
17324瀏覽量
352655 -
全志
+關注
關注
24文章
250瀏覽量
53253 -
R128
+關注
關注
0文章
41瀏覽量
125
發布評論請先 登錄
相關推薦
評論