ch9 基于OMAP5912的開發(fā)應(yīng)用.ppt_第1頁
ch9 基于OMAP5912的開發(fā)應(yīng)用.ppt_第2頁
ch9 基于OMAP5912的開發(fā)應(yīng)用.ppt_第3頁
ch9 基于OMAP5912的開發(fā)應(yīng)用.ppt_第4頁
ch9 基于OMAP5912的開發(fā)應(yīng)用.ppt_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、嵌入式系統(tǒng)設(shè)計(jì)大學(xué)教程,第九章 基于OMAP5912的開發(fā)應(yīng)用,主要內(nèi)容,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn) 9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì) 9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),OMAP5912處理器是由TI應(yīng)用最為廣泛的TMS320C55x DSP內(nèi)核與低功耗、高性能的ARM926EJ-S微處理器組成的雙核應(yīng)用處理器。C55x系列可提供對(duì)低功耗應(yīng)用的實(shí)時(shí)多媒體處理的支持;ARM926可滿足控制和接口方面的處理需要。,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.1 ARM926EJ-S內(nèi)核 ARM926EJ-S內(nèi)核是采用32位RIS

2、C處理器,并采用ARM9作內(nèi)核,同時(shí)配備Thumb擴(kuò)展。它能夠處理32位或者16位的指令,處理8位、16位和32位數(shù)據(jù)。,9.1.1 ARM926EJ-S內(nèi)核,這款新型高性能、低功耗的微構(gòu)架采用協(xié)處理器CP15使體系結(jié)構(gòu)得到增強(qiáng)。系統(tǒng)中的控制寄存器可通過對(duì)協(xié)處理器CP15的讀寫來對(duì)MMU、Cache和讀寫緩存控制器進(jìn)行存取操作。這種微構(gòu)架在ARM核的周圍提供了:指令與數(shù)據(jù)存儲(chǔ)器管理單元,指令、數(shù)據(jù)和寫緩沖器,性能監(jiān)控、調(diào)試和JTAG單元以及協(xié)處理器接口,MAC協(xié)處理器和內(nèi)核存儲(chǔ)總線。,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.2 TMS320C55x內(nèi)核 TMS320C55x內(nèi)核的主要特點(diǎn)

3、是:有1個(gè)64位8位的緩存隊(duì)列,2個(gè)17位17位的乘法累加單元,1個(gè)40位的算術(shù)邏輯單元,1個(gè)16位的算術(shù)邏輯單元,1個(gè)40位的桶形移位器和4個(gè)40位的加法器。另外還有12條獨(dú)立的總線,即:3條數(shù)據(jù)讀總線,2條數(shù)據(jù)寫總線,5條數(shù)據(jù)地址總線,1條程序讀取總線和1條程序地址總線。此外,還有用戶可以配置的IDLE域。,9.1.2 TMS320C55x內(nèi)核,內(nèi)核主要由4個(gè)單元組成: 指令緩沖單元(I單元) 程序流單元(P單元) 地址數(shù)據(jù)流單元(A單元) 數(shù)據(jù)運(yùn)算單元(D單元),9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.3 存儲(chǔ)器管理 存儲(chǔ)器通信控制器(Traffic Controller,以下簡(jiǎn)稱

4、TC)管理著MPU、DSP、DMA以及局部總線對(duì)OMAP5912系統(tǒng)存儲(chǔ)資源(如SRAM、SDRAM、FLASH、ROM等)的訪問。它的主要功能是確保處理器能夠高效訪問外部存儲(chǔ)區(qū),并避免產(chǎn)生瓶頸現(xiàn)象而降低片上處理速度。,9.1.3 存儲(chǔ)器管理,MPU子系統(tǒng)用于控制存儲(chǔ)器管理單元(MMUs)、系統(tǒng)直接存儲(chǔ)器訪問(DMA)控制器、MPU TI外設(shè)總線(TIPB)橋和一些外設(shè)。,圖 91 MPU存儲(chǔ)器映射,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.4 直接存儲(chǔ)器訪問控制器(DMA) 直接存儲(chǔ)器訪問控制器(Direct Memory Access,DMA)可以在沒有MPU干預(yù)的情況下實(shí)現(xiàn)存儲(chǔ)空間中

5、不同位置間的數(shù)據(jù)傳遞。這種數(shù)據(jù)傳遞的數(shù)據(jù)源和數(shù)據(jù)目的地可以是片內(nèi)存儲(chǔ)器、片外存儲(chǔ)器以及各種系統(tǒng)外設(shè),它們都伴隨在MPU的操作中。通過使用DMA,可以減小系統(tǒng)進(jìn)行大量數(shù)據(jù)傳遞時(shí)對(duì)MPU處理器所造成的工作負(fù)荷。,9.1.4直接存儲(chǔ)器訪問控制器(DMA),DMA通道是基于硬件實(shí)現(xiàn)的,因此也稱為物理通道。其中,每一條通道都受一組配置寄存器控制,可以用軟件來設(shè)置傳輸參數(shù),諸如數(shù)據(jù)長度、數(shù)據(jù)源地址和目的地址等。這些物理通道配置寄存器位于MPU的存儲(chǔ)空間里。所有的物理通道都是并行操作的,可以并行進(jìn)行多組數(shù)據(jù)的傳遞,每一組數(shù)據(jù)占據(jù)一個(gè)通道。如果幾個(gè)通道都使用相同的DMA端口,它們就會(huì)時(shí)分復(fù)用這個(gè)端口。,9.1

6、.4直接存儲(chǔ)器訪問控制器(DMA),圖 93 DMA傳輸基本流程,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.5 時(shí)鐘和電源管理 OMAP5912微處理器提供了2個(gè)振蕩器以輔助管理電源耗損。設(shè)計(jì)系統(tǒng)時(shí),在待機(jī)模式下可以直接關(guān)閉12MHz的振蕩輸入,只留下32kHz振蕩器來維持系統(tǒng)運(yùn)作。這樣,不但可以保證系統(tǒng)運(yùn)行,讓需要維持運(yùn)行的周邊正常操作(例如用戶可以通過Keypad等輸入裝置來喚醒整個(gè)系統(tǒng)),而且可以很容易地關(guān)閉大部分接口設(shè)備,達(dá)到控制電源耗損的目的。,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),9.1.6 外圍控制模塊 1. MPU專用外設(shè)器 包括定時(shí)器、看門狗定時(shí)器和中斷處理器。這3種標(biāo)準(zhǔn)

7、外設(shè)只能通過ARM926專用總線(TIPB)的訪問來提供所需的操作系統(tǒng)和應(yīng)用的管理功能。,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn),2. MPU公共外設(shè) 主要有照相機(jī)接口、MPU I/O、Microwire接口、USB接口等,這些設(shè)備只能被MPU和MPU配置的系統(tǒng)DMA控制器訪問。因?yàn)樵摽偩€可以被系統(tǒng)DMA控制器訪問,所以稱為公共總線。DSP不能訪問該總線上的外設(shè)。,9.1.6 外圍控制模塊,3. DSP專用外設(shè) 包括定時(shí)器、看門狗定時(shí)器和中斷處理器。 4. DSP公共外設(shè) 包括2個(gè)多通道緩沖串口和2個(gè)多通道串口,可以被DSP以及DSP DMA直接訪問。這些外設(shè)也可以被MPU和系統(tǒng)DMA通過MPU

8、I接口訪問,但MPUI接口必須進(jìn)行相應(yīng)的配置。,9.1.6 外圍控制模塊,5.共享外設(shè) 系統(tǒng)的共享外設(shè)有: 郵箱模塊,可以實(shí)現(xiàn)DSP和MPU之間基于中斷的信號(hào)交換; 串口; 8個(gè)通用計(jì)時(shí)器; 3個(gè)UART; I2C總線的主從接口; 多通道緩沖串口(McBSP); 多媒體卡(MMC)和SD接口; 64個(gè)通用功能的輸入輸出(GPIO); 32KHz的同步時(shí)鐘。,主要內(nèi)容,9.1 OMAP5912的結(jié)構(gòu)和特點(diǎn) 9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì) 9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì),OMAP5912中的ARM926內(nèi)核主要負(fù)責(zé)提供操作系統(tǒng)、用

9、戶界面和高級(jí)應(yīng)用,進(jìn)行實(shí)時(shí)多任務(wù)調(diào)度管理,以及對(duì)DSP CSSx進(jìn)行控制和通信。DSP核適合語音應(yīng)用所需要的實(shí)時(shí)信號(hào)處理功能,主要負(fù)責(zé)實(shí)現(xiàn)復(fù)雜的多媒體信號(hào)處理。將經(jīng)過解碼處理的信號(hào)進(jìn)行D/A轉(zhuǎn)換和功率放大,進(jìn)一步輸出到耳機(jī)等輸出設(shè)備。,9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì),9.2.1 電源管理模塊 針對(duì)OMAP平臺(tái)低功耗的特點(diǎn),對(duì)電源管理模塊提出了更高要求。OSK開發(fā)板采用TI推出的手持式高整合度電源IC芯片TPS65010。該產(chǎn)品具有高性能級(jí)別,并且功率轉(zhuǎn)換效率高達(dá)97%,與其他分立解決方案相比,采用TPS65010可大大減小所占電路板空間。,9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì)

10、,9.2.2 存儲(chǔ)模塊 因?yàn)橄到y(tǒng)最后要脫機(jī)運(yùn)行,所有的程序都要固化到FLASH里面,包括中斷矢量表、初始化代碼、引導(dǎo)代碼、系統(tǒng)的應(yīng)用程序,還有顯示菜單用到的字模。在硬件開發(fā)階段,可以在FLASH的存儲(chǔ)空間位置上通過跳線器再并接一個(gè)RAM,這樣就可以通過CCS直接向其中加載程序,避免了在調(diào)試中斷和引導(dǎo)過程中反復(fù)修改燒寫FLASH的操作。,9.2.2 存儲(chǔ)模塊,1. Flash Memory OMAP5912可支持兩塊NOR FLASH芯片。OSK開發(fā)板采用2塊Micron公司的MT28F128J3芯片,其單片容量為16MB。OMAP5912有24根地址線A1A24可使用。,9.2.2 存儲(chǔ)模塊,

11、. DDR SDRAM 在一個(gè)時(shí)鐘周期中DDR可以完成SDRAM兩個(gè)周期才能完成的任務(wù),所以理論上同速率的DDR內(nèi)存與SDRAM相比,性能要超出一倍??蛇x用一塊工作電壓為1.8V的低功耗DDR SDRAM芯片。 在OSK開發(fā)板中選用的是Samsung公司的K4X56163PE-L(F)G,該芯片容量為32MB,工作頻率100MHZ(DDR200)。,9.2 基于OMAP5912的硬件平臺(tái)設(shè)計(jì),9.2.3 音頻處理模塊 音頻處理模塊在硬件上使用了基于IIS總線的音頻系統(tǒng)體系結(jié)構(gòu)。IIS(Inter-IC Sound bus)又稱I2S,是菲利浦公司提出的串行數(shù)字音頻總線協(xié)議。音頻電路包含了兩路音

12、頻輸入(line in和mic in)和一路音頻輸出(headphone out)。,9.2.3 音頻處理模塊,TLV320AIC23(以下簡(jiǎn)稱AIC23)是TI推出的一款高性能、集成有模擬功能的立體聲音頻CODEC,內(nèi)置耳機(jī)輸出放大器,支持MIC和LINE IN兩種輸入方式(二選一),而且對(duì)輸入和輸出都具有可編程增益調(diào)節(jié)。 AIC23的模數(shù)轉(zhuǎn)換(ADC)和數(shù)模轉(zhuǎn)換(DAC)部件高度集成在芯片內(nèi)部,采用了先進(jìn)的Sigma-delta過采樣技術(shù),可以在8K到96K的頻率范圍內(nèi)提供16、20、24和32位的采樣,ADC和DAC的輸出信噪比分別可以達(dá)到90dB和100dB。,9.2 基于OMAP59

13、12的硬件平臺(tái)設(shè)計(jì),9.2.4 外圍接口 1. CF卡接口 CF卡有兩種規(guī)格:Type I和Type II,前者厚度為3mm,后者厚度加倍,但容量也隨之提升。,9.2.4 外圍接口,2.以太網(wǎng)接口,圖 97 LAN91C96內(nèi)部結(jié)構(gòu),9.2.4 外圍接口,3.以太網(wǎng)接口 JTAG/Multi-ICE仿真調(diào)試接口:OMAP提供JTAG信號(hào),并通過SN74LV C244AGQN緩沖,連接到外部接口。 USB接口:OMAP5912的USB主機(jī)控制器提供了低速(1.5Mbps)和全速(12Mbps)的傳輸速率。,主要內(nèi)容,9.1OMAP5912的結(jié)構(gòu)和特點(diǎn) 9.2基于OMAP5912的硬件平臺(tái)設(shè)計(jì) 9

14、.3基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.1 OMAP5912系統(tǒng)的軟件架構(gòu),圖 98 OMAP5912系統(tǒng)軟件架構(gòu)框圖,9.3.1 OMAP5912系統(tǒng)的軟件架構(gòu),為了實(shí)現(xiàn)跨平臺(tái)的要求,系統(tǒng)在驅(qū)動(dòng)程序之上再建立一層硬件抽象層(HAL),通過對(duì)硬件的抽象描述,可降低和底層硬件的耦合度,即使底層的硬件變化,只要有適當(dāng)?shù)尿?qū)動(dòng)程序,整個(gè)系統(tǒng)的架構(gòu)不需改變就可以運(yùn)作。這主要是為以后的系統(tǒng)擴(kuò)展和移植做準(zhǔn)備。,9.3.1 OMAP5912系統(tǒng)的軟件架構(gòu),系統(tǒng)服務(wù)指的是位于語言層次,提供應(yīng)用程序語言呼叫的一組接口及其操作,其作用類似于DOS下的INT 21H指令,即提供中斷服務(wù)程序,只要應(yīng)用程序向操作

15、系統(tǒng)請(qǐng)求協(xié)助,系統(tǒng)服務(wù)就會(huì)被調(diào)用,這一層還包含了對(duì)系統(tǒng)語言庫的支持。,9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.2 嵌入式Linux系統(tǒng)的啟動(dòng)流程 Linux操作系統(tǒng)在嵌入式系統(tǒng)中越來越受歡迎,基于Linux的嵌入式PDA和手機(jī)產(chǎn)品也層出不窮。一般來說,一個(gè)嵌入式Linux系統(tǒng)的啟動(dòng)可以分為四個(gè)層次 。 引導(dǎo)加載程序 Linux內(nèi)核 文件系統(tǒng) 用戶應(yīng)用程序,9.3.2 嵌入式Linux系統(tǒng)的啟動(dòng)流程,在嵌入式系統(tǒng)中,通常并沒有像BIOS那樣的固件程序(有的嵌入式CPU可能會(huì)有一段短小的啟動(dòng)程序,如TI MSC1210等),因此整個(gè)系統(tǒng)的加載啟動(dòng)任務(wù)就完全由Bootloader來完成。

16、比如在基于XScale core的嵌入式系統(tǒng)中,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址0 x00000000處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的Bootloader程序。,9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.3 Bootloader及其移植 簡(jiǎn)單地說,Bootloader就是在操作系統(tǒng)內(nèi)核運(yùn)行之前運(yùn)行的一段小程序,相當(dāng)于PC機(jī)主板上的BIOS,是最底層的引導(dǎo)軟件。通過這段小程序,我們可以初始化硬件設(shè)備、建立內(nèi)存空間的映射圖,從而將系統(tǒng)的軟硬件環(huán)境帶到一個(gè)合適的狀態(tài),以便為最終調(diào)用操作系統(tǒng)內(nèi)核準(zhǔn)備好正確的環(huán)境。,9.3.3 Bootloader及其移植,1.Bootloader

17、在嵌入式系統(tǒng)的重要性 一般情況下,計(jì)算機(jī)操作系統(tǒng)的啟動(dòng)都需要一個(gè)引導(dǎo)加載程序。其主要的原因在于現(xiàn)在計(jì)算機(jī)系統(tǒng)多采用“易失性”的半導(dǎo)體存儲(chǔ)器作為內(nèi)存,如PC系統(tǒng)中采用的EDO DRAM,SDRAM,DDR SDRAM等,一旦斷電,內(nèi)存中的操作系統(tǒng)映像就消失了,因此只能將操作系統(tǒng)存儲(chǔ)在非易失性的存儲(chǔ)介質(zhì)上,在系統(tǒng)加電的時(shí)候才能將其中的操作系統(tǒng)映像裝入內(nèi)存中運(yùn)行。,9.3.3 Bootloader及其移植,實(shí)際上大多數(shù)嵌入式系統(tǒng)還是采用了引導(dǎo)加載程序,而不讓可執(zhí)行映像在EEPROM或FLASH中就地執(zhí)行。一般而言,這樣做是出于幾個(gè)方面的考慮: 效率方面的考慮 操作系統(tǒng)的多樣性 存儲(chǔ)地與執(zhí)行地分離 調(diào)

18、試/排錯(cuò)方面的考慮 嵌入式系統(tǒng)獨(dú)特的開發(fā)模式,9.3.3 Bootloader及其移植,2.Bootloader的相關(guān)概念 通常,Bootloader是嚴(yán)重地依賴于硬件而實(shí)現(xiàn)的,特別是在嵌入式系統(tǒng)中。因此,在嵌入式世界里建立一個(gè)通用的Bootloader幾乎是不可能的。盡管如此,仍然可以對(duì)Bootloader歸納出一些通用的概念來,以指導(dǎo)用戶特定的Bootloader設(shè)計(jì)與實(shí)現(xiàn):,9.3.3 Bootloader及其移植,Bootloader所支持的CPU和嵌入式系統(tǒng)板 Bootloader的安裝媒介 用來控制Bootloader的設(shè)備或機(jī)制 Bootloader的操作模式 Bootloade

19、r與主機(jī)之間進(jìn)行文件傳輸所 用的通信設(shè)備及協(xié)議 Bootloader的啟動(dòng)過程,9.3.3 Bootloader及其移植,3. Bootloader的移植 嵌入式領(lǐng)域中操作系統(tǒng)的移植關(guān)鍵在Bootloader的移植和操作系統(tǒng)內(nèi)核硬件相關(guān)部分移植。設(shè)計(jì)和實(shí)現(xiàn)一個(gè)好的Botloader將大大提高操作系統(tǒng)移植的穩(wěn)定性,并大大加快操作系統(tǒng)移植的周期。,9.3.3 Bootloader及其移植,(1) Bootloader移植中的關(guān)鍵問題 處理器異常 內(nèi)存初始化,9.3.3 Bootloader及其移植,(2) U-BOOT的移植 Bootloader(引導(dǎo)加載程序)是系統(tǒng)加電后運(yùn)行的第一段代碼。一般它

20、只在系統(tǒng)啟動(dòng)時(shí)運(yùn)行非常短的時(shí)間,但對(duì)于嵌入式系統(tǒng)來說,這是一個(gè)非常重要的系統(tǒng)組成部分。當(dāng)我們使用單片機(jī)或者像C/OS這樣的操作系統(tǒng)時(shí),一般只需要在初始化CPU和其他硬件設(shè)備后,直接加載程序即可,不需要單獨(dú)構(gòu)建一個(gè)引導(dǎo)加載程序。但構(gòu)建或移植一個(gè)Bootloader,從某種意義上來說,對(duì)所有的Linux系統(tǒng)都是一個(gè)必不可少的任務(wù)。,9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.4 Montavista Linux內(nèi)核的移植 嵌入式Linux主要可以分為兩類: 第一類是在利用Linux強(qiáng)大功能的前提下,使它盡可能地小,以滿足許多嵌入式系統(tǒng)對(duì)體積的要求,如uClinux; 第二類是將Linux開

21、發(fā)成實(shí)時(shí)系統(tǒng)(如RTLinux,MontaVista Linux)應(yīng)用于一些關(guān)鍵的控制場(chǎng)合。,9.3.4 Montavista Linux內(nèi)核的移植,1.軟件環(huán)境配置 安裝Montavista Preview Kit到/opt/montavista中。 安裝成功后,還要進(jìn)行本地用戶的一個(gè)備份操作。 接下來我們將做一個(gè)嵌入式內(nèi)核源碼樹的本地備份。 做一個(gè)指向linux-2.4.20_mv131的邏輯鏈接,以便以后編譯不同的內(nèi)核時(shí),只需修改相應(yīng)的鏈接,而不必對(duì)Makefile進(jìn)行改動(dòng)。,9.3.4 Montavista Linux內(nèi)核的移植,2.參數(shù)配置 根目錄 arch目錄 arch/arm/b

22、oot目錄,9.3.4 Montavista Linux內(nèi)核的移植,3.編譯和移植 當(dāng)對(duì)內(nèi)核配置或者相應(yīng)的功能進(jìn)行改動(dòng)后,一般都必須重新編譯內(nèi)核。編譯內(nèi)核的同時(shí)也編譯和鏈接用到的各個(gè)模塊。,9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.5 文件系統(tǒng)的移植 當(dāng)系統(tǒng)啟動(dòng)后,操作系統(tǒng)要完成的最后一步是掛載根文件系統(tǒng)。在開發(fā)過程中,通過網(wǎng)絡(luò)以NFS方式來掛載在Linux主機(jī)上的文件系統(tǒng),這樣就不必要每次有改動(dòng)都要重新燒寫文件系統(tǒng)的鏡像文件了。它的實(shí)現(xiàn)基于對(duì)主機(jī)進(jìn)行相應(yīng)的配置并啟動(dòng)NFS服務(wù)。,9.3.5 文件系統(tǒng)的移植,我們采取的文件系統(tǒng)技術(shù)是JFFS2文件系統(tǒng)。JFFS2是基于JFFS開發(fā)的閃

23、存文件系統(tǒng),除了日志功能,它也包括了TrueFFS的負(fù)載均衡、垃圾收集等功能,并且源代碼公開。它使用的是基于哈希表的日志結(jié)點(diǎn)結(jié)構(gòu),大大加快了對(duì)結(jié)點(diǎn)的操作速度。文件系統(tǒng)的移植只需往內(nèi)核添加MTD的驅(qū)動(dòng),并用mkfs.jffs2來生成鏡像文件,接著同樣利用U-boot將其燒寫進(jìn)FLASH的特定位置。,9.3 基于OMAP5912的軟件系統(tǒng)設(shè)計(jì),9.3.6基于OMAP5912平臺(tái)的Linux設(shè)備驅(qū)動(dòng)程序 Linux驅(qū)動(dòng)程序中將音頻設(shè)備按功能分成不同類型,每種類型根據(jù)其次設(shè)備號(hào)來區(qū)分。AIC23音頻芯片提供數(shù)字化音頻,其功能是實(shí)現(xiàn)播放數(shù)字化聲音文件或錄制聲音,同時(shí)還提供混頻器、音序器等功能。 /dev

24、/dsp的驅(qū)動(dòng)設(shè)計(jì)主要包含設(shè)備的初始化和卸載、設(shè)備文件操作的實(shí)現(xiàn)等。,1. file operations結(jié)構(gòu)的初始化,file operations結(jié)構(gòu)貫穿在整個(gè)驅(qū)動(dòng)程序中,其代碼如下: static_ stntct file operations soundcore_fops= /*指向擁有該結(jié)構(gòu)模塊的指針,內(nèi)核使用該指針維護(hù)模塊的使用計(jì)數(shù)*/ .owner = THIS_MODULE; /*把soundcore open函數(shù)指針賦給open入口點(diǎn)*/ .open = soundcore-open; ;,2. 模塊的初始化,AIC音頻模塊初始化通過對(duì)initt soundcore(void

25、)的實(shí)現(xiàn)來完成以下幾個(gè)任務(wù): 以字符設(shè)備類型向系統(tǒng)注冊(cè)AIC23音頻模板設(shè)備,其主設(shè)備號(hào)為14。 使用設(shè)備文件系統(tǒng)(devfs),創(chuàng)建目錄/dev/sound,并放置設(shè)備文件。 做一些必要的系統(tǒng)日志,根據(jù)各種條件用printk()向系統(tǒng)日志緩沖區(qū)寫入不同級(jí)別的信息,如設(shè)備是否在使用中等。,3. 模塊的卸載,AIC音頻模塊卸載需要完成以下幾個(gè)任務(wù): int unregister chrdev(unsigned int major,const char *name)向系統(tǒng)注銷該字符設(shè)備。本程序中major參數(shù)是前面注冊(cè)時(shí)的主設(shè)備號(hào),name與注冊(cè)時(shí)提供的name字符串相同; 調(diào)用devfs_remove(sound)刪除/dev/sound目錄; 調(diào)用printk()函數(shù),做一些必要的系統(tǒng)日志。,4. 模塊的使用,對(duì)上述模塊編譯并加載后,root用戶可用mknod命令

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論