異步串行通訊口(UART)是在工業(yè)自動(dòng)化中應(yīng)用最為廣泛的通訊接口之一,其接口形式包括RS232C、RS485、RS422。作為以網(wǎng)絡(luò)通訊為特色的英創(chuàng)嵌入式主板產(chǎn)品,常常會(huì)面臨支持多串口(串口數(shù)量通常超過6個(gè))的應(yīng)用。在通常情況下串口的數(shù)據(jù)收發(fā)均采用硬件中斷驅(qū)動(dòng),但對(duì)于多串口的應(yīng)用,由于系統(tǒng)資源的限制,不可能為每一個(gè)串口控制器提供一個(gè)獨(dú)立的中斷,而必須采用中斷共享的技術(shù),在WinCE環(huán)境中,中斷共享還涉及到更為復(fù)雜的驅(qū)動(dòng)程序。為了方便客戶能高效、低成本的實(shí)現(xiàn)多串口的擴(kuò)展,英創(chuàng)公司專門設(shè)計(jì)了采用硬件中斷共享技術(shù)的4串口擴(kuò)展單元ETA503,作為客戶實(shí)際擴(kuò)展的參考。
本文將以EM9000嵌入式主板作為系統(tǒng)的嵌入式主板,具體介紹ETA503的使用方法,該方法同樣適用于英創(chuàng)的其他嵌入式主板產(chǎn)品,如EM9260、EM9360、ETR232H等。客戶可參考本文及ETA503的資料,快速實(shí)現(xiàn)自己的多串口產(chǎn)品。
注意,本文所介紹的串口擴(kuò)展方法的基本特點(diǎn)是每4個(gè)異步串口共享一個(gè)獨(dú)立的硬件中斷,對(duì)EM9000、EM9260等模塊,可擴(kuò)展一組4個(gè)串口,而EM9360由于總線上支持多個(gè)獨(dú)立外部中斷,所以可擴(kuò)展2組共8個(gè)異步串口。盡管理論上可以擴(kuò)展更多的串口,但考慮到系統(tǒng)的綜合處理能力,在軟件上我們把擴(kuò)展串口數(shù)量的上限定在2組8個(gè)。
系統(tǒng)構(gòu)成
ETA503是基于英創(chuàng)精簡(jiǎn)ISA總線(接口信號(hào)如圖3所示)的4串口擴(kuò)展單元,其輸出接口均為9線制(接口信號(hào)如圖4所示)的RS232C。與嵌入式主板的連接關(guān)系如圖1所示:
ETA503采用工業(yè)標(biāo)準(zhǔn)的16C550作為每個(gè)串口的控制器,而每個(gè)16C550將占用8個(gè)精簡(jiǎn)ISA總線的8位數(shù)據(jù)端口,ETA503經(jīng)過精心設(shè)計(jì),并不占用額外的數(shù)據(jù)端口,所以整個(gè)ETA503只占用8×4 = 32個(gè)精簡(jiǎn)ISA總線的8位數(shù)據(jù)端口,使用片選CS1#和地址線SA0 – SA4。
用戶可通過以下步驟來快速實(shí)現(xiàn)多串口應(yīng)用方案:
原型評(píng)估
從英創(chuàng)公司購(gòu)買一套ETA503多串口擴(kuò)展單元(如圖2所示)以及英創(chuàng)的嵌入式主板,通過精簡(jiǎn)ISA總線相連接起來,可進(jìn)行快速的功能評(píng)估。對(duì)于 ARM9系列的產(chǎn)品,如EM9000、EM9260、EM9360等,多串口的驅(qū)動(dòng)程序?qū)⒓虞d到內(nèi)核;對(duì)x86的產(chǎn)品,如ETR232i、ETR232H等,將提供多串口的串口驅(qū)動(dòng)程序。在此基礎(chǔ)上,客戶可利用英創(chuàng)公司為ETA503提供的基本通訊應(yīng)用程序源代碼,快速評(píng)估多串口擴(kuò)展單元的基本性能是否滿足其具體的應(yīng)用需求。
設(shè)計(jì)應(yīng)用產(chǎn)品
ETA503多串口擴(kuò)展單元由包括1個(gè)16C554(等效為4個(gè)16C550),如圖2所示。客戶在作應(yīng)用設(shè)計(jì)時(shí),可將ETA503當(dāng)作一個(gè)元器件,由插針直接插在相應(yīng)的應(yīng)用電路中,根據(jù)需要修改各個(gè)串口的驅(qū)動(dòng)形式,如RS232C、RS485、RS422等。如果客戶的應(yīng)用主板需要同時(shí)包括英創(chuàng)的嵌入式主板模塊,則還需要參考相應(yīng)嵌入式主板的評(píng)估底板電路原理圖和PCB圖。
應(yīng)用程序開發(fā)
在WinCE應(yīng)用環(huán)境中對(duì)擴(kuò)展的多串口的編程方法與標(biāo)準(zhǔn)的串口應(yīng)用程序完全一樣,注意在打開串口號(hào)大于9的串口時(shí),需要使用“\\$device\\COMxx”,而不是通常的“COMx:”。考慮到共享中斷的異步特性,各個(gè)串口可能同時(shí)請(qǐng)求中斷,從而產(chǎn)生極高的中斷頻率,所以建議客戶把低波特率的串口通道,如9600bps或以下的波特率,配置在擴(kuò)展串口上,以均衡CPU對(duì)各個(gè)硬件設(shè)備的開銷;相應(yīng)地把需要使用高波特率的通道配置到英創(chuàng)嵌入式主板自帶的串口通道上,如EM9360的COM2 – COM7,這些串口均配置有獨(dú)立的硬件中斷。在WinCE標(biāo)準(zhǔn)的串口驅(qū)動(dòng)程序中為每個(gè)串口分配了2KB的接收數(shù)據(jù)緩沖區(qū),所以各個(gè)串口上層處理線程可參考buffer的深度,采用合適的響應(yīng)方式,以最大限度的避免線程空轉(zhuǎn)所帶來的CPU時(shí)間的無謂消耗。
對(duì)作為多串口服務(wù)器的應(yīng)用,如果嵌入式主板選用ARM9系列產(chǎn)品,就可利用WinCE提供的 Web服務(wù)器功能來方便實(shí)現(xiàn)對(duì)各串口參數(shù)的設(shè)置,WinCE下的Web支持ASP網(wǎng)頁;對(duì)x86產(chǎn)品,則可在應(yīng)用程序連接英創(chuàng)為x86產(chǎn)品提供的Web服務(wù)器庫(kù)以及客戶編寫的cgi C代碼。
在英創(chuàng)嵌入式主板的缺省配置中沒有加載擴(kuò)展多串口的驅(qū)動(dòng)程序。對(duì)需要使用多串口擴(kuò)展功能的客戶,在購(gòu)買英創(chuàng)嵌入式主板時(shí)需向英創(chuàng)商務(wù)人員說明其需求,我們將根據(jù)客戶的需求加載一組(4個(gè))串口或2組(8)串口的驅(qū)動(dòng)程序。
驅(qū)動(dòng)程序版權(quán)說明
英創(chuàng)公司的多串口驅(qū)動(dòng)程序已申請(qǐng)軟件產(chǎn)品保護(hù),客戶可以在英創(chuàng)嵌入式主板上免費(fèi)使用該驅(qū)動(dòng)程序,但禁止在其他的第三方平臺(tái)上使用英創(chuàng)公司的多串口驅(qū)動(dòng)程序。
成都英創(chuàng)信息技術(shù)有限公司 028-8618 0660