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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于S3C2440和嵌入式Linux的擴展串口設(shè)計

          基于S3C2440和嵌入式Linux的擴展串口設(shè)計

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

          因為方案采用中斷方式,所以將NSEL置高位,即允許芯片中斷。16C554A有INTA、INTB、INTC、IN TD4個中斷線,第一片與系統(tǒng)總線的EINT1,EINT2,EINT5,EINT6相連,第二片與GPIO中的EINT11,EINT13,EINT15,EIN39中斷相連,使得任一片芯片的任意的端口都能產(chǎn)生中斷。
          的A0,A1,A2,A4,A5,A24通過不同組合可以選擇8個不同的端口。nGCS5與74LS138譯碼器片選腳相連,根據(jù)對地址空間的定義,這樣就確定了第一片16C554A芯片4個端口的訪問地址為0X28000000,0X28000010,0X28000020,0X28000030,第二片16C554A擴展芯片4個端口的訪問地址為0X29000000,0X29000010,0X29000020,0X29000030,根據(jù)端口基地址就可以確定片內(nèi)的各個寄存器地址。具體連接如圖4所示。

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

          d.JPG



          3 驅(qū)動程序移植
          軟件主要是為設(shè)備編寫驅(qū)動程序。設(shè)備驅(qū)動是介于硬件和操作系統(tǒng)之間的軟件接口,主要功能包括:探測和初始化設(shè)備;從設(shè)備接收數(shù)據(jù)并提交給內(nèi)核;從內(nèi)核接收數(shù)據(jù)送到設(shè)備;檢測和處理設(shè)備錯誤。
          驅(qū)動程序從上到下分為4層:終端設(shè)備層、行規(guī)程、串口抽象層、串口芯片層。其中,串口芯片層與具體的芯片相關(guān),主要是向串口抽象層提供串口芯片所用的資源,還進行一些與芯片相關(guān)的設(shè)置。
          TL16C554A擴展串口芯片屬于標準串口,內(nèi)核的串口驅(qū)動程序?qū)λС炙尿?qū)動程序就是內(nèi)核代碼中的driver/seria/8250.c.入口函數(shù)是serial8250_init,它用于向串口抽象層提供注冊串口的物理信息。串口的物理信息主要有兩類:訪問地址和中斷號。所以只要設(shè)置好這兩類物理信息,就可以驅(qū)動擴展串口了,圖5為驅(qū)動程序移植流程。

          e.JPG


          3.1 構(gòu)建擴展串口的數(shù)據(jù)結(jié)構(gòu)
          串口的物理信息存儲在內(nèi)核源程序arch/arm/plats3c24xx/common-smdk.c中,所以主要工作是在commonsmdk.c源文件中增加三段代碼:
          1)增加頭文件
          源程序中要包含頭文件linux/serial_8250.h,用于告訴編譯器使用8250.c作為擴展串口的源程序;

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


          評論


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