當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式教程
[導(dǎo)讀]基于VxWorks平臺(tái)的多串口卡通信設(shè)計(jì)

VxWorks操作系統(tǒng)是美國(guó)Wind River公司于1983年設(shè)計(jì)開(kāi)發(fā)的一種嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),良好的持續(xù)發(fā)展能力、高性能的內(nèi)核以及友好的用戶開(kāi)發(fā)環(huán)境,使其在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域居于領(lǐng)先地位,廣泛應(yīng)用于現(xiàn)代的各種嵌入式計(jì)算機(jī)系統(tǒng)中,比如軍事指揮系統(tǒng)、武器控制系統(tǒng)或工業(yè)控制系統(tǒng)中。而在這些系統(tǒng)中,往往不是單個(gè)計(jì)算機(jī)的控制,而是多個(gè)計(jì)算機(jī)以及其他設(shè)備組成通信網(wǎng)絡(luò)共同完成控制作用,因此,對(duì)于每一個(gè)嵌入式計(jì)算機(jī)除了連接必需的外設(shè)之外,還需要考慮計(jì)算機(jī)之間的通信。計(jì)算機(jī)間常用的通信方式是利用串行口來(lái)實(shí)現(xiàn)的。本文在VxWorks多串口通信的實(shí)現(xiàn)過(guò)程中未采用常見(jiàn)的標(biāo)準(zhǔn)VxWorks虛擬設(shè)備ttyDrv驅(qū)動(dòng)方式,而是在用戶的驅(qū)動(dòng)程序中直接對(duì)硬件進(jìn)行初始化,以中斷方式進(jìn)行串口通信。


1、環(huán)境及配置

VxWorks嵌入式開(kāi)發(fā)采用圖1所示的主機(jī)一目標(biāo)機(jī)方式。

 

其他硬件與本文關(guān)系不大,這里主要介紹串口卡,該卡是DIAMOND SYSTEM公司生產(chǎn)的EMERALD-MM-8型8串口擴(kuò)展卡(以下簡(jiǎn)稱EMM8),是基于2片ST16C554芯片的8串口集成板卡,每一路串口均可單獨(dú)配置成符合RS-232C/RS-422A/RS-485協(xié)議規(guī)范,最高速率可達(dá)115.2kb/s。通用異步收發(fā)器(UART)ST16C554用來(lái)擴(kuò)展4路串口通道。每路通道各有一組16B的收發(fā)FIFO和移位寄存器,用來(lái)緩沖數(shù)據(jù)和串并轉(zhuǎn)換。每個(gè)通道有12個(gè)8b內(nèi)部寄存器,用來(lái)存放收發(fā)數(shù)據(jù)以及配置該串口的工作模式,需要在初始化時(shí)對(duì)各寄存器進(jìn)行設(shè)置。本文根據(jù)工程的要求,將卡上的硬件跳線設(shè)好,如:各串口使用RS-232C協(xié)議,按照datasheet進(jìn)行硬件跳線。其中J9的配置較為重要,如圖2所示。

 

D、C、B、A 四位表示base address,從data sheet中查表可知其跳線情況,以本項(xiàng)目為例,base address為0x300,則D、C、B、A分別為out、out、in、in,為1100。

2、3、4…15為該卡可用的中斷號(hào),要使用哪個(gè)中斷就必須將其跳為in。本項(xiàng)目由于中斷資源不足,只能用一個(gè)中斷號(hào)即7號(hào)中斷,因此只將7設(shè)為in。

CK為頻段范圍跳線,對(duì)ST16C554來(lái)說(shuō)必須為in。

另外,EMM8在系統(tǒng)啟動(dòng)時(shí)會(huì)從板上的EEPROM 中讀取各個(gè)端口的基本配置信息,主要是端口映射地址及分配的中斷號(hào),這些信息可以在啟動(dòng)后編程修改,但一般是固定的,因此只要在EEPROM 中配置一次并保存即可。


2、多串口驅(qū)動(dòng)開(kāi)發(fā)


2.1 I/O系統(tǒng)與串口設(shè)備驅(qū)動(dòng)層次結(jié)構(gòu)

I/O系統(tǒng)與串口設(shè)備驅(qū)動(dòng)層次如圖3所示。

 

圖3中最底層就是要編寫(xiě)的驅(qū)動(dòng)程序。在這里主要完成對(duì)具體硬件的各種操作,以及與上層的接口。硬件驅(qū)動(dòng)層上面是ttyDrv和tyLib。這一層比較特殊,是Vxworks專門(mén)為串口設(shè)備準(zhǔn)備的一個(gè)虛擬驅(qū)動(dòng)庫(kù),它把跟具體硬件無(wú)關(guān)的操作集成在了這一層中。這樣用戶只編寫(xiě)與硬件有關(guān)的驅(qū)動(dòng)和跟這一層的接口函數(shù)即可。從總的結(jié)構(gòu)講,這2層都屬于設(shè)備驅(qū)動(dòng)的范疇。再上一層是I/O系統(tǒng)層,Vxworks的I/O系統(tǒng)向上提供了7個(gè)基本的I/O接口,供應(yīng)用程序調(diào)用;向下提供與各種設(shè)備驅(qū)動(dòng)程序的接口。I/O系統(tǒng)把應(yīng)用程序跟驅(qū)動(dòng)程序有機(jī)地連接起來(lái)。最頂層就是用戶根據(jù)應(yīng)用需要編寫(xiě)的應(yīng)用程序。ttyDrv是一個(gè)虛擬設(shè)備驅(qū)動(dòng),用于處理I/O系統(tǒng)與底層實(shí)際設(shè)備驅(qū)動(dòng)程序(可以是用戶設(shè)計(jì)的驅(qū)動(dòng)程序)之間的通信。使用ttyDrv控制串口是比較常見(jiàn)的串口驅(qū)動(dòng)實(shí)現(xiàn)方式,實(shí)際上,直接對(duì)硬件進(jìn)行初始化,以中斷方式進(jìn)行串口通信也是可行的方式,且更加靠近底層,可以更自由、高效的控制串口。[!--empirenews.page--]2.2 EMM8驅(qū)動(dòng)開(kāi)發(fā)

首先是對(duì)各串口的初始化和中斷配置,初始化包括設(shè)置波特率以及數(shù)據(jù)格式。

在實(shí)際的工程應(yīng)用中,需要8個(gè)串口共同使用一個(gè)中斷(中斷資源不足),實(shí)現(xiàn)8串口的全雙工同時(shí)收發(fā)。難點(diǎn)在于使用同一個(gè)中斷且不能丟數(shù)據(jù),對(duì)于驅(qū)動(dòng)使用同中斷問(wèn)題,關(guān)鍵是接收數(shù)據(jù)的中斷服務(wù)程序ISR。經(jīng)過(guò)探索,不論是否使用單中斷,讀EMM8卡上I/O Register Map表中的一個(gè)中斷狀態(tài)寄存器(interrupt status register),可以指出當(dāng)時(shí)是哪一個(gè)串口收到數(shù)據(jù),讀出該串口的數(shù)據(jù)即可。但是這種實(shí)現(xiàn)方法經(jīng)過(guò)測(cè)試在接收時(shí)丟數(shù)據(jù)。后經(jīng)研究發(fā)現(xiàn),中斷狀態(tài)寄存器并不一定在某一個(gè)時(shí)刻只有一個(gè)端口位發(fā)生跳轉(zhuǎn)。即CPU收到中斷后,有可能是幾個(gè)串口“同時(shí)”收到數(shù)據(jù),這是因?yàn)橹袛嗫刂破鲗⑼粋€(gè)CPU中斷分給了不同的串口。從CPU端看來(lái)只有一個(gè)中斷,但從各串口來(lái)講,這個(gè)中斷有可能是幾個(gè)串口“同時(shí)”產(chǎn)生的。因此要對(duì)中斷狀態(tài)寄存器進(jìn)行輪詢,由發(fā)生跳轉(zhuǎn)的串口位接收該串口的數(shù)據(jù)。修改后,經(jīng)過(guò)編寫(xiě)用例測(cè)試,可以穩(wěn)定地使用單中斷接收數(shù)據(jù)且不影響數(shù)據(jù)的發(fā)送。


2.3 驅(qū)動(dòng)測(cè)試

首先是各串口的功能測(cè)試,使用“串口調(diào)試助手”軟件工具通過(guò)PC機(jī)與各目標(biāo)機(jī)串口通信,收發(fā)數(shù)據(jù),然后通過(guò)屏幕顯示得到的數(shù)據(jù),對(duì)比規(guī)定的預(yù)期結(jié)果,檢測(cè)數(shù)據(jù)收發(fā)是否正確。經(jīng)多次驗(yàn)證,工作穩(wěn)定,通信正確。

綜合測(cè)試:使用2臺(tái)PC104分別安裝STV2050CPU模塊和EMM8多串口模塊各1塊,2臺(tái)PC通過(guò)網(wǎng)口(交換機(jī))連接2臺(tái)PC104,2個(gè)EMM8通過(guò)8根RS-232雙頭串口線連接。2臺(tái)PC通過(guò)網(wǎng)口使用tornado的shell工具下載啟動(dòng)程序。2臺(tái)PC104分別稱為1主機(jī)和2主機(jī)。測(cè)試方法是:

1主機(jī)同時(shí)發(fā)送8串口的數(shù)據(jù),2主機(jī)8串口接收并轉(zhuǎn)發(fā)回1主機(jī)。1主機(jī)接收返回的數(shù)據(jù),判斷是否通信錯(cuò)誤。經(jīng)檢驗(yàn)正確通信300000次無(wú)錯(cuò),多次驗(yàn)證。完成對(duì)EMM8多串口通訊模塊全雙工收發(fā)的測(cè)試。

經(jīng)過(guò)以上測(cè)試,表明本文所述的多串口卡通信實(shí)現(xiàn)方法有效,所開(kāi)發(fā)模塊穩(wěn)定可靠。


3、結(jié)束語(yǔ)

本文介紹了VxWorks嵌入式系統(tǒng)中的多串口卡通信的實(shí)現(xiàn)過(guò)程,因篇幅有限,不能列出詳盡代碼。本文以EMM8為例,采用驅(qū)動(dòng)直接訪問(wèn)硬件的方法,較為

簡(jiǎn)潔、高效地解決了單中斷多串口全雙工通信的問(wèn)題,滿足了項(xiàng)目需求,并經(jīng)過(guò)了測(cè)試和驗(yàn)收。為日后類(lèi)似問(wèn)題的解決提供了一些參考和經(jīng)驗(yàn)。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉