用RT-Thread Studio向ch32v307vct6燒錄程序,有個前置條件要完成。
1坑中坑(這部分可以看看,不要跟著操作)
要先用沁恒的燒錄工具WCHISPStudio將ch32v307vct6的ROM改為224K,RAM改為96K,
參考數(shù)據(jù)手冊可以發(fā)現(xiàn)ch32v307的FLASH和RAM是可以自己配置大小的,第一次見。
然后可以通過芯片的USB或串口1用WCHISPStudio下載程序,我們僅僅修改下FLASH為224K,RAM為96K。之后就可以用RT-Thread Studio燒寫程序了。將BOOT設置好,再將板子USB或者串口1連到電腦,點擊WCHISPStudio搜索,就可以發(fā)現(xiàn)設備和查看FLASH了,如圖
總之,這個方法不可取!
2踩坑頓悟
經(jīng)歷了前面的坑中坑,我發(fā)現(xiàn)用RT-Thread Studio向ch32v307燒錄程序其實很簡單,只要避開一個點就行。
我們先用RT-Thread Studio新建一個ch32v307的模板工程
這是模板main線程
int main(void)
{
rt_kprintf("MCU: CH32V307n");
rt_kprintf("SysClk: %dHzn",SystemCoreClock);
rt_kprintf("www.wch.cnn");
LED1_BLINK_INIT();
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
while(1)
{
GPIO_SetBits(GPIOA,GPIO_Pin_0);
rt_thread_mdelay(500);
GPIO_ResetBits(GPIOA,GPIO_Pin_0);
rt_thread_mdelay(500);
}
}
然后打開鏈接腳本link.lds看看FLASH和RAM大小
可以看到FLASH:224K RAM:96K,這里是根據(jù)自己手里的ch32v307修改的,因為ch32v307有好幾種存儲分配方式。
這個鏈接腳本沒有任何問題,我們先編譯下程序,再點擊下載,會跳出一個界面
我們可以在這里用Get和Set按鈕查看和修改芯片的存儲分配,可以看到我的芯片現(xiàn)在存儲分配實際256K ROM+64K RAM,和鏈接腳本里的224K ROM+96K RAM,所以你剛剛在RT-Thread Studio編譯程序得到的鏡像(bin,hex等)無論通過那種途徑燒錄到了芯片都是無效的!
我們想要程序起作用,要么按芯片實際存儲分配修改鏈接腳本link.lds,要么根據(jù)link.lds設置芯片存儲分配,我這里就直接修改link.lds了,
想修改芯片配置的直接在剛剛跳出的下載界面通過下拉框選擇,在點擊Set就好,非常簡單。
然后我們再次編譯程序點擊下載界面的下載按鈕,
有意思的來了,你會發(fā)現(xiàn)控制臺輸出空空如也!無論再怎么狂按復位間它都無動于衷。
沒錯,這就是我最開始說的那個BUG,這時候就要上WCH-LinkUtility了,可以到沁恒的官網(wǎng)下載,我們打開它,輕輕點擊一下Get或者其它按鈕,總之讓WCH-LinkUtility與芯片進行一次通訊就行,程序就正常運轉(zhuǎn)了,控制臺有了輸出,復位鍵也正常了,皆大歡喜!
控制臺輸出:
但當我們再次通過RT-Thread Studio下載程序后,芯片又沒反應了。
所以,BUG確定了,是RT-Thread Studio那個下載工具的問題,如果通過WCH-LinkUtility或者其它工具下載,都是一切正常。
3 總結(jié)與吐槽
總結(jié)就是用RT-Thread Studio編譯得到鏡像文件,再通過其它燒錄工具(WCH-LinkUtility/WCHISPStudio)下載程序,或者換IDE比如MounRiver Studio。這個問題僅限ch32。
希望有人能早日解決這個問題吧,還有能不能不要下載程序的時候跳出一個下載界面讓用戶二次操作嗎,太反人類了,直接給一個進度條就好啦。
-
存儲器
+關(guān)注
關(guān)注
38文章
7634瀏覽量
166403 -
RAM
+關(guān)注
關(guān)注
8文章
1391瀏覽量
116782 -
RT-Thread
+關(guān)注
關(guān)注
32文章
1370瀏覽量
41509 -
Flash存儲
+關(guān)注
關(guān)注
0文章
39瀏覽量
8398 -
CH32V307VCT6
+關(guān)注
關(guān)注
0文章
2瀏覽量
1188
發(fā)布評論請先 登錄
使用RT-Thread Studio在程序進Hardfault時怎么方便的查看調(diào)用棧?
使用rt-thread studio配置某對GPIO為串口,比如配置PA0與PA1 為uart1,如何操作?
請問使用RT-Thread Studio在程序進Hardfault時怎么方便查看調(diào)用棧?
如何將RT-Thread移植到NXP MCUXPressoIDE上

RT-Thread上CAN實踐

開源共生 商業(yè)共贏 | RT-Thread 2024開發(fā)者大會報名啟動!

rt-thread studio手動導入bsp失敗的原因?怎么處理?
2024 RT-Thread全球巡回 線下培訓火熱來襲!

RT-Thread Studio每次重開后構(gòu)建都無法運行程序怎么解決?
RT-Thread 新里程碑達成——GitHub Star 破萬!

評論