張航
摘 要:隨著科學技術的不斷發展,STM32也需要不斷的進行更新、升級,才能跟上時代的發展。基于此,本文通過對介紹IAP的寫入途徑,從IAP技術工作的基本過程、中斷處理方式、IAP技術實現程序更新的關鍵點等方面論述了IAP技術在STM32程序更新中的應用。
關鍵詞:STM32用戶;IAP;程序更新技術
DOI:10.16640/j.cnki.37-1222/t.2018.21.123
0 前言
在開發嵌入式系統時,最終的目的都是將編寫好的結構代碼下載到預定的微控制芯片上。對于微控制片來說,大部分生產廠家的下載方式都是不同的。現階段,在對用戶程序進行加載時,所采用的方式大多是在線編程。很多生產芯片的公司將用戶更新程序中的方式和接口進行開放式設計,以此使整個系統能夠安全可靠的運行,同時提高其可維護性。
1 IAP寫入途徑
IAP的寫入途徑主要有三種:
第一,從串口寫入。從串口寫入是指在程序升級時,所需的固件是從串口寫入產品的。這種方法的使用,在開發引導程序過程中是比較簡單的,不用在額外的添加其他的文件系統,只需要將串口驅動加入即可。從串口寫入的方法也有一定的缺點,在升級固件時,需要串口軟件、PC機以及串口線等,這些裝備很多用戶都不具備,應用范圍比較小,同時操作的難度也是比較大的。第二,從U盤或者SD卡寫入。從U盤或者SD卡寫入是指在升級固件之前,先用U盤或者SD卡將固件拷貝下來,然后直接進行升級操作就可以將固件升級。這種方法的使用,使用這種方法的缺點是所需要的代碼數量比較多,程序的開發引導比較復雜,需要的存儲空間比較大。如用U盤時,需要將USB協議和文件系統嵌入程序中;在用SD卡時需要將SD卡中的驅動程序和文件系統嵌入到程序中。第三,從網絡直接升級。從網絡上直接升級的應用對于用戶來說是最方便的,在升級過程中,并不需要使用任何設備。產品在聯網狀態下,IAP技術會實現自動升級。但是這種方法的應用也有一定的缺點,在程序開發引導過程中,所需的代碼數量非常多且比較復雜。
2 IAP技術在STM32程序更新中的應用
2.1 IAP技術工作的基本過程
IAP有兩部分項目代碼,其一是引導程序代碼;其二是產品功能程序代碼。其中在開發引導程序時,是需要利用專門的設備寫入的,如JTAG和串口等,這樣在開發過程中,需要寫的代碼數量就會大大降低,同時節省了存儲空間;在開發產品功能程序時,上述的三種寫入方法都可實現。這兩個程序在燒錄時,必須是同時的且在User Flash中。當芯片通電之后,IAP技術的基本工作過程如下:第一步,引導程序開始運行;第二步,對STM32中的代碼進行檢查,檢查之后,識別出那些代碼需要更新;第三步,如果檢查之后,發現STM32中的代碼沒有需要更新的,那么就會自動轉接到第五步;第四步,檢查需要有更新的代碼,會執行更新任務,利用U盤、SD卡等寫入方式將固件升級,用戶只需要有U盤或者SD卡就可以完成升級,操作起來非常的簡單,且比較方便。然后存儲到User Flash中;第五步,如果沒有需要更新的代碼,那么會直接執行產品功能程序代碼。
2.2 IAP中斷處理
在User Flash中,存在兩個程序,在開機之后,設備默認的執行順序是先從引導程序開始,因此需要更改產品功能程序的中斷向量。例如:在對STM32F4系列進行更新過程中,它的內部閃存地址起始于0x08000000,文件開始執行時,以此地址為起點。在運行過程中,會經過以“中斷向量表”,這個中斷向量表起到響應中斷的作用。在程序啟動之后,IAP技術會在表中將復位中斷向量取出,然后執行復位中斷程序,以此將IAP啟動。這個表的地址是0x08000004,當即將要進行中斷處理時,STM32F4內部的各種硬件以及機制會自動的定位PC指針,將其定位到“中斷向量表”處。同時會在中斷的源頭處取出執行過程中的中斷服務程序。這時,產品功能程序中的中斷向量表,會移動到程序的起始地址位置處[1]。
2.3 IAP技術實現程序更新的關鍵點
想要實現IAP技術對程序更新,需要做到以下幾點:
第一,對產品功能程序的中斷向量地址和起始地址進行更改。在聯網狀態下,則需要使用網卡芯片,同時還需要將網絡協議和驅動程序嵌入到程序中,如LEIP。例如:IAP中引導程序所占的空間是64K,對于產品功能程序來說,它的起始地址就應該更改成0x08010000。對于程序文件system_stm32f4xx.c來說,文件內部的flash向量地址應該修改為SCB->VTOR=FLASH_BASE|0x10000[2]。第二,要燒錄程序內部的flash,在聯網狀態下,則需要使用網卡芯片,同時還需要將網絡協議和驅動程序嵌入到程序中,如LEIP。仍然以STM32F4為例,由于它的扇區比較大,在保存扇區數據過程中,無法利用內部的RAM,因此,在這種情況下,在寫地址時,都會現將扇區中的數據擦除,然后再寫入數據,而不管是什么數據都會占用一個扇區。如果扇區中的數據特別重要,要注意先保存備份。這樣就能夠實現IAP技術對STM32系列的更新。
3 結論
綜上所述,IAP技術的寫入方法很多,合理的應用這些方法可以使程序更新更加方便、快捷。經過上文分析可得,我們IAP 技術在對STM32系列進行更新時,首先要了解IAP技術的基本工作過程。其次,它的中斷處理過程是非常重要的。最后實現程序更新需要把握兩個關鍵點。因此,IAP技術對于STM32系列的更新有非常重要的意義。
參考文獻:
[1]陳亮.基于STM32處理器的存儲器IAP編程技術[J].電子測試,
2017(10):77-78.
[2]唐玉兵,龍艦涵.基于STM32系列處理器IAP技術研究[J].科技展望,2015,25(21):122.