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