<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TMS320C55x嵌入式實(shí)時(shí)多任務(wù)系統DSP/BIOS II

TMS320C55x嵌入式實(shí)時(shí)多任務(wù)系統DSP/BIOS II

作者:重慶移動(dòng)通信工程研究中心 劉樹(shù)軍 時(shí)間:2004-07-23 來(lái)源: 收藏
摘  要: DSP/BIOS 是運行在數字信號處理器(DSP)中的一個(gè)小型軟件,它為開(kāi)發(fā)者提供對程序的控制執行和對變量的實(shí)時(shí)監測。而且可以合理地對實(shí)時(shí)多線(xiàn)程系統進(jìn)行時(shí)間規劃。本文對DSP/BIOS II的基本特征與應用作了介紹。
關(guān)鍵詞: 嵌入式;實(shí)時(shí)多任務(wù)操作系統;DSP/BIOS II;線(xiàn)程

2002年5月B版

引言
現在,由于復雜的硬件功能已經(jīng)集成到標準集成電路中,系統開(kāi)發(fā)人員首先應該知道如何選擇合適的芯片,然后基于此硬件結構設計軟件。系統設計者有兩種選擇:使用專(zhuān)用集成電路或可編程DSP實(shí)現信號處理。相比之下,可編程DSP有兩個(gè)優(yōu)點(diǎn):
可擴充性:設計者可以根據要求的處理效率,和需要的資源來(lái)量體選用DSP及所需的片數。
可升級性:將硬件的升級轉化成比較容易升級的軟件改動(dòng)。
使用可編程DSP時(shí),必須對芯片的各種資源(例如CPU,存儲區,外設等)加以管理規劃,通過(guò)DSP/BIOS可以輕松的完成這些工作。
TI公司TMS320C5000系列都帶有嵌入式DSP/BIOS,它有很強的實(shí)時(shí)分析和任務(wù)實(shí)時(shí)管理能力,可以有效的提高項目的開(kāi)發(fā)效率,尤其表現在需要實(shí)時(shí)多任務(wù)的大型系統中。圖1為DSP/BIOS的部件結構。

DSP/BIOS II簡(jiǎn)述
TI公司的DSP/BIOS II 是在DSP/BIOS I 基礎上的擴展。它支持更多的軟件模塊,通過(guò)修改內核提供搶先式多任務(wù)服務(wù);它把傳統并行處理系統的內核服務(wù)集成為可測試內核;它增加了設備獨立的I/O數據流模型,繼續保留已有的數據管道;它增加了動(dòng)態(tài)內存分配與內存管理。
TI的開(kāi)發(fā)平臺CCS IDE 2.0中集成了DSP/BIOS II,可以對程序進(jìn)行實(shí)時(shí)跟蹤與分析,提高應用程序開(kāi)發(fā)的可靠性??梢栽贑CS插件中實(shí)時(shí)觀(guān)察DSP/BIOS內核中各線(xiàn)程的執行狀態(tài)與對象的當前屬性。通過(guò)設置工具,開(kāi)發(fā)者可以對各個(gè)模塊實(shí)行配置。

DSP/BIOS II 核心API技術(shù)
目標應用程序通過(guò)調用DSP/BIOS II的API來(lái)獲得運行時(shí)的服務(wù)。一個(gè)單個(gè)DSP/BIOS II 模塊可以管理多種類(lèi)的內核對象,并且依據全局參量的設定來(lái)控制整個(gè)行為。DSP/BIOS II 可以歸納為六大種類(lèi):
內核執行線(xiàn)程


圖1  DSP/BIOS 部件結構圖


圖2  線(xiàn)程優(yōu)先級示意圖


圖3  數據流示意圖


圖4 數據管道示意圖

DSP/BIOS II提供四類(lèi)不同的執行線(xiàn)程。每一類(lèi)線(xiàn)程又具有不同的執行、搶先和懸掛特性。DSP/BIOS II 支持兩個(gè)高優(yōu)先級的中斷線(xiàn)程和事先備好的后臺空閑過(guò)程循環(huán)。內核執行線(xiàn)程通過(guò)HWI, SWI和IDL模塊進(jìn)行管理。另外,DSP/BIOS II新提供了多任務(wù)線(xiàn)程類(lèi),能較好的完成任務(wù)間的同步,它由TSK模塊管理,在任何執行時(shí)刻為懸掛和恢復執行同步,包括調整自身或其他任務(wù)的優(yōu)先級。這種同步化的任務(wù)給并發(fā)系統設計提供了良好的基礎。
硬件抽象
DSP/BIOS II 提供硬件的邏輯接口。它獨立于硬件實(shí)現。它對硬件部分的訪(fǎng)問(wèn)、配置,內存映射、片內定時(shí)器和硬件中斷等進(jìn)行抽象,簡(jiǎn)化了應用的移植。它通過(guò)可視化的設置工具定義內存映射、中斷向量表,對定時(shí)器編程,和完成動(dòng)態(tài)的內存分配與釋放。
設備獨立I/O
設備獨立I/O模塊執行數據傳輸服務(wù),傳輸可以在DSP與外設之間和多線(xiàn)程之間進(jìn)行。DSP/BIOS II 支持數據管道(pipe)和數據流(stream)兩種傳送方式。數據管道是在讀寫(xiě)線(xiàn)程之間快速傳送數據的小型統一部件。數據流為緩沖方案增加了靈活性使之適應更廣的需求。數據流依靠多個(gè)潛在的設備驅動(dòng)器,這種設備驅動(dòng)器封裝了設備獨立的屬性與方法。在數據通過(guò)堆疊(stacking)機制傳送時(shí),設備驅動(dòng)器能夠執行數據處理操作,驅動(dòng)器在數據通道中實(shí)行流水線(xiàn)處理。PIP和SIO模塊分別管理目標應用中的數據管道和流的傳送服務(wù)。SIO同DEV模塊結合,使DEV通過(guò)SIO發(fā)送和接收數據。
線(xiàn)程間的通信和同步
DSP/BIOS II 中的線(xiàn)程間通信和同步模塊支持多任務(wù)。信號量(semaphores)是最主要的同步方式。任務(wù)運用信號量保持同步資源訪(fǎng)問(wèn)的同步。訪(fǎng)問(wèn)外設的數據緩沖區,以及訪(fǎng)問(wèn)共享存儲區都是資源同步的典型事例。信號量還控制著(zhù)多任務(wù)執行的同步。信號量由SEM模塊管理,而LCK模塊提供共享資源的判優(yōu)和互斥。數據隊列可用于線(xiàn)程間通信。郵箱(mailbox)類(lèi)似于數據隊列,能夠理想的完成任務(wù)通信。數據隊列由QUE模塊管理,郵箱模塊由MBX管理。
實(shí)時(shí)分析
實(shí)時(shí)分析(TRA)模塊在應用程序執行期間與DSP項目實(shí)時(shí)交互和診斷。LOG,STS和TRC模塊對這些功能進(jìn)行管理。主機與目標板之間的數據傳輸能力對實(shí)施分析是非常關(guān)鍵的。DSP/BIOS提供HST和RTDX模塊來(lái)管理這些功能。CCS IDE中提供了以下六種實(shí)時(shí)分析工具:
—CPU負載圖
負載圖提供的是目標CPU的負載曲線(xiàn)。CPU負載的定義是除去執行最低優(yōu)先級任務(wù)以外的時(shí)間量。最低優(yōu)先級任務(wù)是只在其他線(xiàn)程都不運行時(shí)才執行的任務(wù)。因此,CPU負載包括從目標向主機傳送數據和執行附加后臺任務(wù)所需的時(shí)間。
——執行圖示
在執行圖示窗口中,我們可以看到各個(gè)線(xiàn)程的活動(dòng)方式。執行圖的刷新速率可以通過(guò)RTA控制版設定。圖形中還包括了信號量的活動(dòng),周期性函數標記(tick),和時(shí)鐘模塊標記。執行圖示能從整體上看到項目所有線(xiàn)程的活動(dòng)狀態(tài)。
——主機通道控制
利用信道控制窗口可以把文件綁定在定義的主機通道上,啟動(dòng)信道上的數據傳輸以及監測數據傳輸流量。
——信息記錄
選定某一記錄名,從此窗口可看到程序運行的信息記錄。主機從目標板獲取DSP/BIOS數據期間的記錄信息將顯示在此窗口中。開(kāi)發(fā)者定義的記錄信息也顯示在窗口中。
——統計觀(guān)察
統計觀(guān)察窗可以計算出事件、變量出現的次數,給出其最大值,最小值和平均值,監測定時(shí)時(shí)間和變量的增值的實(shí)際值和期望值差。
——實(shí)時(shí)控制面板
它對運行時(shí)間中不同類(lèi)型進(jìn)行追蹤控制,在默認情況下,所有類(lèi)型的跟蹤都是允許的。為跟蹤任意一種類(lèi)型,必須使能全局主機(GLOBAL HOST)。通過(guò)實(shí)時(shí)改變控制版的屬性,還可以設定實(shí)時(shí)分析工具的刷新頻率。
——內核/對象觀(guān)察
內核/對象觀(guān)察窗可觀(guān)察當前的配置,狀態(tài)和運行在目標板上的DSP/BIOS對象狀況,此工具對動(dòng)態(tài)和靜態(tài)配置的對象都可以進(jìn)行觀(guān)測。
其它系統服務(wù)
DSP/BIOS II 仿照標準的C語(yǔ)言庫,把程序錯誤處理與終止,組裝到其它系統服務(wù)模塊。這些功能函數由SYS模塊管理。SYS中還包括各種printf()的變體形式。
原子(atomic)函數是非搶先式操作,比如AND, OR, INC, DEC, SET 和 CLEAR,使用它們時(shí)不允許中斷。原子函數由ATM模塊管理。

執行線(xiàn)程規劃
在DSP實(shí)時(shí)應用中,由外部時(shí)間或控制信號驅動(dòng)功能函數,所以函數執行方式和執行時(shí)間對系統非常重要。DSP/BIOS支持多線(xiàn)程應用,線(xiàn)程可以定義不同的優(yōu)先級,使高優(yōu)先級線(xiàn)程可以搶斷低優(yōu)先級的線(xiàn)程,而且不同的線(xiàn)程之間可以實(shí)現交互,比如阻塞,通信和同步。
如圖2,DSP/BIOS II的線(xiàn)程分為以下四種類(lèi)型(優(yōu)先級從高到低)
硬件中斷(HWI):包括CLK功能。它的優(yōu)先級數目依賴(lài)于DSP,一般為32個(gè),由外部同步信號觸發(fā)。屬于完全執行方式(run-to-completion)。
軟件中斷(SWI):可定義15個(gè)不同的優(yōu)先級,通過(guò)調用SWI函數觸發(fā)。屬于完全執行方式,有執行截止時(shí)間。PRD是一種特殊的軟件中斷,它的執行基于多個(gè)設備定時(shí)器中斷或一些其它事件。
任務(wù)(TSK):可定義15個(gè)不同的優(yōu)先級。不同于SWI和HWI,它們在執行過(guò)程中為等待可用資源會(huì )被掛起。信號量,隊列和郵箱用于不同任務(wù)之間的通信與同步。任務(wù)具有四個(gè)狀態(tài),就緒(ready),執行(running),阻塞(blocked),終止(terminated)。
后臺線(xiàn)程(IDL):空閑循環(huán)線(xiàn)程具有最低優(yōu)先級,運行期間可以被任何其它線(xiàn)程搶先。當main()函數執行完后,IDL便開(kāi)始運行。
還有一類(lèi)數據通知函數,他們在有數據幀讀寫(xiě)的時(shí)候被觸發(fā)用來(lái)通知讀寫(xiě)器,并利用管道(PIP)或主機信道(HST)傳送數據。

低層函數功能
內核的低層函數嵌入在三個(gè)軟件模塊中,這三個(gè)模塊分別為:
MEM模塊:管理存儲區的分配。在DSP應用項目中,連接命令文件用作內存的分配,此文件通過(guò)配置工具生成,若要自己創(chuàng )建連接命令文件,則應包含前者。實(shí)時(shí)DSP硬件平臺包括幾種不同的存儲區:設備自身的RAM,零等待狀態(tài)外部SRAM和慢速DRAM等,以滿(mǎn)足不同的存儲需求。
SYS模塊:提供多種系統服務(wù)。SYS提供一系列基本的類(lèi)似于標準C運行時(shí)間庫函數系統服務(wù),比如系統停止,系統錯誤等。
QUE模塊:管理隊列。提供一類(lèi)函數用于管理隊列列表。QUE模塊最常用于實(shí)現FIFO列表,其中的元素在尾部插入,頭部移出。

輸入輸出功能
DSP/BIOS應用項目的輸入輸出提供流(stream),管道(pipe)和主機信道(host channel)三類(lèi)處理對象。每一類(lèi)對象有其自身的數據I/O管理模塊。
流是一種在應用程序I/O設備之間數據傳輸的信道,這種信道在輸入時(shí)為只讀,在輸出時(shí)為只寫(xiě),如圖3,流對所有I/O設備提供一個(gè)簡(jiǎn)單的統一接口,這時(shí)應用項目可以不用關(guān)心每個(gè)獨立設備的操作細節。
流的一個(gè)重要方面是它的異步屬性。輸入輸出并行使用數據緩沖區。當處理當前緩沖時(shí),可將新的輸入緩沖區寫(xiě)滿(mǎn)。因僅交換數據指針而不用進(jìn)行數據交換,流是高效的,使程序容易滿(mǎn)足實(shí)時(shí)的要求。SIO模塊對流實(shí)行管理,通過(guò)了DSP/BIOS編程接口的設備驅動(dòng)器跟不同類(lèi)型的設備進(jìn)行交互。設備驅動(dòng)器是管理設備的軟件模塊,遵從DEV提供的公用接口,流提出請求,驅動(dòng)器就按照適合于特定設備的方式執行。
數據管道用于輸入輸出數據的緩存,管道提供一致的數據結構,可以用于驅動(dòng)DSP設備和所有外設間的I/O,見(jiàn)圖4。與流相比,數據管道的開(kāi)銷(xiāo)較大,它的通知機制是由管道管理器自動(dòng)處理的。管道I/O操作一次只能處理一幀,盡管每一幀需要固定長(cháng)度,但應用項目可以根據幀長(cháng)度設置可變數目的數據。每一個(gè)數據傳送線(xiàn)程需要獨立的數據管道,每一個(gè)管道只有一對讀寫(xiě)器提供點(diǎn)對點(diǎn)的通信。一般來(lái)講,管道的一端由HWI控制,另一端由SWI控制。管道也能在兩個(gè)應用線(xiàn)程之間傳輸數據。
主機信道對象允許應用程序在主機和目標板之間傳遞數據,它的輸入輸出是靜態(tài)配置的,而且每一個(gè)主機信道的內部實(shí)現都采用了管道對象方式。

結語(yǔ)
TI公司的TMS320系列DSP已被多家電子通信廠(chǎng)商作為信號處理的首選芯片,所以如何更好的使用,以實(shí)現整體項目的可靠性和最優(yōu)化成為我們關(guān)心的問(wèn)題?;赥MS320系列的DSP/BIOS II 為開(kāi)發(fā)人員提供了合理的解決方案。DSP/BIOS的優(yōu)越性主要體現在它的多任務(wù)規劃和實(shí)時(shí)分析上,而且CCS中提供的DSP/BIOS設置工具使開(kāi)發(fā)人員可以可視化的進(jìn)行程序編排。DSP/BIOS II 的應用可以有效的縮短項目開(kāi)發(fā)周期?!?

參考文獻
1 TI ,TMS320 DSP/BIOS User's Guide,SPRU423, February 2001.
2 TI,TMS320C5000 DSP/BIOS Application Programming Interface (API) Ref Guide spru404c, April 2001.


關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>