中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > DSP/BIOS中的IO設備驅(qū)動編程技術(shù)

        DSP/BIOS中的IO設備驅(qū)動編程技術(shù)

        作者: 時間:2010-12-22 來源:網(wǎng)絡 收藏

        2.2 三類函數(shù)

        LIO接口中有三類函數(shù):控制函數(shù)、緩沖區(qū)和隊列管理函數(shù)、信令函數(shù)。

        2.2.1 控制函數(shù)

        控制函數(shù)用來實現(xiàn)設備的啟動、關閉和控制。其初始函數(shù)為驅(qū)動程序保存資源(物理外設和內(nèi)存)。它使用結(jié)構(gòu)指針作為可選變量,此結(jié)構(gòu)是一種設備的特殊變量結(jié)構(gòu)。

        2.2.2 隊列管理

        假定每個設備至少有一個用來傳送數(shù)據(jù)的緩沖區(qū)。許多設備(如McBSP和DMA)帶有允許雙緩沖的緩沖隊列。圖1是一個有三個存儲單元的LIO驅(qū)動程序,驅(qū)動程序中有:由外設填滿或清空的緩沖區(qū)“todevice”(到設備)隊列,將傳送的緩沖區(qū)返回到應用程序的緩沖區(qū)管理程序的“from device”(來自設備)隊列和當前傳送數(shù)據(jù)的緩沖區(qū)。在虛線框里的認為是在驅(qū)動程序里面。當前傳送數(shù)據(jù)的緩沖一般由外設寄存器控制,如DMA源寄存器或目標寄存器,在圖1中畫在“外設”中。含硬件隊列(如DMA重新如載寄存器)的設備也會含一個或多個存儲單元用業(yè)存儲指針為以后傳送用,此隊列為“to device”隊列。能包含緩沖區(qū)指針的第三個存儲單元是“from device”隊列,在驅(qū)動程序中為一變量。當設備準備傳送緩沖區(qū)時,緩沖區(qū)從輸入隊列傳送到外設寄存器。這些緩沖區(qū)然后移到輸出隊列以完成傳送,作為對CPU中斷的響應。

        PutBuf()將緩沖區(qū)從應用程序傳送到驅(qū)動程序的輸入隊列。GetBuf()從輸出隊列得到緩沖區(qū)。IsEmpty()和IsFull()返回輸入隊列、輸出隊列的狀態(tài)。如果輸入隊列滿,因為無空間裝新緩沖區(qū),調(diào)用putBuf()會返回錯誤代碼。若IsFull()返回false,接下來可調(diào)用putBuf()。如果IsFull()返回true,但若在IsFull()返回true和調(diào)用putBuf()之間完成傳送,則調(diào)用putBuf()也可能會成功。

        2.2.3 信令

        如圖1所示,當傳送結(jié)束一般會觸發(fā)CPU中斷。此中斷會使應用程序?qū)魉偷木彌_區(qū)轉(zhuǎn)移到輸出隊列,然后調(diào)用calback()傳到驅(qū)動程序。Callback()應向應用程序發(fā)信號告知傳送完畢。

        3 LIO驅(qū)動程序例子

        音頻處理如語音壓縮、呼叫過程音調(diào)檢測等,是DSP的一般應用。本例是使用TMS320C5402 DSK上的DMA將音頻編解碼數(shù)據(jù)從McBSP移到緩沖區(qū)中。

        當驅(qū)動程序響應應用程序調(diào)用和設備中斷時,采用數(shù)據(jù)結(jié)構(gòu)跟蹤驅(qū)動程序的狀態(tài)。有效狀態(tài)是設備驅(qū)動程序緩沖區(qū)隊列的狀態(tài),如圖1所示。



        評論


        相關推薦

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

        關閉