田洪杰 孔微



【摘? 要】Labview在測控領域應用廣泛,其圖形化的編程方式較傳統的文本編程方式入門難度更低。本文使用Labview編寫上位機實現了對S19文件的解析、數據的收發,并結合下位機底層Bootloader程序實現了對控制器程序的刷寫。
【關鍵詞】虛擬儀器;Labview;Bootloader
1.技術背景
Labview是美國NI公司推出的一款圖形化的編程環境,不同于傳統的文本編程環境,Labview通過拖拽連線的方式進行編程,軟件內置了大量的功能組件,工程師可以通過對這些組件的組合快速的實現所需的軟件功能。 在使用Labview編程時,后端功能邏輯可以與前端界面同步開發,大大提高了編程效率,在SpaceX火箭的地面測控系統中就使用了Labview來編寫GUI界面用于發射和控制。本文使用Labview開發了一款車載控制器的Bootloader上位機系統,并實現了對MC9S12XS128控制器的程序刷寫,以此來探索Labview在控制器測試開發中的應用。
2.總體設計
Bootloader 上位機主要功能是將編譯完成的程序數據刷寫到控制器的指定內存區域,實現對控制器程序的更新。上位機讀取程序文件,并將文件解析成數據和對應的刷寫地址,通過通用接口將這些指令發送給控制器,控制器的底層Bootloader服務程序在芯片級實現數據的更改。軟件后臺總體分為S19文件解析、USBCAN協議轉換、數據刷寫等幾個功能塊。
3.S19 文件解析
S19文件是飛思卡爾公司推出的一種數據存儲格式,文件以文本格式存儲了編譯后的數據和數據存放地址。S19文件在每一行數據(又稱記錄)的起始都用標明了本行的數據類型。在上位機書解析文件時,關心以S1開頭的行即可。以下面的行為例:
S105FF7AC019A8
“S1“表明本條記錄存儲的地址值長度為2字節,”05“表示數據長度,”FF7A“為數據起始地址,”C019“為從起始地址開始需要寫入存儲區的數據,”A8“為校驗位。在Labview編程時,使用“讀取讀取文本文件”VI可以方便的讀取S19文件,使用“截取字符串“VI可以對數據進行截取,從而對S19文件進行解析。
在控制器執行內部存儲區刷寫操作時,每次操作是以扇區為單位進行的。程序數據有時并不能完整的填充一個扇區,這時需要對數據進行補齊,補齊時使用“FF“進行填充。補齊扇區的思路為:先檢測數據長度,如果數據長度不能被扇區長度整除,那么在數據的末尾使用”連接字符串“VI對數據進行補齊。程序部分框圖如下。
4.Boot loader協議
上位機與控制器通過CAN接口通信,通信應用層協議如下,通過前兩字節的口令對數據功能進行了定義。上位機將S19文件解析后,結合口令向控制器發送數據指令。在控制器接收到指令后,可以根據指令執行不同的內存操作,從而實現程序的更新操作。
5.USBCAN通訊卡協議轉換
上位機使用的是北方半島儀器的USBCAN通訊卡,由于廠家沒有提供Labview版本的二次開發包,需要根據通訊卡的接口協議編寫一個簡單的協議轉換程序。通訊數格式為:FrameHead +Data+CheckSum+FrameTail,控制符為0xA5, FrameHead為連續的兩個0xAA, FrameTail為連續的兩個0x55,如果Data中含0xA5、0xAA、0x55(即特殊字符),則在發送該字符之前添加一個控制符0xA5。CheckSum為8位校驗和,即Data的所有數據之和的低八位。程序框圖如下。
6.用戶操作設計
上位機的用戶交互操作并不是很多,只需要選擇端口、選擇S19文件和點擊刷寫按鈕。在程序的框圖中使用事件結構來相應用戶操作即可,另外在上位機中還加入了連接控制器等功能,以確認上位機與控制器的通訊狀態。上位機的最終界面如下。
7.結束語
經測試使用Labview開發的上位機系統在實際使用中能夠正確的對控制器程序進行刷寫,達到了預期要求。與傳統的文本編程語言相比此次開發所用時間較傳統編程語言縮短50%以上,圖形化的編程方式更加直觀,更改也更加容易。
參考文獻
[1]陳樹學,劉萱. LabVIEW寶典[M]. 北京:電子工業出版社,2011,1-602.
[2]混合動力汽車電機控制器硬件設計與CAN通信[J]. 彭朝亮,馮國勝,袁新華.? 農業裝備與車輛工程. 2017(03).
[3]王宜懷,曹金華. 嵌入式系統設計實戰——基于飛思卡爾S12微控制器 [M]. 北京:北京航空航天大學出版社,2011:289-313.