1. 程式人生 > >ISP(In-System Programming)在系統可程式設計和IAP(In-Application Programming)在應用可程式設計

ISP(In-System Programming)在系統可程式設計和IAP(In-Application Programming)在應用可程式設計

ISP(In-System Programming)在系統可程式設計,指電路板上的空白器件可以程式設計寫入終端使用者程式碼, 而不需要從電路板上取下器件,已經程式設計的器件也可以用ISP方式擦除或再程式設計。

IAP(In-Application Programming) 指MCU可以在系統中獲取新程式碼並對自己重新程式設計,即可用程式來改變程式。

ISP和IAP技術是未來儀器儀表的發展方向。

1 ISP和IAP的工作原理

ISP的實現相對要簡單一些,一般通用做法是內部的儲存器可以由上位機的軟體通過串列埠來進行改寫。對於微控制器來講可以通過SPI或其它的序列介面接收上位機傳來的資料並寫入儲存器中。所以即使我們將晶片焊接在電路板上,只要留出和上位機介面的這個串列埠,就可以實現晶片內部儲存器的改寫,而無須再取下晶片。

IAP的實現相對要複雜一些,在實現IAP功能時, 微控制器內部一定要有兩塊儲存區,一般一塊被稱為BOOT區,另外一塊被稱為儲存區。微控制器上電執行在BOOT區,如果有外部改寫程式的條件滿足,則對儲存區的程式進行改寫操作。如果外部改寫程式的條件不滿足,程式指標跳到儲存區,開始執行放在儲存區的程式,這樣便實現了IAP功能。

2 ISP和IAP的優點

ISP技術的優勢是不需要程式設計器就可以進行微控制器的實驗和開發,微控制器晶片可以直接焊接到電路板上,除錯結束即成成品,免去了除錯時由於頻繁地插入取出晶片對晶片和電路板帶來的不便。

IAP技術是從結構上將Flash儲存器對映為兩個儲存體,當執行一個儲存體上的使用者程式時,可對另一個儲存體重新程式設計,之後將程式從一個儲存體轉向另一個。

ISP的實現一般需要很少的外部電路輔助實現, 而IAP的實現更加靈活,通常可利用微控制器的序列口接到計算機的RS232口,通過專門設計的韌體程式來程式設計內部儲存器,可以通過現有的INTERNET或其它通訊方式很方便地實現遠端升級和維護。

IAP的編寫流程

由Bootloader負責檢測SD卡中是否有韌體更新所需的BIN檔案。如果檢測到所需要的BIN檔案,則開始複製檔案更新韌體。更新結束後跳轉到指定的地址開始執行最新的程式。

知識要點
  **STM32內部FLASH的起始地址為0X08000000,Bootloader程式檔案就從此地址開始寫入,存放APP程式的首地址設定在緊跟Bootloader之後。**當程式開始執行時,首先執行的是Bootloader程式,此時Bootloader檢測SD卡中的BIN檔案並將其複製到APP區域使韌體得以更新,韌體更新結束後還需要跳轉到APP程式開始執行新的程式。