注意使用的是keil5.11a
自己根據開發指南寫的一個IAP程序。在mini板上成功跑一個app。因為RB是128K的flash,所以將rom分割為 27K 1K 100K。其中27K 用來存儲IAP。1K 用來存儲一些信息,目前暫未使用到。100K就是app用的啦。
IAP程序的大致流程是這樣的,上電后,在5s內(實際測試發現大於5s,暫時不管這個誤差),輪詢串口是否發送:updata;(update這個可以隨意,保證:;中間有6個字母就好)。如果超時沒有收到:update;那么程序跳轉到app,如果沒有app,或者app出錯,紅燈常亮。如果收到:update;那么進入燒寫程序。這時候,串口轉為中斷方式接收數據。
燒錄形式是這樣的。按照1K,1K大小燒錄,需要對bin文件進行分割。開辟了一個串口緩存,大小為1K+8。發送格式是這樣子的,
data_len_L data_len_H data(no more than 1K) index_L index_H CRC
index_L index_H CRC(4B)這六位暫時沒用到,填充00,data_len為要寫入數據長度,最大不會超過1K。
目前IAP編譯后才7K,還可以加入更多功能,預計加入STM32的CRC。app的bin文件需要自己分割,可以使用winHex,然后使用XCOM V2.0來發送,,我准備寫個上位機用來傳輸bin,這樣就不用自己分割bin了。

另外,app的做法,請參考開發指南。
沒發現博客園可以上傳附件,源碼可以到開源電子網下載http://www.openedv.com/posts/list/38799.htm