智嵌以太網(wǎng)實(shí)現(xiàn)遠(yuǎn)程固件例程使用手冊(cè)_第1頁(yè)
智嵌以太網(wǎng)實(shí)現(xiàn)遠(yuǎn)程固件例程使用手冊(cè)_第2頁(yè)
智嵌以太網(wǎng)實(shí)現(xiàn)遠(yuǎn)程固件例程使用手冊(cè)_第3頁(yè)
智嵌以太網(wǎng)實(shí)現(xiàn)遠(yuǎn)程固件例程使用手冊(cè)_第4頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余7頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、智嵌以太網(wǎng)實(shí)現(xiàn)更新固件例程使用手冊(cè)版本號(hào):A擬制人:時(shí)間:2015 年 2 月 3 日智嵌物聯(lián)網(wǎng)電子技術(shù)I目錄12本文檔編寫(xiě)目的3基礎(chǔ)知識(shí)(該部分摘自互聯(lián)網(wǎng))32.12.2IAP3APP63IAP的實(shí)現(xiàn)63.13.2實(shí)驗(yàn)步驟6IAP和APP程序的. 84BIN文件的生成9II1本文檔編寫(xiě)目的本使用手冊(cè)是針對(duì)“以太網(wǎng)實(shí)現(xiàn)基礎(chǔ)知識(shí)(該部分摘自互聯(lián)網(wǎng))更新固件例程”而編寫(xiě)的。22.1IAPIAP,全稱是“In-Application-Programming”,中文解釋為“在程序中編程”。IAP 是一種通過(guò)微控制器的對(duì)外接口(如 USART,IIC,CAN,USB,以太網(wǎng)接口甚至是無(wú)線射頻通道),程序

2、的更新的技術(shù)(注意這完全有別于 ICP 或者 ISP對(duì)正在運(yùn)行程序的微控制器進(jìn)行技術(shù))。ICP(In-Circuit Programming)技術(shù)即通過(guò)仿真器對(duì)單片機(jī)進(jìn)行程序燒寫(xiě),而 ISP技術(shù)則是通過(guò)單片機(jī)內(nèi)置的bootloader 程序引導(dǎo)的燒寫(xiě)技術(shù)。無(wú)論是ICP 技術(shù)還是ISP 技術(shù),都需要有機(jī)械性的操作如連接中,要對(duì)其進(jìn)行程序更新無(wú)疑線,設(shè)置跳線帽等。若產(chǎn)品的電路板已經(jīng)層層密封在外殼重重,若產(chǎn)品安裝于狹窄空間等難以觸及的地方,更是一。但若進(jìn)引入了 IAP 技術(shù),則完全可以避免上述尷尬情況,而且若使用遠(yuǎn)距離或無(wú)場(chǎng)線的數(shù)據(jù)傳輸方案,甚至可以實(shí)現(xiàn)編程和無(wú)線編程。這絕對(duì)是 ICP 或 ISP

3、技術(shù)無(wú)法做到的。某種微控制器支持 IAP 技術(shù)的首要前提是其必須是基于可重復(fù)編程閃存的微控制器。STM32 微控制器帶有可編程的內(nèi)置閃存,同時(shí) STM32 擁有在數(shù)量上和種類上都非常豐富的外設(shè)通口,因此在 STM32 上實(shí)現(xiàn) IAP 技術(shù)是完全可行的。實(shí)現(xiàn) IAP 技術(shù)的的 IAP 程序。這段程序主要負(fù)責(zé)與是一段預(yù)先燒寫(xiě)在單片機(jī)外部的上位機(jī)進(jìn)行握手同步,然后通過(guò)外設(shè)通口將來(lái)自于上位機(jī)的(APP)程序數(shù)據(jù)接收后寫(xiě)入單片機(jī)指定的閃存區(qū)域,然后再跳轉(zhuǎn)執(zhí)行新寫(xiě)入的程序,即 APP 程序,最終就達(dá)到了程序更新的目的。在 STM32 微控制器上實(shí)現(xiàn) IAP 程序之前首先要回顧一下 STM32 的閃存組織架

4、構(gòu)和其啟動(dòng)過(guò)程。STM32 的閃存地址起始于 0 x8000000,一般情況下,程序文件就從此地址開(kāi)始寫(xiě)入。此外 STM32 是基于Cortex-M3 內(nèi)核的微控制器,其通過(guò)一張“中斷向量表”來(lái)響應(yīng)中斷,程序啟動(dòng)后,將首先從“中斷向量表”取出復(fù)位中斷向量執(zhí)行復(fù)位中斷程序完成啟動(dòng)。而這張“中斷向量表”的起始地址是 0 x8000004,當(dāng)中斷來(lái)臨,STM32 的硬件機(jī)制亦會(huì)自動(dòng)將 PC 指針定位到“中斷向量表”處,并根據(jù)中斷源取出對(duì)應(yīng)的中斷向量執(zhí)行中斷服務(wù)程序。最后還需要知道關(guān)鍵的一點(diǎn),通過(guò)修改 STM32 工程的文件寫(xiě)入閃存的起始地址。可以修改程序在 STM32 微控制器上實(shí)現(xiàn) IAP 方案,

5、除了常規(guī)的串口接收數(shù)據(jù)以及閃存數(shù)據(jù)寫(xiě)入等常規(guī)操作外,還需注意 STM32 的啟動(dòng)過(guò)程和中斷響應(yīng)方式。圖 1 顯示了 STM32 常規(guī)的運(yùn)行流程。3圖 1 STM32 常規(guī)程序運(yùn)行流程對(duì)圖 1 解讀如下:1、STM32 復(fù)位后,會(huì)從地址為 0 x8000004 處取出復(fù)位中斷向量的地址,并跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序,如圖 1 中標(biāo)所示。2、復(fù)位中斷服務(wù)程序執(zhí)行的最終結(jié)果是跳轉(zhuǎn)至 C 程序的 main 函數(shù),如圖 1 中標(biāo)號(hào)所示,而 main 函數(shù)應(yīng)該是一個(gè)死循環(huán),是一個(gè)永不返回的函數(shù)。3、在 main 函數(shù)執(zhí)行的過(guò)程中,發(fā)生了一個(gè)中斷請(qǐng)求,此時(shí) STM32 的硬件機(jī)制會(huì)將 PC 指針強(qiáng)制指回中斷向

6、量表處,如圖 1 中標(biāo)號(hào)所示。4、根據(jù)中斷源進(jìn)入相應(yīng)的中斷服務(wù)程序,如圖 1 中標(biāo)號(hào)所示。5、中斷服務(wù)程序執(zhí)行完畢后,程序再度返回至 main 函數(shù)中執(zhí)行,如圖 1 中標(biāo)號(hào)所示。若在 STM32 中加入了 IAP 程序,則情況會(huì)如圖 2 所示:4圖 2 加入 IAP 后的程序運(yùn)行流程圖對(duì)圖 2 的解讀如下:1、 STM32 復(fù)位后,從地址為 0 x8000004 處取出復(fù)位中斷向量的地址,并跳轉(zhuǎn)執(zhí)行復(fù)位中斷服務(wù)程序,隨后跳轉(zhuǎn)至 IAP 程序的 main 函數(shù),如圖 2 中標(biāo)號(hào)、所示。這個(gè)過(guò)程和圖 1 相應(yīng)部分是一致的。2、執(zhí)行完 IAP 過(guò)程后(STM32多出了新寫(xiě)入的程序,圖 2 中以灰色底

7、紋方格表示,地址始于 0 x8000004+N+M)跳轉(zhuǎn)至新寫(xiě)入程序的復(fù)位向量表,取出 APP 程序的復(fù)位中斷向量的地址,并跳轉(zhuǎn)執(zhí)行 APP 程序的復(fù)位中斷服務(wù)程序,隨后跳轉(zhuǎn)至新程序的 main 函數(shù),其過(guò)2 的標(biāo)號(hào)所示。APP 程序的 main 函數(shù)應(yīng)該也具有永不返回的特性。同時(shí)應(yīng)該注意在 STM32 的空間在不同的位置上出現(xiàn)了 2 個(gè)中斷向量表。3、在新程序 main 函數(shù)執(zhí)行的過(guò)程中,一個(gè)中斷請(qǐng)求來(lái)臨,PC 指針仍會(huì)回轉(zhuǎn)至地址為0 x8000004 中斷向量表處,而并不是 APP 程序的中斷向量表,如圖 2 中標(biāo)號(hào)所示。注意到這是由 STM32 的硬件機(jī)制決定的。4、根據(jù)中斷源跳轉(zhuǎn)至對(duì)應(yīng)

8、的中斷服務(wù),如圖 2 中標(biāo)號(hào)所示。注意此時(shí)是跳轉(zhuǎn)至了 APP 程序的中斷服務(wù)程序中。55、中斷服務(wù)執(zhí)行完畢后,返回 main 函數(shù)。如圖 2 中標(biāo)號(hào)所示。從上述兩個(gè)過(guò)程的分析可以得知,對(duì)將使用 IAP 過(guò)程寫(xiě)入的程序要滿足 2 個(gè)要求:1、APP 程序必須從 IAP 程序之后的某個(gè)偏移量為 x 的地址開(kāi)始;2、必須將 APP 程序的中斷向量表相應(yīng)的移動(dòng),移動(dòng)的偏移量為 x;將中斷向量表移動(dòng)的方法是在程序中加入函數(shù):void NVIC_SetVectorTable(u32 NVIC_VectTab, u32 Offset);其中參數(shù) NVIC_VectTab 為中斷向量表起始位置,而參數(shù) Off

9、set 則為地址偏移量,如將中斷向量表移至 0 x8002000 處,則應(yīng)調(diào)用該函數(shù)如下:void NVIC_SetVectorTable(0 x8000000, 0 x2000);同時(shí)有必要提醒讀者注意的是,此函數(shù)只會(huì)修改 STM32 程序中用于中斷向量的結(jié)構(gòu)體變量,而不會(huì)實(shí)質(zhì)地改變中斷向量表在閃存中的物理位置,有了以上準(zhǔn)備后就可以著手設(shè)計(jì)一個(gè) IAP 方案了,如下:研究該程序原型。1、STM32 復(fù)位后,利用一個(gè)按鍵(也可以不用)的狀態(tài)進(jìn)行同步,當(dāng)按鍵按下時(shí)表示將要進(jìn)行 IAP 過(guò)程;2、在 IAP 過(guò)程中,通過(guò)上位機(jī)向 STM32 的外設(shè)通訊接口(比如 USART1、網(wǎng)口等)發(fā)送所要更新

10、的 APP 程序文件,STM32 接收到數(shù)據(jù)后轉(zhuǎn)而從 0 x8002000 地址開(kāi)始寫(xiě)入收到的數(shù)據(jù);3、再次復(fù)位后,跳轉(zhuǎn) 0 x8002004 地址開(kāi)始運(yùn)行 APP 程序;注意事項(xiàng):利用 IAP 寫(xiě)入的 APP 程序最好是.bin 格式的文件,但不能是.hex 格式的文件;向 STM32 發(fā)送 APP 程序文件時(shí)盡量慢一些,因?yàn)?STM32 對(duì) FLASH 的寫(xiě)入速度往往跟不上通訊外設(shè)接口的速度;(3)建議在 STM32 和上位機(jī)之間設(shè)計(jì)一套握IAP 的成功率;2.2APP制和出錯(cuò)管理機(jī)制,這樣可以大幅提高2.1 節(jié)所述的 IAP 程序必須通過(guò)其它,如 JTAG 或 ISP 燒入,可以把 IA

11、P 程序稱為 Bootloader 程序。APP 程序即是通過(guò) IAP 程序的應(yīng)用程序。IAP 和 APP 程序分別存放在 STM32 FLASH 的不同地址范圍,一般從最低地址區(qū)開(kāi)始存放 IAP,緊跟其后的就是 APP 程序(注意,如果 FLASH 容量足夠,是可以設(shè)計(jì)很多 APP 程序的)。3IAP 的實(shí)現(xiàn)IAP 程序內(nèi)建 TFTP 服務(wù)器,IP:53,端:69。PC 機(jī)通過(guò) TFTP,如“Tftpd32”,該需要先安裝。向該服務(wù)器傳輸文件,寫(xiě)入 STM32 的片內(nèi) FLASH 中。3.1實(shí)驗(yàn)步驟(1)用 JLINK 或串口線將“以太網(wǎng)升級(jí)例程_IAP”到開(kāi)發(fā)板,按下 S1S4 任一按鍵(

12、具體為什么可以參考程序),再按復(fù)位鍵“RESET”,此時(shí)開(kāi)發(fā)板開(kāi)始運(yùn)行 IAP 程序,等待 PC 機(jī) TFTP 下件。(2)打開(kāi)“Tftpd32”,默認(rèn)如下設(shè)置:6點(diǎn)擊上圖中的“Tftp Cnt”,并設(shè)置如下:上圖中,橘紅色框?yàn)殡娔X IP,紅色框?yàn)殚_(kāi)發(fā)板 IP 和端,點(diǎn)擊淡藍(lán)色按鈕,選擇要的 bin 文件(比如” LED 閃爍例程_APP”例程: 基于 TFTP 協(xié)議的以太網(wǎng)升級(jí)例程(機(jī))LED 閃爍例程_APPProjectBIN):7選擇好文件后,點(diǎn)擊”P(pán)ut”按鈕,稍等片刻,則會(huì)成功:點(diǎn)擊“確定”即可。按下”RESET”,則 APP 程序開(kāi)始運(yùn)行。如果要再更新固件時(shí),只需要按下 S1S4

13、 任一按到 IAP 程序,此時(shí)又可以用“Tftpd32”更新固件了。鍵,再?gòu)?fù)位3.2IAP 和 APP 程序的1、 在 IAP 程序中,跳轉(zhuǎn)到 APP 程序前要關(guān)閉總中斷以及復(fù)位中斷向量表和時(shí)鐘,如:2、 在 IAP 程序斷向量表的偏移值為 0 x0,如:83、 在 APP 程序中,要打開(kāi)全局中斷(如果用到中斷的話)。4、 在 APP 程序斷向量表的偏移值為 0 x10000(這個(gè)值要和 APP 程序的起始地址對(duì)應(yīng),本示例中的 APP 起始地址都是 0 x08010000),如:4BIN 文件的生成1、 設(shè)置 APP 程序起始地址打開(kāi)示例工程(如 LED 閃爍例程_APP),在工程的“Option for.”界面中的“”頁(yè)里將“IROM”的“Start”列改為 APP 程序起始的地址,如下圖中將程序起始位置設(shè)為0 x8010000(也可以是其他地址)。92、 利用 KEIL4 生成 BIN(1)在“LED 閃爍例程_APPP

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論