IAP介紹
Iap,全名為in applacation programming,即在應用編程,與之相對應的叫做isp,in system programming,即在系統(tǒng)編程,兩者的不同是isp需要依靠燒寫器在單片機復位離線的情況下編程,需要人工的干預,而iap則是用戶自己的程序在運行過程中對User Flash 的部分區(qū)域進行燒寫栏赴,目的是為了在產(chǎn)品發(fā)布后可以方便地通過預留的通信口對產(chǎn)品中的固件程序進行更新升級磕秤。在工程應用中經(jīng)常會出現(xiàn)我們的產(chǎn)品被安裝在某個特定的機械結(jié)構(gòu)中,更新程序的時候拆機很不方便,使用iap技術(shù)能很好地降低工作量.
實現(xiàn)iap有兩個很重要的前提,首先,單片機程序能對自身的內(nèi)部flash進行擦寫,第二,單片機要有能夠和外部進行通訊的方式,無論是網(wǎng)絡還是別的方式,只要能傳輸數(shù)據(jù)就行。
通常實現(xiàn) IAP 功能時窖张,即用戶程序運行中作自身的更新操作,需要在設(shè)計固件程序時編寫兩個項目代碼谜诫,JTAG 或 ISP 燒入第一個項目程序缰揪,第一個項目程序(IAP部分)不執(zhí)行正常的功能操作,而只是通過某種通信方式(如 USB急膀、 USART、網(wǎng)絡)接收程序或數(shù)據(jù)龄捡,執(zhí)行對第二部分代碼的更新卓嫂;第二個項目代碼(用戶程序部分)才是真正的功能代碼。這兩部分項目代碼都同時燒錄在 User Flash 中聘殖,當芯片上電后晨雳,首先是IAP部分代碼開始運行,它作如下操作:
uip協(xié)議移植
uIP是一個簡單好用的嵌入式網(wǎng)絡協(xié)議棧就斤,易于移植且消耗的內(nèi)存空間較少悍募,非常適合學習和使用。uIP的功能遠不如LwIP強大洋机,但兩者并沒有孰優(yōu)孰劣之分坠宴,uIP和LwIP的作者同為Adam Dunkels,LwIP開發(fā)較早uIP開發(fā)較晚绷旗,uIP經(jīng)過這幾年的發(fā)展從IPV4遷移到IPV6喜鼓,最終可以適用于無線傳感網(wǎng)絡副砍。
- 詳細移植過程請參考:
基于stm32+ENC28J60移植uip協(xié)議
示例代碼
以下代碼基于2014年在一師兄那兒做智能家居時,抽離出來的代碼:
https://github.com/woshizmxin/IAP_Stm32