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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM11嵌入式系統(tǒng)實時網(wǎng)絡(luò)通信和LCD顯示的實現(xiàn)

          ARM11嵌入式系統(tǒng)實時網(wǎng)絡(luò)通信和LCD顯示的實現(xiàn)

          作者: 時間:2011-11-12 來源:網(wǎng)絡(luò) 收藏

          摘要:通過對Linux下的進(jìn)行研究,分析了協(xié)議和驅(qū)動方式。在下設(shè)計了直接讀寫GPIO的程序,并終端服務(wù)器和客戶端雙線程的工作模式,解決了網(wǎng)絡(luò)性和可靠性的問題。實際應(yīng)用表明:該方法LCD速度快、網(wǎng)絡(luò)通信性強(qiáng)可靠性好、和計算機(jī)的資源利用率高。
          關(guān)鍵詞:ARM11;實時網(wǎng)絡(luò)通信;LCD;Linux

          0 引言
          ARM11主頻為533 MHz,最高可達(dá)667 MHz,較ARM7主頻提高了10倍,且擁有更豐富的片上資源,處理速度更快,功能更強(qiáng)?;谏鲜鎏攸c,ARM11可完全適應(yīng)實時性較強(qiáng)的網(wǎng)絡(luò)終端的設(shè)計。
          在以ARM11為核心的網(wǎng)絡(luò)終端設(shè)計中,需要LCD在終端實時顯示網(wǎng)絡(luò)通信的各項參數(shù)和設(shè)備工作狀態(tài),LCD的顯示內(nèi)容依靠網(wǎng)絡(luò)傳輸數(shù)據(jù)中的指令來控制,而網(wǎng)絡(luò)終端的操作數(shù)據(jù)也要通過網(wǎng)絡(luò)傳輸?shù)接嬎銠C(jī),因此網(wǎng)絡(luò)通信和LCD顯示需要很強(qiáng)的實時性才能合理使用計算機(jī)和ARM11的資源,從而提高的運行效率。
          該文以ARM11處理器S3C6410為平臺,基于Linux操作系統(tǒng)設(shè)計了一種在ARM11內(nèi)核直接控制LCD顯示的方法,并采用TCP/IP協(xié)議設(shè)計了一種同時作客戶端和服務(wù)器的終端工作模式。

          1 ARM11網(wǎng)絡(luò)終端實時通信特性分析
          1.1 數(shù)據(jù)流分析
          在計算機(jī)與ARM11通信的系統(tǒng)中,計算機(jī)的處理速度比ARM11快很多,如將數(shù)據(jù)處理等工作量大的任務(wù)分配給計算機(jī)去處理,則可大大減少ARM11的資源消耗,ARM11就可以更快地去響應(yīng)其他操作,因此為了減少ARM11顯示任務(wù)的時間,可以將ARM11要顯示圖片的數(shù)據(jù)處理交給計算機(jī),計算機(jī)按照ARM11顯示的數(shù)據(jù)要求處理好數(shù)據(jù)后再通過網(wǎng)絡(luò)傳到ARM11再完成LCD的顯示。此外,ARM11網(wǎng)絡(luò)終端還要向計算機(jī)傳輸設(shè)備工作狀態(tài)信息,計算機(jī)則還要向網(wǎng)絡(luò)終端傳輸一些控制命令。
          1.2 通信協(xié)議分析
          網(wǎng)絡(luò)通信必然涉及到通信協(xié)議的問題,目前普遍采用的網(wǎng)絡(luò)協(xié)議有UDP協(xié)議和TCP/IP協(xié)議。在實時性要求較高的網(wǎng)絡(luò)通信中希望能做到想發(fā)就發(fā),有數(shù)據(jù)就收。兩個協(xié)議中UDP比較符合這個要求,但是它不能保證數(shù)據(jù)傳輸?shù)挠行?,?dāng)數(shù)據(jù)較多時很可能會發(fā)生嚴(yán)重的丟包現(xiàn)象,尤其是像LCD顯示的圖片數(shù)據(jù)這類數(shù)據(jù)較大而且傳輸頻繁的數(shù)據(jù),可能會嚴(yán)重影響液晶顯示這是不能被接受的。相比之下TCP/IP協(xié)議能夠保證數(shù)據(jù)傳輸?shù)挠行浴?br /> 在TCP/IP協(xié)議ARM11網(wǎng)絡(luò)終端作為服務(wù)器或者客戶端是不能做到隨時想發(fā)就發(fā),有數(shù)據(jù)就收的,比如作為服務(wù)器接收完來自計算機(jī)的數(shù)據(jù)后,如果計算機(jī)斷開了連接,那么網(wǎng)絡(luò)終端再想向計算機(jī)發(fā)送數(shù)據(jù),就必須等到計算機(jī)再次作為客戶端向終端發(fā)起連接才行。為了解決TCP/IP協(xié)議的這種問題,本文設(shè)計了網(wǎng)絡(luò)終端和計算機(jī)既作客戶端又作服務(wù)器的雙線程工作模式,在這種工作模式下終端和計算機(jī)隨時能發(fā)起和斷開連接,從而做到隨時想發(fā)就發(fā),有數(shù)據(jù)就收。

          2 LCD顯示的軟件設(shè)計
          2.1 LCD的顯示方法分析
          (1)基于Framebuffer驅(qū)動方式。在Linux下有完善的Framebuffer驅(qū)動程序,所以可以利用ARM11集成的LCD控制器采用Framebuffer控制LCD,F(xiàn)ramebuffer是顯示設(shè)備抽象為幀緩沖區(qū),用戶通過內(nèi)存映射將其映射到進(jìn)程地址空間之后,就可以直接進(jìn)行讀寫操作,而操作可以直接反應(yīng)到屏幕上。該方法反應(yīng)速度快、執(zhí)行效率高,應(yīng)用程序簡單,但是底層硬件驅(qū)動復(fù)雜,硬件變更后編寫難度大,不易。不帶控制器的LCD通常采用這種方法。
          (2)直接讀寫GPIO驅(qū)動方式。目前有很多類型的液晶屏自帶LCD控制器,ARM向控制器寫控制指令和數(shù)據(jù)就可以完成對LCD的初始化和內(nèi)容的顯示。這種顯示方法軟件設(shè)計相對簡單,占用的代碼空間小,可以通過簡單的控制芯片進(jìn)行驅(qū)動。針對自帶控制器的LCD,本文設(shè)計了直接讀寫GPIO驅(qū)動LCD的方法。該方法在底層驅(qū)動向LCD控制器和LCD的應(yīng)用程序提供接口,LCD控制器的讀寫時序全部在底層驅(qū)動中完成,底層驅(qū)動向應(yīng)用程序提供初始化接口和顯示數(shù)據(jù)接口。該方法應(yīng)用程序和內(nèi)核的交互少,程序執(zhí)行效率高。
          2.2 LCD顯示的
          通過上述分析,本文設(shè)計直接讀寫GPIO驅(qū)動帶LCD控制器的液晶屏,該方法的程序結(jié)構(gòu)如圖1所示。

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

          a.JPG


          在底層驅(qū)動中主要包括以下幾個函數(shù):
          (1)初始化函數(shù)s3c6410_inti。該函數(shù)包括2部分的初始化:一是對ARM11用于同LCD控制器相連GPIO口控制寄存器的初始化,核心語句是writel(tmp,S3C64XX_GPICON),其中writel是驅(qū)動層的寫函數(shù),tmp是寫入控制寄存器的數(shù)據(jù),S3C64XX_GPICON是S3C6410中第I組GPIO口的控制寄存器,如果采用別的GPIO口就改用別的控制寄存器宏定義;二是對LCD控制器初始化。
          (2)寫數(shù)據(jù)函數(shù)s3c6410_WRData和寫命令函數(shù)s3c6410_WRCommand。這2個函數(shù)按照具體LCD控制寄存器的寫數(shù)據(jù)時序和寫命令時序,完成對LCD控制器的寫數(shù)據(jù)和寫命令,向GPIO寫數(shù)據(jù)的函數(shù)是writel(tmp,S3C64XX_GPIDAT),writel和tmp與上述相同,S3C64XX_GPIDAT是S3C64 10中第I組GPIO口的數(shù)據(jù)寄存器。
          (3)顯示函數(shù)s3c6410_LCDdisplay。該函數(shù)通過調(diào)用寫命令函數(shù)和寫數(shù)據(jù)函數(shù)到達(dá)在液晶屏上具體位置顯示具體圖片或文字的效果。
          (4)系統(tǒng)調(diào)用接口函數(shù)s3c64xx_ioctl(structfile*file,int cmd,long int data)。該函數(shù)定義s3c6410_inti和s3c6410_LCDdisplay2個函數(shù)接口通過系統(tǒng)調(diào)用iotcl(fd,1,xx)和iotcl(fd,2,xx),以供應(yīng)用程序調(diào)用,應(yīng)用程序使用iotcl(fd,1,xx)就可初始化結(jié)晶屏,只需要向s3c6410_LCDdisplay的接口iotcl(fd,2,xx)中寫數(shù)據(jù)就實現(xiàn)了數(shù)據(jù)的LCD顯示。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

          上一頁 1 2 下一頁

          評論


          相關(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); })();