色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          介紹了DSP/BIOS中I/O設(shè)備驅(qū)動程序的編寫,并給出了一個在TMS320C5402 DSK上開發(fā)語音處理程序的實(shí)例。

          本文引用地址:http://cafeforensic.com/article/151156.htm

          關(guān)鍵詞:

          ,,;,,,,

          I公司推出的一個實(shí)時操作系統(tǒng)。DSP/BIOS與TI的CCS(Code Composer Studio)集成在一起。目前最新的版本是CCS 1.2中的DSP/BIOS II。應(yīng)用DSP/BIOS可以大大簡化DSP應(yīng)用程序的開發(fā)和調(diào)試。與外部設(shè)備的I/O接口是DSP應(yīng)用開發(fā)中不可缺少的重要部分?;贒SP/BIOS的I/O設(shè)備驅(qū)動將軟件與硬件分離,提高了軟件的可重用性,在軟件或硬件改動時可使相互的影響降為最小。

          1 DSP/BISO操作系統(tǒng)簡介

          DSP/BIOS實(shí)際上是一組可重復(fù)調(diào)用的系統(tǒng)模塊API的集合。只占用DSP很少的資源,可以滿足DSP實(shí)時運(yùn)行時的調(diào)試性能分析,編寫高效的程序。例如,在TMS320C6211上運(yùn)行printf()函數(shù)需花費(fèi)4000個周期,而運(yùn)行LOG_printf()只花費(fèi)36個周期,可printf()要比LOG_pfrintf()多花費(fèi)100倍以上的時間。下面只對與I/O設(shè)備驅(qū)動有關(guān)的模塊作簡要介紹。

          1.1 任務(wù)調(diào)度模塊(HWI/SWI/TSK)

          在DSP/BIOS中,任務(wù)的調(diào)度是通過HWI、SWI和TSK三個模塊實(shí)現(xiàn)的。HWI(硬件中斷管理模塊)管理硬件中斷,主要負(fù)責(zé)DSP與外設(shè)的交互,從外設(shè)中讀寫數(shù)據(jù)。由于硬件中斷直接與硬件打交道,對應(yīng)的中斷服務(wù)程序ISR應(yīng)盡可能短小精焊。HWI不引起任務(wù)調(diào)度,它在處理完數(shù)據(jù)的輸入輸出后調(diào)用SWI_post()來調(diào)度相應(yīng)的軟件中斷SWI完成數(shù)據(jù)處理工作。

          DSP/BIOS提供兩類優(yōu)先線程:SWI(軟件中斷管理模塊)和TSK(任務(wù)管理模塊)。SWI是DSP/BIOS任務(wù)調(diào)度的核心,SWI任務(wù)是搶斷式的,即高優(yōu)先級的任務(wù)可以搶斷低優(yōu)先級的任務(wù)。但是SWI任務(wù)是不可阻塞的,所有SWI任務(wù)共享一個堆棧,SWI任務(wù)只能在程序編制時預(yù)先定義好。DSP/BIOS中對任務(wù)的動態(tài)產(chǎn)生和對阻塞狀態(tài)的支持是通過TSK模塊來實(shí)現(xiàn)的。TSK也是可以搶斷的,但每個TSK任務(wù)使用獨(dú)立的堆棧。

          1.2 通訊模塊(PIP/SIO)

          PIP(帶緩沖管道管理模塊)和SIO(流輸入輸出管理模塊)是DSP/BIOS提供的兩個接口對象,用于支持DSP與外設(shè)之間 數(shù)據(jù)交換。PIP對象帶有一個緩沖隊(duì)列,可以執(zhí)行帶緩沖的讀任務(wù)和寫任務(wù)。SIO沒有緩沖隊(duì)列,SIO的操作get()和put()在應(yīng)用程序和驅(qū)動程序之間交換緩沖的指針,而不是數(shù)據(jù)的拷貝,因此執(zhí)行效率比PIP高。

          PIP和SIO對象支持基于幀的信號處理系統(tǒng)的實(shí)現(xiàn)。在多速率系統(tǒng)中需要使用優(yōu)先級線程來統(tǒng)一端口通信,在其它需要處理不同尺寸、不同速率的幀的系統(tǒng)中,優(yōu)先級線程也是必須的。PIP對象可被SWI或TSK線程使用,而SIO對象只能被TSK使用。

          2 低級設(shè)備驅(qū)動(LIO)

          LIO(Low Level I/O)是一組基于DSP/BIOS設(shè)計(jì)的API函數(shù)。它由控制函數(shù)、I/O緩沖區(qū)管理函數(shù)、信令函數(shù)組成,如表1所示。應(yīng)用程序可以通過LIO函數(shù)控制一個或多個外設(shè)通道。

          表1 LIO API函數(shù)

          函 數(shù)函數(shù)類型描 述

          Open
          Close
          Cntl
          Start
          Stop
          GetBuf
          PutBuf
          IsEmpty
          IsFull
          SetCallback

          控制
          控制
          控制
          控制
          控制
          緩沖區(qū)隊(duì)列
          緩沖區(qū)隊(duì)列
          緩沖區(qū)隊(duì)列
          緩沖區(qū)隊(duì)列
          信令

          分配資源,初始化設(shè)備
          釋放資源,復(fù)位設(shè)備
          設(shè)備特殊操作
          緩沖區(qū)傳送使能
          緩沖區(qū)傳送使不能
          從設(shè)備輸出隊(duì)列重新得到緩沖區(qū)
          將緩沖區(qū)放入設(shè)備輸入隊(duì)列
          若設(shè)備輸出隊(duì)列為空返回真
          若設(shè)備輸入隊(duì)列為滿返回真
          當(dāng)傳送畢,設(shè)置函數(shù)為調(diào)用

          LIO函數(shù)不考慮數(shù)據(jù)的轉(zhuǎn)送方向,也就是說僅執(zhí)行輸出設(shè)備、僅執(zhí)行輸入設(shè)備和能執(zhí)行輸入、輸出的設(shè)備執(zhí)行的是同樣的函數(shù)。輸入與輸出之間的主要不同點(diǎn)是傳送到緩沖區(qū)隊(duì)列函數(shù)的參數(shù)意義不同。既然所有其它的操作都是同樣的,大多數(shù)控制代碼能在單個驅(qū)動程序中被所有通道共享。

          2.1 總體設(shè)計(jì)、設(shè)想和命名規(guī)范

          所有的驅(qū)動程序函數(shù)都不能設(shè)置成全局中斷。驅(qū)動程序應(yīng)不影響全局中斷使能標(biāo)記的狀態(tài),僅影響由它控制的外設(shè)所能觸發(fā)的中斷所對應(yīng)使能標(biāo)記的狀態(tài)。這樣可以阻止一個驅(qū)動程序與其它驅(qū)動程序或應(yīng)用程序爭奪CPU資源。

          為了避免由不同驅(qū)動程序使用同一函數(shù)名引起的命名空間沖突,也為了改變驅(qū)動程序而不需再編譯應(yīng)用程序代碼,可以通過函數(shù)表訪問驅(qū)動程序函數(shù)。用這種方式,僅需要為每個驅(qū)動程序定義一個外部符號。這種符號有其命名規(guī)范。此命名規(guī)范通過接線板、在片外設(shè)、LIO接口等來區(qū)分。如包含應(yīng)用程序注釋的源代碼為TI TMS320VC5402 DSK的AD50音頻編解碼器執(zhí)行基于DMA的驅(qū)動程序,驅(qū)動程序函數(shù)表名是DSK5402_DMA_AD50_TI_ILIO。

          設(shè)備驅(qū)動程序支持的各通道半雙工(輸入或輸出)通道。每個函數(shù)對應(yīng)一個通道變量。一個能執(zhí)行輸入和輸出的物理設(shè)備,如連接到音頻編解碼器的DSP串口,可通過兩個半雙工通道(一個輸入,一個輸出)來訪問。一個驅(qū)動程序支持多少個物理設(shè)備和通道依具體實(shí)現(xiàn)而實(shí)。一般一個驅(qū)動程序應(yīng)能控制一個物理設(shè)備,此設(shè)備可能有多個通道。通道號與物理設(shè)備通道的映射執(zhí)行時確定。通道號應(yīng)約定從0開始。對I/O設(shè)備,一般約定偶數(shù)號為輸入,奇數(shù)號為輸出。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉