<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于VxWorks的多串口卡通信實(shí)現(xiàn)

          基于VxWorks的多串口卡通信實(shí)現(xiàn)

          作者: 時(shí)間:2010-01-27 來(lái)源:網(wǎng)絡(luò) 收藏

          操作系統(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)的。本文在通信的過(guò)程中未采用常見(jiàn)的標(biāo)準(zhǔn)虛擬設(shè)備ttyDrv驅(qū)動(dòng)方式,而是在用戶的驅(qū)動(dòng)程序中直接對(duì)硬件進(jìn)行初始化,以中斷方式進(jìn)行通信。

          本文引用地址:http://www.ex-cimer.com/article/152119.htm


          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í)際上,直接對(duì)硬件進(jìn)行初始化,以中斷方式進(jìn)行串口通信也是可行的方式,且更加靠近底層,可以更自由、高效的控制串口。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();