a一级爱做片免费观看欧美,久久国产一区二区,日本一二三区免费,久草视频手机在线观看

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > DSP/BIOS中的IO設備驅動編程技術

DSP/BIOS中的IO設備驅動編程技術

作者: 時間:2010-12-22 來源:網絡 收藏

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

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

關鍵詞:

,,;,,,,

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

1 DSP/BISO操作系統簡介

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

1.1 任務調度模塊(HWI/SWI/TSK)

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

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

1.2 通訊模塊(PIP/SIO)

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

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

2 低級設備驅動(LIO)

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

表1 LIO API函數

函 數函數類型描 述

Open
Close
Cntl
Start
Stop
GetBuf
PutBuf
IsEmpty
IsFull
SetCallback

控制
控制
控制
控制
控制
緩沖區隊列
緩沖區隊列
緩沖區隊列
緩沖區隊列
信令

分配資源,初始化設備
釋放資源,復位設備
設備特殊操作
緩沖區傳送使能
緩沖區傳送使不能
從設備輸出隊列重新得到緩沖區
將緩沖區放入設備輸入隊列
若設備輸出隊列為空返回真
若設備輸入隊列為滿返回真
當傳送畢,設置函數為調用

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

2.1 總體設計、設想和命名規范

所有的驅動程序函數都不能設置成全局中斷。驅動程序應不影響全局中斷使能標記的狀態,僅影響由它控制的外設所能觸發的中斷所對應使能標記的狀態。這樣可以阻止一個驅動程序與其它驅動程序或應用程序爭奪CPU資源。

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

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


上一頁 1 2 3 下一頁

評論


相關推薦

技術專區

關閉