實(shí)驗(yàn)對(duì)象:官方 CH32V208 評(píng)估板 (帶以太網(wǎng)),通過短路帽將 BOOT0 針 對(duì)地短接,BOOT1 針 對(duì)地短接。
通過 WCHISPTool 燒寫:
1. 按住 Download 按鍵(BOOT0 置高 );
2. 通過電源開關(guān)(S1)重新上電;
3. 松開 Download 按鍵 (BOOT0 懸空 );
4. 此時(shí) WCHISPTool 識(shí)別到可燒寫設(shè)備,可以進(jìn)入燒寫流程;
5. 燒寫完成后,因?yàn)橛泄催x“下載完成后執(zhí)行軟復(fù)位”選項(xiàng),芯片復(fù)位,從 Code Flash 啟動(dòng)(BOOT0 = 0),開始執(zhí)行燒錄的程序。
符合預(yù)期。
但是在 Linux 下使用 WCHISPTool_CMD 燒錄時(shí),配置是從 WCHISPTool 導(dǎo)出的。如
`sudo WCHISPTool_CMD -p /dev/ch37x0 -c ./config.ini -o program -f ./GPIO_Toggle.hex`
如果對(duì)板子的操作步驟和上述相同,是無法操作成功的。怎么樣才能成功呢?
在第2步上電以后,不能松開 Download 按鍵,需要保持 BOOT0 置高,再執(zhí)行命令,這樣就可以燒錄成功。但是即便燒錄成功,用戶程序也不會(huì)立即執(zhí)行。因?yàn)槟呐掠小跋螺d完成后執(zhí)行軟復(fù)位”,此時(shí)復(fù)位依然是從 System Flash 啟動(dòng),因?yàn)?BOOT0 為高。
所以要看程序執(zhí)行效果,只能松開 Download 按鍵,再按 Reset 復(fù)位到 Code Flash 啟動(dòng),才會(huì)執(zhí)行用戶程序。
標(biāo)題所說的區(qū)別就在于此,估計(jì) WCHISPTool_CMD 燒錄過程中有執(zhí)行軟復(fù)位。而復(fù)位后因?yàn)锽OOT0=0,芯片就不是從 system flash 啟動(dòng),導(dǎo)致后續(xù)相關(guān)操作失敗。而 WCHISPTool_CMD 沒有像 WCHISPTool 有詳細(xì)的過程,只要過程中報(bào)錯(cuò),就一定按失敗處理,缺少過程信息。但實(shí)際上這個(gè)錯(cuò)誤發(fā)生在中間某次(多余的)軟復(fù)位后。
=====ISP_Command_Tool=====
TOOL VERSION:? V3.60
p:/dev/ch37x0
b:0
v:0
c:./config.ini
o:0
f:./GPIO_Toggle.hex
{"Device":/dev/ch37x0", "Status":"Fail", "Code":6, "Message":"Fail to find any valid isp device"}
而 WCHISPTool 的燒錄過程中,只有在最后才觸發(fā)軟復(fù)位,沒有這個(gè)問題。
補(bǔ)充:這個(gè)問題是在學(xué)習(xí) CH32V208 過程中發(fā)現(xiàn),ch583 使用 WCHISPTool_CMD 燒錄,沒有這個(gè)問題(不需要一直按住 Download 鍵)。