亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式操作系統(tǒng)Visual DSP++Kernel的原理與應(yīng)用

        2011-01-27 01:07:50金偉正
        關(guān)鍵詞:嵌入式操作系統(tǒng)信號(hào)量服務(wù)程序

        金偉正,金 湯

        (武漢大學(xué)電子信息學(xué)院電子工程系,湖北武漢 430079)

        嵌入式操作系統(tǒng)Visual DSP++Kernel的原理與應(yīng)用

        金偉正,金 湯

        (武漢大學(xué)電子信息學(xué)院電子工程系,湖北武漢 430079)

        本文剖析了 ADSP中基于嵌入式操作系統(tǒng)Visual DSP++Kernel(VDK)開發(fā)工具的原理與應(yīng)用、優(yōu)點(diǎn)、常用庫函數(shù)、DEBUG工具以及它的具體應(yīng)用。通過對(duì)VDK的學(xué)習(xí),可以使學(xué)生進(jìn)一步理解和掌握嵌入式操作系統(tǒng)的工作原理,提高他們的應(yīng)用和開發(fā)能力。

        V isualDSP++;內(nèi)核;數(shù)字信號(hào)處理器;嵌入式系統(tǒng)

        嵌入式操作系統(tǒng)[1]如今已經(jīng)大量地被MCU、DSP及SOC等處理器采用,它的引入加快了芯片集成度的發(fā)展,也提高了開發(fā)效率,縮短了開發(fā)周期。而嵌入式操作系統(tǒng)的工作原理對(duì)學(xué)生來說是一個(gè)難點(diǎn)。本文主要討論ADSP中基于嵌入式操作系統(tǒng)的開發(fā)工具Visual DSP++Kernel(VDK)的特點(diǎn)及應(yīng)用。通過對(duì)VDK[2]的學(xué)習(xí),可以使學(xué)生進(jìn)一步理解和掌握嵌入式操作系統(tǒng)的基本概念、基本原理和基本過程,同時(shí)提高他們的應(yīng)用和開發(fā)能力。

        1 Visual DSP++Kernel的特點(diǎn)

        AD公司為其生產(chǎn)的DSP芯片提供了相應(yīng)的開發(fā)環(huán)境Visual DSP++[3],而其中的Kernel則提供了基于嵌入式操作的系統(tǒng)的一個(gè)開發(fā)平臺(tái)。利用VDK來進(jìn)行DSP應(yīng)用程序的開發(fā)有眾多的優(yōu)點(diǎn):

        (1)快速的應(yīng)用程序開發(fā)。Visual DSP++和VDK緊密結(jié)合的開發(fā)環(huán)境使開發(fā)人員不必手工編寫控制程序,它可以利用自動(dòng)代碼生成器、文件模板以及標(biāo)準(zhǔn)的設(shè)備驅(qū)動(dòng)接口程序等來完成這些工作,使開發(fā)人員致力于感興趣的算法或控制流研究,而不必過多的注意其執(zhí)行細(xì)節(jié)。

        (2)具有易調(diào)試的控制結(jié)構(gòu)。VDK提供了一系列的工具庫函數(shù),利用這一工具提供的系統(tǒng)狀態(tài)即時(shí)獲取功能以及實(shí)時(shí)數(shù)據(jù)統(tǒng)計(jì)結(jié)果等,即使調(diào)試一個(gè)很復(fù)雜的應(yīng)用程序也變得容易的多。

        (3)具有代碼復(fù)用性。VDK在它標(biāo)準(zhǔn)庫中提供了可重用的函數(shù),避免了手工編寫。而且Kernel和與之緊密結(jié)合的Visual DSP++開發(fā)環(huán)境能夠有效的將一個(gè)大的應(yīng)用程序拆分成一些易保持便于理解的模塊或子系統(tǒng)。通過這樣屏蔽子系統(tǒng)的方法可以有效地防止在系統(tǒng)編程時(shí)頻繁出現(xiàn)大片代碼。

        (4)VDK還提供了一個(gè)硬件抽象層。標(biāo)準(zhǔn)化的接口允許我們?cè)谝粋€(gè)獨(dú)立的平臺(tái)上,使用高級(jí)語言(C或C++)[4]編寫大多數(shù)的應(yīng)用程序。

        2 VDK庫函數(shù)及狀態(tài)圖

        和大多數(shù)的嵌入式操作系統(tǒng)一樣,VDK有著自己的一套關(guān)于線程調(diào)度、任務(wù)管理、時(shí)間管理、信號(hào)傳遞和中斷服務(wù)等的庫函數(shù):

        (1)調(diào)度管理函數(shù)(Scheduler Management Functions);PushUnscheduledRegion()、PopUnscheduledRegion()等。

        (2)線程和系統(tǒng)信息函數(shù)(Thread and System Information Functions);GetThreadHandle()、GetThreadID()、GetThreadStatus()、GetThread-Type()等。

        (3)線程創(chuàng)建和銷毀函數(shù)(Thread Creation and Destruction Functions);CreateThread()、DestroyThread()、FreeDestroyedThreads()等。

        (4)線程優(yōu)先級(jí)管理函數(shù)(Thread Priority Management Functions);GetPriority()、ResetPriority()、SetPriority()等。

        (5)信號(hào)量管理函數(shù)(Semaphore Management Functions);GetSemaphoreValue()、PendSemaphore()、PostSemaphore()、SetEventBit()等 。

        (6)事件和事件位函數(shù)(Event and EventBit Functions);ClearEventBit()、GetEventBitValue()、GetEventData()、GetEventValue()、LoadEvent()、PendEvent()、SetEventBit()等。

        線程執(zhí)行過程,以及信號(hào)量的傳遞邏輯關(guān)系如圖1所示。

        圖1 VDK進(jìn)程的狀態(tài)機(jī)

        3 VDK的實(shí)現(xiàn)與應(yīng)用

        3.1 線程

        一個(gè)應(yīng)用程序可以劃分為多個(gè)功能模塊,每個(gè)模塊可以用一個(gè)線程實(shí)現(xiàn),線程間可以互相通信。線程并不是直接定義的,而是先定義線程類型,再由線程類型例化得到。一個(gè)線程類型可有多個(gè)例化,也就是說一個(gè)系統(tǒng)中多個(gè)線程可以屬于相同的線程類型。線程類型實(shí)質(zhì)上是各空間VDK下線程類的子類,而線程是該子類例化得到的對(duì)象。線程類型創(chuàng)建時(shí)被分配一個(gè)默認(rèn)的優(yōu)先級(jí),該優(yōu)先級(jí)可以通過調(diào)用函數(shù)SetPriority()改變,同一類型的線程具有相同的優(yōu)先級(jí)。每個(gè)線程包含5個(gè)成員函數(shù):創(chuàng)建函數(shù)、初始化函數(shù)、運(yùn)行函數(shù)、錯(cuò)誤處理函數(shù)和銷毀函數(shù)。其中,創(chuàng)建函數(shù)類似于C++中類的構(gòu)造函數(shù),用于創(chuàng)建一個(gè)線程并為它分配資源。銷毀函數(shù)類似于C++中類的析構(gòu)函數(shù),用于銷毀一個(gè)線程并釋放其所占資源。運(yùn)行函數(shù)包含線程所要完成算法,是線程的核心部分,類似于C中的main()函數(shù)。

        3.2 調(diào)度

        調(diào)度是一種管理和協(xié)調(diào)線程的機(jī)制,它保證優(yōu)先級(jí)最高的就緒線程能夠最早占用處理器來運(yùn)行。所謂就緒,就是線程已經(jīng)具備運(yùn)行所需的所有數(shù)據(jù)和參數(shù)等資源。調(diào)度在具有最高優(yōu)先級(jí)的線程改變時(shí)被激發(fā)。調(diào)度的實(shí)現(xiàn)基于一種被稱為就緒隊(duì)列的內(nèi)部數(shù)據(jù)結(jié)構(gòu)。就緒隊(duì)列中的就緒線程先按優(yōu)先級(jí)排隊(duì),然后遵循“先進(jìn)先服務(wù)”的原則占用處理器。線程最高優(yōu)先級(jí)為0,是保留的;最低優(yōu)先級(jí)為DSP數(shù)據(jù)字寬減去2,如32位的DSP為30。具有最低優(yōu)先級(jí)的線程是預(yù)定義的IDLE線程,它在就緒隊(duì)列為空時(shí)自動(dòng)運(yùn)行,使得DSP處于低功耗狀態(tài)。

        3.3 信號(hào)

        信號(hào)是線程之間進(jìn)行通信和同步的橋梁。它包括:信號(hào)量、事件位和事件和設(shè)備標(biāo)志。

        信號(hào)量是應(yīng)用系統(tǒng)中所有線程都可訪問的全局資源的抽象,有2個(gè)值:真和假。它的值為真時(shí),表示該資源可用,所有正在等待該信標(biāo)的線程中優(yōu)先級(jí)最高的那一個(gè)進(jìn)入就緒隊(duì)列等候運(yùn)行;它的值為假時(shí),表示該資源已被占用。線程或者中斷服務(wù)程序利用信號(hào)量所代表的資源完成自己的任務(wù)后調(diào)用API函數(shù)釋放該資源以便其他線程或者中斷服務(wù)程序使用。

        事件和事件位是標(biāo)識(shí)系統(tǒng)狀態(tài)的信號(hào),用于協(xié)調(diào)線程的執(zhí)行。事件位用來指示系統(tǒng)某一要素所處狀態(tài);事件是所有事件位按照指定規(guī)則進(jìn)行布爾操作的結(jié)果。任何一個(gè)事件位改變都會(huì)導(dǎo)致事件的值被重新計(jì)算。信標(biāo)標(biāo)識(shí)系統(tǒng)資源是否可用,而事件位和事件標(biāo)識(shí)線程中的操作主體利用系統(tǒng)資源完成其工作后所處的狀態(tài)。線程可以調(diào)用PendEvent()等候一個(gè)事件發(fā)生。

        設(shè)備標(biāo)志是設(shè)備驅(qū)動(dòng)與線程之間聯(lián)系的紐帶。例如它可以將A/D采樣數(shù)據(jù)的到來這一事件通知多個(gè)等待這些數(shù)據(jù)的線程,而信號(hào)量、事件和事件位就不能描述它。

        3.4 中斷服務(wù)程序

        VDK的中斷服務(wù)程序必須用匯編語言編寫而且應(yīng)該比較短小,完成釋放信號(hào)量、改變事件位、激活設(shè)備驅(qū)動(dòng)與線程交換數(shù)據(jù)等工作,而所有的計(jì)算應(yīng)該在線程域完成。中斷可以調(diào)用API函數(shù)被允許或禁止。

        3.5 設(shè)備驅(qū)動(dòng)

        基于VDK的應(yīng)用程序可以分解為兩個(gè)域:線程域和中斷域。圖2所示線程域中對(duì)線程進(jìn)行管理的機(jī)制稱為軟件調(diào)度,由內(nèi)核完成;中斷域中對(duì)中斷進(jìn)行管理的機(jī)制稱為硬件調(diào)度,由DSP硬件(中斷控制器)完成。硬件調(diào)度和軟件調(diào)度是并行的,但中斷發(fā)生時(shí)硬件調(diào)度搶先發(fā)生,這時(shí)軟件調(diào)度和線程的優(yōu)先級(jí)是無意義的。

        圖2 并行調(diào)度

        操作系統(tǒng)是將鍵盤、顯示器、打印機(jī)和通信端口作為擴(kuò)充文件來處理的,而這種處理是通過設(shè)備驅(qū)動(dòng)程序?qū)崿F(xiàn)的。作為一種操作系統(tǒng)內(nèi)核,VDK也對(duì)外部設(shè)備進(jìn)行抽象,可以調(diào)用API函數(shù)對(duì)他們進(jìn)行打開和關(guān)閉、同步讀和同步寫以及控制。設(shè)備驅(qū)動(dòng)是線程域和中斷域之間溝通的橋梁,也是VDK應(yīng)用程序與外部環(huán)境通信的接口。其代碼既不在線程中也不在中斷服務(wù)程序中,而是一個(gè)獨(dú)立的函數(shù),它也不直接被內(nèi)核和中斷控制器調(diào)度。設(shè)備標(biāo)志是與設(shè)備驅(qū)動(dòng)相關(guān)聯(lián)的信號(hào)。一個(gè)設(shè)備標(biāo)志為真時(shí),就表示與該標(biāo)志對(duì)應(yīng)的設(shè)備準(zhǔn)備好,所有等待該設(shè)備標(biāo)志的線程進(jìn)入就緒隊(duì)列。

        3.6 API

        應(yīng)用程序接口API(Application Programming Interface)是存放應(yīng)用程序可以調(diào)用的函數(shù)和宏的庫。API函數(shù)庫為VDK提供基本服務(wù):中斷處理、調(diào)度管理、線程管理、信標(biāo)管理、事件和事件位以及設(shè)備標(biāo)志的傳遞等。VDK應(yīng)用程序以線程域和中斷域?yàn)橹黧w,以信號(hào)為紐帶,以設(shè)備驅(qū)動(dòng)作為與外部環(huán)境進(jìn)行通信的接口,以調(diào)度為線程和中斷的管理和協(xié)調(diào)機(jī)制來完成復(fù)雜的控制功能。

        4 結(jié)語

        隨著DSP的集成度、執(zhí)行速度越來越高,高性能的DSP芯片需要有高效的系統(tǒng)控制程序來發(fā)掘它的潛力,使之功能得以充分的顯示。VDK非常適合用于構(gòu)造需要精巧控制代碼的系統(tǒng),這些系統(tǒng)中許多事件往往是隨機(jī)發(fā)生的。針對(duì)實(shí)際的應(yīng)用系統(tǒng),我們首先要進(jìn)行深入分析,建立系統(tǒng)模型,從中抽象出所要?jiǎng)?chuàng)建的線程類型、信號(hào)、設(shè)備驅(qū)動(dòng)和中斷服務(wù)程序等,然后就可以著手在VDK環(huán)境下編寫應(yīng)用程序了。

        通過對(duì)本文中VDK程序的學(xué)習(xí),可以使學(xué)生進(jìn)一步理解和掌握嵌入式操作系統(tǒng)的工作原理,為將來嵌入式操作系統(tǒng)打下了良好的基礎(chǔ),同時(shí)可以提高他們的應(yīng)用嵌入式操作系統(tǒng)的開發(fā)能力。

        [1] Jean J.Labrosse著、邵貝貝 譯.uC/OS-II—源碼公開的實(shí)時(shí)嵌入式操作系統(tǒng),2001

        [2] Analog Device.V isual DSP++Kernel User's Guide,April 2009

        [3] ANnalog Device.V isual DSP++4.5 Getting Started Guide for ADSP-21xx DSPs,April 2010

        [4] Analog Device.Visual DSP++4.5C/C++Com plier and Library Manual for ADSP-21xx DSPs,April 2010

        Visual DSP++Kernel Development Tools of ADSP Based on Embedded System

        JINWei-zheng,JIN Tang

        (Electronica l-In formation College,WuH an University,Wuhan 430079,China)

        This paper analyzes the Visual DSP++Kernel development tools of ADSP based on the embedded system about the advantage,library,function,thread,state diagram and specific application through an examp le.To the VDK simulaition for teaching and learning can make students understand and grasp the base theory of embedded operate system and imp rove their application and develop ability.

        visual DSP++;Kernel;DSP;embedded system

        TM 933.1

        A

        1008-0686(2011)02-0095-03

        2010-08-26;

        2010-12-03

        金偉正(1966-),男,碩士,副教授,主要從事數(shù)字信號(hào)處理教學(xué)和科研工作,E-m ail:jwz@eis.w hu.edu.cn

        猜你喜歡
        嵌入式操作系統(tǒng)信號(hào)量服務(wù)程序
        基于STM32的mbedOS信號(hào)量調(diào)度機(jī)制剖析
        基于移動(dòng)終端的人事信息員工自助服務(wù)系統(tǒng)設(shè)計(jì)
        基于C#的進(jìn)程守護(hù)程序的設(shè)計(jì)
        視聽(2020年3期)2020-06-11 14:28:18
        典型實(shí)時(shí)嵌入式操作系統(tǒng)應(yīng)用分析
        Nucleus PLUS操作系統(tǒng)信號(hào)量機(jī)制的研究與測(cè)試
        基于嵌入式操作系統(tǒng)的工業(yè)采集板設(shè)計(jì)
        水利工程施工監(jiān)理服務(wù)程序及質(zhì)量控制
        應(yīng)用服務(wù)型人才培養(yǎng)體系下的嵌入式操作系統(tǒng)教學(xué)改革探索
        μC/OS- -III對(duì)信號(hào)量的改進(jìn)
        Linux操作系統(tǒng)信號(hào)量機(jī)制的實(shí)時(shí)化改造
        六月丁香婷婷色狠狠久久| 97超碰精品成人国产| 日本顶级metart裸体全部| 艳妇臀荡乳欲伦交换在线播放| 亚洲AV无码资源在线观看| 亚洲av免费高清不卡| 在线播放亚洲丝袜美腿| 亚洲国产成人久久综合| 日韩毛片基地一区二区三区| 中文字幕一区二区网站| 在线观看午夜视频国产| 亚洲国产精品成人综合色| 免费啪啪视频一区| 亚洲国产精品第一区二区三区 | 亚洲国产精品中文字幕日韩| av是男人的天堂免费| 国产精品久久久久久妇女| 国产熟妇人妻精品一区二区动漫| 亚洲精品亚洲人成在线下载 | 91自国产精品中文字幕| 少妇爽到高潮免费视频| 久久久国产乱子伦精品作者| 欧美成人一级视频| 日韩人妻av不卡一区二区三区| 成年人观看视频在线播放| 亚洲国产另类精品| 国产欧美日韩综合一区二区三区 | 亚洲成在人线av品善网好看| 国产黑丝在线| 精品人妻一区二区三区av | 久久精品国产亚洲av超清| 成人免费看www网址入口| 国产在亚洲线视频观看| 国产自拍三级黄片视频| 国产freesexvideos中国麻豆 | 国产精品久久久久久婷婷| 亚洲中文字幕无码卡通动漫野外| 国产自拍精品在线视频| 亚洲夜夜性无码| 成年在线观看免费视频| 国产精品国产三级国产一地|