STM32F108C8+W5200基于HTTP的遠程配置和固件更新_第1頁
STM32F108C8+W5200基于HTTP的遠程配置和固件更新_第2頁
STM32F108C8+W5200基于HTTP的遠程配置和固件更新_第3頁
STM32F108C8+W5200基于HTTP的遠程配置和固件更新_第4頁
STM32F108C8+W5200基于HTTP的遠程配置和固件更新_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、基于 HTTP的遠程配置和固件更新STM32F108C8 + W52002013/11/28 | Filed under:TCP/IP芯片 and tagged with:HTTP,W5200,wiznet,升級,固件更新,遠程配置 143 Views(已在無線電雜志第10期刊登)對于HTTP的思考你也許會問,既然通過一個上位機程序可以完成這個任務,為什么還要通過瀏覽器實現(xiàn)呢?其實這兩個方法各有優(yōu)缺點,用上位機程序,用戶可以自己定制協(xié)議,但是用戶不僅需要安裝該上位機程序,而且還要考慮面對不同的操作系統(tǒng)下的兼容情況。然而通過網(wǎng)頁更新的話,只需要設備內(nèi)嵌一個HTTP服務器,便省去了編寫上位機程序的

2、負擔,并無須考慮去兼容不同的操作系統(tǒng)。當然,上位機程序可以實現(xiàn)UDP廣播尋址終端,無需知道終端IP地址即可找到同一網(wǎng)段下的多個終端。而使用網(wǎng)頁的話就只能是預先知道終端IP地址并逐一配置。其實,對于通過網(wǎng)頁配置相信大家并不陌生,家里有無線路由器的朋友估計都有實踐經(jīng)驗。通過瀏覽器鍵入路由器的默認IP,然后根據(jù)網(wǎng)頁提示就可以一步步地實現(xiàn)設備信息配置,諸如WiFi密碼、SSID等。今天,我們就是來探究一下這個應用的原理,在單片機里實現(xiàn)一個HTTP服務器,通過這個HTTP服務器來配置設備信息,并實現(xiàn)了設備固件更新。當然,我這里的這個HTTP服務器沒有家里的路由器那樣的功能強大,在這里也只是拋磚引玉,希望

3、大家能夠從中獲取啟發(fā),設計出更出色的產(chǎn)品。方便起見,我們?nèi)耘f延續(xù)上一篇文章的平臺基于Cortex-M3的W5200評估板(STM32F108C8 + W5200)。圖1 W5200評估板該評估板單片機的系統(tǒng)資源:64KB的閃存和20KB的SRAM。(W5200可以和任何單片機配合使用,如果用戶想使用其他單片機+W5200來實現(xiàn)的話,需要您自行修改代碼,這里暫不提供其他庫。)功能演示在我們展開談論基于HTTP的遠程配置和固件更新的原理之前,先給大家看一下我們這個程序小樣的功能演示。感興趣的朋友可以在接下來的文章中,了解到具體該功能是如何實現(xiàn)的。步驟1:用ISP工具燒錄Boot(評估板SW2 調(diào)至

4、PROP),不了解的話,可以參考我們上一個主題內(nèi)容。圖2用FlashLoader燒錄boot.bin步驟2:將評估板上SW2 調(diào)到RUN模式,打開ConfigTool。點擊按鈕,可查找到當前設備,并可通過按鈕,將app.bin程序上傳至評估板中,右側可看到當前設備的IP地址及版本號等信息,此時版本號為1.0,如圖:圖3配置工具燒錄app.bin成功ConfigTool這里的工作也很簡單,就是在第一次Boot啟動時,把App傳給單片機。當App運行時,ConfigTool就無用武之地了,因為用瀏覽器就可以完成ConfigTool的工作了。(注:以上途徑并不是必須的,僅為了方便演示,保證boot和

5、app程序已經(jīng)燒錄好即可。)步驟3:在瀏覽器中輸入W5200評估板的IP地址,回車后出現(xiàn)Web界面。如圖可看到,界面分為Device Settings和Firmware Updating兩部分,其中Device Settings中依次列出W5200評估板的硬件版本號、MAC地址、IP地址、子網(wǎng)掩碼以及默認網(wǎng)關基本配置。用戶可以配置其他IP地址,子網(wǎng)掩碼及網(wǎng)關,并點擊Save settings and Reboot,設置并重啟生效;圖4 Web配置界面如:在WEB界面上,將IP地址改為0。更改后保存,等待后更改成功:圖5更改IP成功步驟4:下面針對固件

6、更新,點擊“瀏覽”按鈕,選擇好要更新文件。;選好后開始上傳,出現(xiàn)以下界面,更新過程需要6s.圖6等待升級完成更新完成,可以看到新成功,版本號更改為5.0,IP地址以及界面顏色都進行了更新,如下圖:圖7升級成功是不是很簡單?馬上動手,也給你的設備加入一個HTTP服務器,實現(xiàn)遠程配置升級功能吧。當然,配置和升級只是應用的一小部分,你也完全可以通過模擬/數(shù)字輸入接入幾個傳感器,比如溫度、濕度和PM2.5,這樣打開瀏覽器就可以監(jiān)視這些傳感器數(shù)據(jù)了。這個小樣只是一個簡單的功能及原理演示,下面就讓我們來看一下這個基于 HTTP的遠程配置和固件更新實現(xiàn)的思路及原理。應用原理1. 方框圖圖8 HTTP遠程更新

7、固件框圖每次重啟,均從首地址開始執(zhí)行程序:1啟動進入BOOT區(qū),若BOOT檢測APP區(qū)的不為空,則跳轉到APP區(qū)的首地址執(zhí)行主程序;2瀏覽器訪問APP區(qū)的網(wǎng)頁服務器 配置網(wǎng)絡參數(shù):即將瀏覽器中鍵入的參數(shù)通過APP更新到Configure Information區(qū) 遠程更新固件:即進入到以下步驟33瀏覽器訪問APP主程序的網(wǎng)頁服務器,并通過瀏覽器將即將更新的APP寫入到Backup區(qū);4當APP檢測到Backup區(qū)域已經(jīng)有新的APP程序后,跳轉到BOOT區(qū),執(zhí)行更新操作;5BOOT將APP區(qū)擦除,并將新APP從Backup區(qū)寫入到APP區(qū);重啟,重新執(zhí)行程序。2. 內(nèi)存圖圖9 W5200評估板內(nèi)

8、存空間分配在我們要演示的程序中,將MCU閃存劃分成了四個區(qū):3. 各分區(qū)的主要功能了解了空間分配之后,我們再來看一下我們這個演示中各部分的主要功能:1. BOOT區(qū): 清空APP區(qū),為新APP寫入做準備; 把暫存在Backup區(qū)的新版本程序拷貝到APP區(qū); 與上位機程序通信,獲取App;備注:其實,這里Boot不必具備這個功能,只是我們編譯完兩個固件后,不想合并兩個二進制文件,然后再通過ISP工具燒錄,所以偷個懶,沿用了上次的上位機程序。1. APP區(qū)APP區(qū)是應用程序運行區(qū)域,實現(xiàn)了HTTP服務器,并集成了一個簡單的網(wǎng)頁。 配置網(wǎng)絡參數(shù); 在線固件升級;上電啟動后,進入Boot區(qū),若判斷上層

9、APP區(qū)的狀態(tài)量成功,則直接從Boot區(qū)跳轉到APP區(qū),運行主程序。備注:想修改網(wǎng)頁的話,可以參考webpage.h,所有的HTML代碼都在這個頭文件里面。1. Backup區(qū) 接收并備份需要更新的新App備注:由于Backup區(qū)的大小為23K,所以意味著APP的大小最大為23K;APP區(qū)為24K,其實有1K是無數(shù)據(jù)存放的;1. Configure Information區(qū) 存放IP地址,MAC地址,子網(wǎng)掩碼等網(wǎng)絡參數(shù),以供App調(diào)用; App可以再寫入,更新該區(qū)域存放的網(wǎng)絡配置參數(shù);程序開發(fā)我們將App程序主要分為5個文件:main.c實現(xiàn)HTTP固件更新的主流程;httputil.c文件用

10、于實現(xiàn)HTTP協(xié)議響應報文的發(fā)送;httpd.c文件用于實現(xiàn)對HTTP請求報文的解析;device.c文件用于實現(xiàn)W5200的初始化及單片機的基本配置;webpage.h文件定義web界面的html語言。這里我們重點介紹一下http()函數(shù):http()函數(shù)實現(xiàn)了Web服務器接受請求和回復響應的全過程,由于Web服務器在和瀏覽器通信時使用TCP協(xié)議工作,根據(jù)SOCK_HTTP之間狀態(tài)的不同,執(zhí)行不同的操作。圖10 HTTP服務器通信過程示意圖HTTP服務器的通信過程大致分為三步:1. 連接:W5200分配socket到HTTP服務器,打開socket并監(jiān)聽。2. 通信:連接建立了。W5200在

11、接收到來自客戶端的HTTP請求后發(fā)送HTTP應答。3. 關閉:HTTP 請求/應答完成后關閉連接。voiddo_http(void)uint8 ch=SOCK_HTTP; /定義HTTP通信的socket端口變量uint16len;st_http_request *http_request;memset(rx_buf,000,MAX_URI_SIZE);http_request = (st_http_request*)rx_buf; / 定義HTTP請求報文的結構指針/* HTTP Server 狀態(tài)之間的轉換 */switch(getSn_SR(ch)case SOCK_INIT: /soc

12、ket 初始化狀態(tài)listen(ch); /Web服務器監(jiān)聽break;case SOCK_LISTEN: /socket監(jiān)聽狀態(tài)break;case SOCK_ESTABLISHED: /socket建立連接成功if(getSn_IR(ch) &Sn_IR_CON)setSn_IR(ch, Sn_IR_CON); /Sn_IR的第0位置1if (len = getSn_RX_RSR(ch) 0)len = recv(ch, (uint8*)http_request, len); /接收客戶端的請求并存入http_request中*(uint8*)http_request)+len) = 0;

13、proc_http(ch, (uint8*)http_request); /解析HTTP請求,并發(fā)送HTTP Responsedisconnect(ch); /斷開TCP連接break;case SOCK_CLOSE_WAIT: /socket等待關閉狀態(tài)if (len = getSn_RX_RSR(ch) 0)/printf(“close wait: %drn”,len);len = recv(ch, (uint8*)http_request, len);*(uint8*)http_request)+len) = 0;proc_http(ch, (uint8*)http_request);

14、/ 解析HTTP請求,并發(fā)送HTTP Responsedisconnect(ch); / 斷開TCP連接break;case SOCK_CLOSED: / socket 關閉狀態(tài)socket(ch, Sn_MR_TCP, 80, 000); /初始化socket端口break;default:break;完整的程序代碼請于以下地址下載:/share/link?shareid=&uk=后記以上我們介紹了基于 HTTP的遠程配置和固件更新的相關原理及思路。細心的朋友可能會發(fā)現(xiàn),我們這里的網(wǎng)頁是和APP程序放在一起的,均在APP區(qū)。也就是意味著,我們通過網(wǎng)頁更新APP程序

溫馨提示

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

評論

0/150

提交評論