基于串行口-以太網(wǎng)橋的車速傳感器測(cè)試平臺(tái)
3.2 軟件系統(tǒng)設(shè)計(jì)
由于整個(gè)網(wǎng)橋的底層功能(如以太網(wǎng)協(xié)議實(shí)現(xiàn))已由硬件電路完成(見圖4),所以在軟件上只需完成RTL8019AS驅(qū)動(dòng)、精簡(jiǎn)TCP/IP協(xié)議棧實(shí)現(xiàn)、用戶自定義應(yīng)用層處理以及串行口通信等功能。為了便于軟件功能的實(shí)現(xiàn)和擴(kuò)充,軟件系統(tǒng)采用模塊化方法進(jìn)行設(shè)計(jì)[2]。
3.2.1 RTL8019AS驅(qū)動(dòng)模塊
此模塊設(shè)計(jì)依賴于RTL8019AS的硬件工作原理,即對(duì)RTL8019AS的驅(qū)動(dòng)是通過(guò)操作其內(nèi)部寄存器組來(lái)完成的。通常,在進(jìn)行數(shù)據(jù)收發(fā)前需先向各寄存器寫入相應(yīng)的控制字,當(dāng)發(fā)送以太網(wǎng)數(shù)據(jù)幀時(shí),微控制器通過(guò)RTL8019AS的I/O端口將打包好的數(shù)據(jù)以遠(yuǎn)程DMA方式寫入到RTL8019AS的內(nèi)部數(shù)據(jù)發(fā)送緩沖區(qū),然后啟動(dòng)發(fā)送;接收以太網(wǎng)數(shù)據(jù)幀時(shí),RTL8019AS會(huì)自動(dòng)接收數(shù)據(jù)并將其存入自己的內(nèi)部數(shù)據(jù)接收緩沖區(qū),然后以寄存器標(biāo)志或中斷請(qǐng)求方式通知,再通過(guò)RTL8019AS的I/O端口將數(shù)據(jù)以遠(yuǎn)程DMA方式讀到自己的數(shù)據(jù)緩沖區(qū)并進(jìn)行下一步的拆包處理。基于以上分析,RTL8019AS驅(qū)動(dòng)程序分三部分設(shè)計(jì),即芯片初始化(設(shè)置MAC地址、收發(fā)緩沖區(qū)大小、中斷等)、發(fā)送數(shù)據(jù)子程序和接收數(shù)據(jù)子程序。詳細(xì)的驅(qū)動(dòng)程序見文獻(xiàn)[3]。
3.2.2 精簡(jiǎn)TCP/IP協(xié)議棧模塊設(shè)計(jì)
此模塊負(fù)責(zé)TCP/IP協(xié)議的處理。由于以太網(wǎng)協(xié)議只規(guī)定了物理層和數(shù)據(jù)鏈路層,所以要想實(shí)現(xiàn)進(jìn)程間通信還必須實(shí)現(xiàn)上層的TCP/IP協(xié)議。但此協(xié)議非常復(fù)雜,而且很多功能都是針對(duì)PC平臺(tái)的應(yīng)用,在嵌入式系統(tǒng)中根本用不上;另外,8位微控制器的處理能力和內(nèi)存空間也使得在其上實(shí)現(xiàn)完整的TCP/IP協(xié)議根本不可能。因此,在8位機(jī)上用軟件實(shí)現(xiàn)TCP/IP協(xié)議時(shí)首先必須根據(jù)應(yīng)用需求對(duì)整個(gè)協(xié)議棧進(jìn)行裁剪[4]。在本應(yīng)用中,由于只需要在串行口和以太網(wǎng)間進(jìn)行簡(jiǎn)單的測(cè)試數(shù)據(jù)和測(cè)試命令傳輸,所以在應(yīng)用層采用了自定義協(xié)議,在傳輸層選擇了能保證可靠性的TCP協(xié)議并進(jìn)行了有針對(duì)性的TCP協(xié)議機(jī)制裁剪,而在網(wǎng)絡(luò)層只實(shí)現(xiàn)了不提供分片和路由功能的IP協(xié)議、測(cè)試網(wǎng)絡(luò)連通性所需的ICMP協(xié)議(僅支持Ping應(yīng)答)以及提供IP地址到以太網(wǎng)地址(MAC地址)映射的ARP協(xié)議。這樣,就得到了一個(gè)能在低檔8位機(jī)上實(shí)現(xiàn)和運(yùn)行的精簡(jiǎn)TCP/IP協(xié)議棧。此協(xié)議棧從物理層到應(yīng)用層的完整結(jié)構(gòu)如圖5所示。
3.2.3 應(yīng)用程序模塊設(shè)計(jì)
應(yīng)用程序模塊直接面向用戶需求提供相應(yīng)服務(wù)。本設(shè)計(jì)中,根據(jù)整個(gè)軟件模塊的功能劃分,應(yīng)用程序需要完成串行口通信處理及串行幀和IP分組的格式轉(zhuǎn)換。由于嵌入式串行口-以太網(wǎng)橋的TCP/IP協(xié)議棧傳輸層選擇了保證數(shù)據(jù)傳輸可靠性的TCP協(xié)議(向應(yīng)用層提供流式套接字接口),所以應(yīng)用程序無(wú)需再進(jìn)行超時(shí)重發(fā)和回傳確認(rèn)處理,僅需要完成串行口的數(shù)據(jù)收發(fā)操作以及串行數(shù)據(jù)幀和IP分組的格式轉(zhuǎn)換。進(jìn)行串行數(shù)據(jù)幀和IP分組的格式轉(zhuǎn)換時(shí)使用了共享數(shù)據(jù)緩沖區(qū)和指針技術(shù)以避免協(xié)議分層間的數(shù)據(jù)拷貝,不僅節(jié)省了內(nèi)存空間,而且大大提高了打包和拆包的處理速度;另外,由于串行口設(shè)備每次需傳輸?shù)臄?shù)據(jù)量很小,所以四個(gè)串行口緩沖區(qū)的數(shù)據(jù)采用集中打包、一次發(fā)送的方法減少了網(wǎng)絡(luò)訪問(wèn)次數(shù),既提高了通信效率又避免了因頻繁短幀傳輸造成的網(wǎng)絡(luò)擁堵;最后應(yīng)用程序模塊還提供了嵌入式串行口-以太網(wǎng)橋的串行口屬性配置功能,用戶可根據(jù)各測(cè)試設(shè)備串行口的具體屬性,在管控計(jì)算機(jī)上通過(guò)以太網(wǎng)對(duì)網(wǎng)橋的各串行口收發(fā)數(shù)據(jù)緩沖區(qū)以及波特率進(jìn)行遠(yuǎn)程動(dòng)態(tài)設(shè)置,從而極大地提高了網(wǎng)橋的適應(yīng)性。
實(shí)驗(yàn)證明,本文提出的嵌入式串行口-以太網(wǎng)橋應(yīng)用于車速傳感器性能測(cè)試平臺(tái),不但能完全滿足測(cè)試平臺(tái)的通信要求,還具有成本低、體積小、可靠性高等優(yōu)點(diǎn)。同時(shí)在此網(wǎng)橋的硬件平臺(tái)上,只要針對(duì)具體應(yīng)用需求對(duì)應(yīng)用程序模塊稍作修改就可應(yīng)用于其他汽車傳感器性能測(cè)試平臺(tái)(如輪速傳感器性能測(cè)試平臺(tái))以及溫室、環(huán)保、氣象等需要遠(yuǎn)程監(jiān)測(cè)的場(chǎng)合。因而該串行口-以太網(wǎng)橋具有很強(qiáng)的適應(yīng)性和很高的推廣應(yīng)用價(jià)值。
評(píng)論