CH32v307 中的代碼是否從 RAM 運(yùn)行?程序可以在FLASH中刪除自己并上傳新代碼嗎?我想實(shí)現(xiàn) IAP 但沒有單獨(dú)的區(qū)域(沒有第二個(gè)應(yīng)用程序)。我希望應(yīng)用程序自行更新。
可能嗎 ?
在 STM32 中,我將升級(jí)過程復(fù)制到 RAM(設(shè)置適當(dāng)?shù)暮瘮?shù)屬性)并從 RAM 啟動(dòng)。
是否有如何從 RAM 運(yùn)行代碼的示例?
謝謝你。
CH32v307 中的代碼是否從 RAM 運(yùn)行?程序可以在FLASH中刪除自己并上傳新代碼嗎?我想實(shí)現(xiàn) IAP 但沒有單獨(dú)的區(qū)域(沒有第二個(gè)應(yīng)用程序)。我希望應(yīng)用程序自行更新。
可能嗎 ?
在 STM32 中,我將升級(jí)過程復(fù)制到 RAM(設(shè)置適當(dāng)?shù)暮瘮?shù)屬性)并從 RAM 啟動(dòng)。
是否有如何從 RAM 運(yùn)行代碼的示例?
謝謝你。
您好,
1、CH32V307可以配置從RAM啟動(dòng)運(yùn)行,從RAM啟動(dòng)需要注意以下幾點(diǎn):
(1)需要配置BOOT為RAM啟動(dòng)(BOOT0接VCC,BOOT1接VCC)
(2)需要修改ld文件,使得編譯器編譯的代碼位置為RAM,如下圖1,修改了FLASH的起始地址
(3)需要修改啟動(dòng)文件,如下圖2圈出位置
(4)此外,程序若要下載到RAM運(yùn)行,需要進(jìn)調(diào)試模式下載,勾選debug in RAM,且添加配置操作,如下圖3
-c "wlink_set_address 0x08000000"
2、關(guān)于IAP升級(jí),建議你直接將FLASH分成兩塊區(qū)域,一塊給IAP使用,一塊給APP使用,通過IAP程序接收APP程序固件進(jìn)行升級(jí)。
附件為從RAM啟動(dòng)運(yùn)行的例程,你可以參考一下。后續(xù)若有問題,可通過郵箱和我溝通(lzs@wch.cn)。
圖1
圖2
圖3