新聞中心

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

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

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

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

本文引用地址:http://www.butianyuan.cn/article/150465.htm

d.JPG



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

e.JPG


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

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


評(píng)論


相關(guān)推薦

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

關(guān)閉