天天看點

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程式開始執行新的程式。

繼續閱讀