新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 介紹一種實時操作系統(tǒng)DSP/BIOS

        介紹一種實時操作系統(tǒng)DSP/BIOS

        作者: 時間:2009-04-09 來源:網(wǎng)絡(luò) 收藏

        3  STS
          對一個軟件進(jìn)行分析優(yōu)化時,通常會用到profile的功能。但是在運(yùn)行的的環(huán)境中使用profile等效于加入了多個程序斷點(diǎn)。  由于現(xiàn)在的通常具有很深的流水線結(jié)構(gòu)來保證的高運(yùn)算能力,如的C6000系列的流水線長度為12級,程序斷點(diǎn)需要排空所有已經(jīng)進(jìn)入流水線的指令。這樣也就破壞了真正的運(yùn)行環(huán)境。同時profile還必須調(diào)用輸出模塊向主機(jī)傳遞時間信息。因此在profile的情況下真正的運(yùn)行環(huán)境是沒有辦法得到保護(hù)的。針對這種情況引入了一個統(tǒng)計模塊STS。STS對象只有4個數(shù)據(jù)Previous、Count、Total和Max。調(diào)用的方法(API)也只有4個,即STS_add()、  STS_set()、  STS_delta()和STS_reset()。這些API對數(shù)據(jù)的操作功能如表1所示。

        本文引用地址:http://www.104case.com/article/152540.htm

        如果要對某一段程序進(jìn)行分析時,只需在其前后調(diào)用STS_set和STS_delta就可以了。如例2使用STS測試程序段執(zhí)行周期如下:
          /*  Header  files  needed  for  DSP    */
          #include  <sts.h>
          #include  <clk.h>

          /*  functions  */
          void  func_load();

          /*  Objects  created  by  the  Configuration  Tool  */
          extern  STS_Obj  stsLoad;

          /*
          *  ========  main  ========
          */
          void  main()
          {

          /*  fall  into    idle  loop  */
           return;
          }

          void  func_load()
          {
          STS_set(stsPrintf、  CLK_gethtime());

          /*  測試程序段    */
          ...
          STS_delta(stsPrintf、  CLK_gethtime());
          }
          func_load()為一個中斷服務(wù)程序(ISR)。在C6211,150MHz的情況下,僅插入33個周期,約0.22μs。
        4  任務(wù)調(diào)度(HWI/SWI/TSK)
          一個的核心永遠(yuǎn)都是任務(wù)的調(diào)度。在中任務(wù)的調(diào)度是通過HWI、SWI和  TSK  三個模塊來實現(xiàn)的。這三個模塊分別對應(yīng)于不同的調(diào)度方法。HWI即硬件中斷。在  DSP/BIOS中硬件中斷主要負(fù)責(zé)從外部設(shè)備中讀寫數(shù)據(jù)。由于硬件中斷直接與硬件打交道,所以對應(yīng)的中斷服務(wù)程序ISR應(yīng)該盡可能地短小精悍。需要注意的是HWI并不引起任務(wù)調(diào)度,因此在ISR的入口和出口成對地調(diào)用_HWI_enter()和_HWI_exit()這兩個宏是必須的。HWI在處理完數(shù)據(jù)的輸入輸出后調(diào)用SWI_post()來調(diào)度相應(yīng)的軟件中斷,SWI來完成數(shù)據(jù)處理工作。SWI是  DSP/BIOS任務(wù)調(diào)度的核心,共有14個優(yōu)先級,每個優(yōu)先級可以有多個任務(wù)。SWI任務(wù)是搶斷式的,即高優(yōu)先級的任務(wù)可以搶斷低優(yōu)先級的任務(wù)。但是SWI任務(wù)是不可阻塞的。它的運(yùn)行狀態(tài)如圖1所示。

        linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 双流县| 五大连池市| 固阳县| 宁德市| 军事| 东兴市| 喀喇| 霍城县| 紫云| 西充县| 嘉兴市| 平乐县| 磐石市| 苍梧县| 乌兰县| 东辽县| 嘉兴市| 东兴市| 宁国市| 禹州市| 侯马市| 樟树市| 玉田县| 三亚市| 安溪县| 赫章县| 阜阳市| 信阳市| 额济纳旗| 昌平区| 新蔡县| 房山区| 自治县| 曲沃县| 南郑县| 张家川| 梅河口市| 航空| 石景山区| 鹰潭市| 金川县|