白志峰 徐曉丹



摘 要:本文著重介紹了基于單片機的遠程升級在節水灌溉控制器上的應用,單片機選用NXP的LPC1763,利用該芯片的IAP功能,采用雙用戶程序區的設計思路,有效的防止了升級過程中通訊故障或意外斷電等問題造成的遠程升級失敗而導致的產品失控問題,有效的保證了遠程升級的可靠性。
關鍵詞:節水灌溉 遠程升級 無線通訊 單片機
中圖分類號:TP311.52文獻標識碼:A文章編號:1003-9082(2020)02-000-01
根據我國的水資源現狀,我國政府部門提出了節水灌溉的號召,大量的節水灌溉控制器應運而生。由于我國地域遼闊,不同地方的水資源情況和農田分布情況差別較大,統一采用一種控制方式很不實際,要根據不同的地域設計不同的控制策略;另外,由于國內灌溉區域分布較廣,現場維護升級費時費力[1]。針對這些問題,我們需要在節水灌溉控制器中設計遠程升級功能。
當前嵌入式設備的程序升級大都利用主控芯片的IAP功能,將Flash劃分為2個區,一個區存儲引導程序,該引導程序可以實現數據通訊及用戶區程序擦寫操作,另一個區存儲用戶程序。當設備需要升級時,先擦除用戶程序,然后再接收新的固件代碼并將其存儲在用戶程序區,實現遠程在線升級更新。這種程序升級方法適合于通訊狀況良好的場合,但農田罐區一般都分布在非人口聚集區,網絡通訊狀況較差,且經常會出現意外斷電的情況,針對這種情況我們在設計時采用了雙用戶程序區的設計思路,即設計了兩個用戶程序存儲區,升級程序時不擦除當前運行的程序代碼,而是把新固件放置在另外一個用戶程序區,待固件下載完畢檢驗無誤后再跳轉到新的代碼區執行,采用這種方法極大的提高了設備的穩定性。
一、硬件設計
節水灌溉控制器采用NXP半導體公司的LPC1763FBD100作為主控芯片,該芯片采用ARMCortex-M3內核,內部集成Flash容量為256KB,該芯片支持在線編程和啟動引導功能,可以實現遠程程序升級功能。
節水灌溉控制器的無線通訊采用了有人科技的USR-GM3無線通訊模塊,支持串口轉GPRS的透明傳輸,該模塊與主控芯片LPC1763采用Uart接口連接,通過GPRS與數據中心的服務器連接,如圖1所示。
二、軟件設計
將LPC1763的代碼區域分為四個區,有一個IAP程序區,一個標志存儲區和兩個用戶區,如表1所示為各區在Flash中的地址分配情況。兩個用戶區可以存儲用戶固件,用戶區和IAP程序區之間可以相互跳轉運行。
IAP程序區中存儲的代碼主要用于負責管理遠程升級,確定當前運行程序使用第一用戶區的固件1還是使用第二用戶區的固件2,程序第一次正常運行時是使用第一用戶區的固件1運行的,當第一用戶區的固件在運行過程中檢測到遠程升級請求時,代碼跳轉到IAP程序區運行,IAP程序負責驗證遠程升級的確定性,檢查當前用戶使用的固件程序所在的區域位置(稱為當前固件存儲區),確定非當前固件存儲區,在確保校驗正確的情況下,將遠程升級代碼下載到非當前固件存儲區,下載完畢且校驗正確后,IAP程序將最新下載固件的存儲區設置為當前固件存儲區,并修改相應的標志位,跳轉到最新固件存儲區開始運行,完成遠程升級,如圖2所示為IAP程序流程圖。
三、通訊協議
為了確保安全,在通訊協議中設計了握手、安全認證等環節,所有通訊都采用CRC校驗方式,確保數據準確可靠,具體通訊格式如下表
其中的8字節地址為控制器出廠時的唯一指定地址,數據長度為數據域長度,總報數和包號只對程序包傳輸有效,對于其他指令無效,用0x000x00填充。CRC校驗為數據幀所有數據的16位冗余校驗,控制器響應指令中的數據域主要反映接收數據包是否正確,正確為0x1A,否則為0xA1,服務器下發指令和控制器響應指令中的命令字均相同。
四、測試
對在農田灌溉現場應用的節水灌溉控制器進行遠程程序升級測試,發現對于網絡狀況不好的地區的控制器升級需要盡量用比較小的數據包一次成功率更高,單包數據不超過1Kbyte為宜,經過多次對不同地區的遠程升級測試,沒有發現因為意外斷電或網絡不暢而出現控制器失靈的問題。
五、結論
在節水灌溉控制上采用雙用戶程序區的遠程升級方法有效的避免了升級過程中意外斷電或網絡中斷造成的控制器完全失靈的問題,由于GPRS通訊的速率相對較低,而且有些偏遠地區信號狀況較差,需要使用較小的數據包傳輸數據,升級用時相對較長,隨著無線通訊速度和無線通訊質量的不斷提高,這些問題都會被解決。
參考文獻
[1]劉曉.節水灌溉控制技術研究綜述[J].電子世界,2019.