|
STC8A8K64S4A12單片機(jī)程序燒錄一般用STC官方提供的stc-isp軟件,其燒錄原理是:STC8A8K64S4A12上電會(huì)先進(jìn)入官方固化的ISP區(qū)執(zhí)行代碼,代碼會(huì)對(duì)串口進(jìn)行檢測(cè),一旦發(fā)現(xiàn)上位機(jī)(PC)有發(fā)送有效數(shù)據(jù),STC8A8K64S4A12就可以執(zhí)行程序燒錄。每次程序燒錄,都要重新上電,或者軟件重啟才能進(jìn)入ISP區(qū),也只要在ISP區(qū),串口燒錄才是有效的,而且官方在SP區(qū)固化的代碼僅支持串口燒錄,發(fā)送的串口數(shù)據(jù)要按照STC官網(wǎng)給的格式發(fā)送。
另外一種燒錄程序的方式就是自己寫一個(gè)引導(dǎo)程序bootloader來實(shí)現(xiàn)程序的燒錄,比如用bootloader接收串口數(shù)據(jù)、讀取外掛flash的數(shù)據(jù)或者SD卡數(shù)據(jù),然后一邊讀數(shù)據(jù)、一邊燒錄應(yīng)用程序。STC8A8K64S4A12一上電就執(zhí)行ISP區(qū)代碼,超時(shí)后,會(huì)執(zhí)行bootloader程序,bootloader會(huì)檢查是否要更新程序,如果沒有,就直接跳去執(zhí)行應(yīng)用程序。這種方法和好處是可以不用串口去更新程序,因?yàn)榇谝偌右活wMCU,或者要用專用的上位機(jī),多了成本。通過STC8A8K64S4A12主動(dòng)拷貝數(shù)據(jù)來更新程序可以說是一種省成本的方式。
下面我用一個(gè)簡單的例子來說明一種簡單BIM的更新程序方式。
首先新建一個(gè)應(yīng)用程序工程IMAGE_A,里面放一個(gè)點(diǎn)燈的操作。然后把代碼的起始地址設(shè)在0x27FF。
捕獲1.PNG (27.73 KB, 下載次數(shù): 49)
下載附件
2019-12-15 23:11 上傳
編譯后產(chǎn)生的hex文件用stc-isp軟件打開,可以看到全部代碼的數(shù)據(jù)。
捕獲3.PNG (19.67 KB, 下載次數(shù): 46)
下載附件
2019-12-15 23:15 上傳
然后在IAR平臺(tái)新建一個(gè)BIM工程來作為bootloader,把IMAGE_A的代碼數(shù)據(jù)存放在一個(gè)hexfile[]數(shù)組里面,執(zhí)行main函數(shù)的時(shí)候,會(huì)將數(shù)組寫入到以0x27FF起點(diǎn)的內(nèi)部flash中,然后跳轉(zhuǎn)到0x27FF執(zhí)行IMAGE_A代碼。
捕獲.PNG (96.39 KB, 下載次數(shù): 45)
下載附件
2019-12-15 23:32 上傳
編譯BIM工程,產(chǎn)生的hex文件用stc-isp軟件燒錄到STC8A8K64S4A12中,打開串口可以看到寫flash的過程
捕獲2.PNG (22.66 KB, 下載次數(shù): 43)
下載附件
2019-12-15 23:34 上傳
實(shí)物可以看到P5_5驅(qū)動(dòng)的LED燈亮了,說明程序正常跳轉(zhuǎn)。
51hei圖片20191215233912.jpg (3.89 MB, 下載次數(shù): 51)
下載附件
2019-12-15 23:40 上傳
本例子是簡單的實(shí)現(xiàn)程序的燒錄,后面可以完善一下BIM工程,添加從外部flash中拷貝程序到內(nèi)部flash的功能。
|
評(píng)分
-
查看全部評(píng)分
|