基于串行口-以太網橋的車速傳感器測試平臺
3.2 軟件系統設計
由于整個網橋的底層功能(如以太網協議實現)已由硬件電路完成(見圖4),所以在軟件上只需完成RTL8019AS驅動、精簡TCP/IP協議棧實現、用戶自定義應用層處理以及串行口通信等功能。為了便于軟件功能的實現和擴充,軟件系統采用模塊化方法進行設計[2]。
3.2.1 RTL8019AS驅動模塊
此模塊設計依賴于RTL8019AS的硬件工作原理,即對RTL8019AS的驅動是通過操作其內部寄存器組來完成的。通常,在進行數據收發前需先向各寄存器寫入相應的控制字,當發送以太網數據幀時,微控制器通過RTL8019AS的I/O端口將打包好的數據以遠程DMA方式寫入到RTL8019AS的內部數據發送緩沖區,然后啟動發送;接收以太網數據幀時,RTL8019AS會自動接收數據并將其存入自己的內部數據接收緩沖區,然后以寄存器標志或中斷請求方式通知,再通過RTL8019AS的I/O端口將數據以遠程DMA方式讀到自己的數據緩沖區并進行下一步的拆包處理。基于以上分析,RTL8019AS驅動程序分三部分設計,即芯片初始化(設置MAC地址、收發緩沖區大小、中斷等)、發送數據子程序和接收數據子程序。詳細的驅動程序見文獻[3]。
3.2.2 精簡TCP/IP協議棧模塊設計
此模塊負責TCP/IP協議的處理。由于以太網協議只規定了物理層和數據鏈路層,所以要想實現進程間通信還必須實現上層的TCP/IP協議。但此協議非常復雜,而且很多功能都是針對PC平臺的應用,在嵌入式系統中根本用不上;另外,8位微控制器的處理能力和內存空間也使得在其上實現完整的TCP/IP協議根本不可能。因此,在8位機上用軟件實現TCP/IP協議時首先必須根據應用需求對整個協議棧進行裁剪[4]。在本應用中,由于只需要在串行口和以太網間進行簡單的測試數據和測試命令傳輸,所以在應用層采用了自定義協議,在傳輸層選擇了能保證可靠性的TCP協議并進行了有針對性的TCP協議機制裁剪,而在網絡層只實現了不提供分片和路由功能的IP協議、測試網絡連通性所需的ICMP協議(僅支持Ping應答)以及提供IP地址到以太網地址(MAC地址)映射的ARP協議。這樣,就得到了一個能在低檔8位機上實現和運行的精簡TCP/IP協議棧。此協議棧從物理層到應用層的完整結構如圖5所示。

3.2.3 應用程序模塊設計
應用程序模塊直接面向用戶需求提供相應服務。本設計中,根據整個軟件模塊的功能劃分,應用程序需要完成串行口通信處理及串行幀和IP分組的格式轉換。由于嵌入式串行口-以太網橋的TCP/IP協議棧傳輸層選擇了保證數據傳輸可靠性的TCP協議(向應用層提供流式套接字接口),所以應用程序無需再進行超時重發和回傳確認處理,僅需要完成串行口的數據收發操作以及串行數據幀和IP分組的格式轉換。進行串行數據幀和IP分組的格式轉換時使用了共享數據緩沖區和指針技術以避免協議分層間的數據拷貝,不僅節省了內存空間,而且大大提高了打包和拆包的處理速度;另外,由于串行口設備每次需傳輸的數據量很小,所以四個串行口緩沖區的數據采用集中打包、一次發送的方法減少了網絡訪問次數,既提高了通信效率又避免了因頻繁短幀傳輸造成的網絡擁堵;最后應用程序模塊還提供了嵌入式串行口-以太網橋的串行口屬性配置功能,用戶可根據各測試設備串行口的具體屬性,在管控計算機上通過以太網對網橋的各串行口收發數據緩沖區以及波特率進行遠程動態設置,從而極大地提高了網橋的適應性。
實驗證明,本文提出的嵌入式串行口-以太網橋應用于車速傳感器性能測試平臺,不但能完全滿足測試平臺的通信要求,還具有成本低、體積小、可靠性高等優點。同時在此網橋的硬件平臺上,只要針對具體應用需求對應用程序模塊稍作修改就可應用于其他汽車傳感器性能測試平臺(如輪速傳感器性能測試平臺)以及溫室、環保、氣象等需要遠程監測的場合。因而該串行口-以太網橋具有很強的適應性和很高的推廣應用價值。
評論