新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 介紹一種實時操作系統DSP/BIOS

        介紹一種實時操作系統DSP/BIOS

        作者: 時間:2009-04-09 來源:網絡 收藏

        新推出的C6400系列最高運行時鐘可以達到1.1GHz,運算能力可以達到8800MIPS。如何充分發揮的這種性能優勢,對軟件提出了很高的要求。首先為了降低系統成本,就要求將許多以前用硬件實現的功能軟件化,原來由多個完成的工作由一塊DSP完成,DSP要能夠同時完成多個相同或不同的任務而相互之間沒有影響。其次為了產品的維護和升級,要求軟件盡可能地模塊化,使用高級語言如C來編程,有統一的接口API。所有這些新的要求,都需要使用。以往直接將應用程序運行于裸機之上的作法顯然已經不再適用了。推出的技術正是基于其多年從事DSP研制生產的經驗,為開發者量身定做的一個優秀軟件平臺?! 「少F的是該是免費的,這為眾多的中小用戶使用DSP打開了方便之門。
        1 
          簡單地說,操作系統與一般意義上的操作系統(如Windows、  Unix等)的主要差別就在于實時操作系統提供了一種機制,使得運行于其上的應用程序都能夠滿足實時性的要求?! ≡赪indows中常見的沙漏現象(即用戶等待現象)在實時系統中是絕對不允許的。因為這可能造成通訊中斷,馬達損毀等災難性的結果?! ?a class="contentlabel" href="http://www.104case.com/news/listbylabel/label/DSP/BIOS">DSP/是特別針對實時系統,運行于C5000,C6000系列的DSP之上的一個實時操作系統。  實際上是一個可調用的系統模塊API的集合。以下就各個模塊分別加以
        2 LOG
          在開發的時候通常需要使用printf()來顯示當前狀態。但是printf()是非?;ㄙM時間的函數、而且不具有實時性。因為DSP需要對顯示的數據進行分析,整理成合適的顯示格式,并調用輸出顯示模塊。所以在一個實時性要求很高的應用中,對printf()的調用可能會使系統根本無法滿足實時要求。在DSP/BIOS中引入了一個相應的函數LOG_printf()。該函數是LOG對象的一個方法(或調用函數〕。LOG對象本質上是一個32bit的整形數,其高低16bit分別代表要顯示的兩個數據。例1是分別使用printf()和LOG_printf()作比較的示范程序:
          #include  <stdio.h>  
          /*  Header  files  needed  for  DSP  BIOS  */
          #include ?。約td.h>
          #include ?。糽og.h>

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

          /*  functions  */
          void  func_printf();
          void  func_LOG_printf();
          
          /*  Objects  created  by  the  Configuration  Tool  */
          extern  LOG_Obj  logTrace;
          /*
          *========  main  ========
          */
          void  main  ()
          {
          return;
          }

          void  func_printf(int  time)
          {
          printf(″Strart  printf  demon″); 
          printf(″Current  time=%d  n″  、  time);
          printf(″End  printf  demon″);
          return;
          }

          void  func_LOG_printf(int  time)
          {
          LOG_printf(logTrace、″Strart  LOG_printf  demon″);
          LOG_printf(logTrace、    ″Current  time=%d  n″  、  time);
          LOG_printf(logTrace、  ″End  LOG_printf  demon″);
          return;
          }
          func_printf()和func_LOG_printf()由DSP內時鐘控制每100ms周期性地分別調用一次。通過對printf()和LOG_printf()運行時間作比較發現,在C6211運行在150MHz的情況下,printf()需花費4000個周期約26.7μs,LOG_printf()只花費36個周期約0.24μs。printf()比LOG_printf()多開銷100倍以上的時間,因此LOG_printf()對于實時地顯示一些運行狀態是非常有幫助的。而且對于熟悉C語言的開發者來說,LOG_printf()的調用格式幾乎與printf()完全一樣。

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

        上一頁 1 2 3 4 5 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盖州市| 德安县| 洮南市| 长武县| 吴川市| 孟津县| 西贡区| 达州市| 平阳县| 涞水县| 宜都市| 皮山县| 宁河县| 丹阳市| 深圳市| 郸城县| 吴川市| 云阳县| 上栗县| 丹阳市| 德清县| 鄯善县| 三穗县| 县级市| 马鞍山市| 鄂伦春自治旗| 旬阳县| 武穴市| 霍州市| 平安县| 金溪县| 西安市| 三台县| 凤山市| 泰安市| 甘泉县| 长阳| 牙克石市| 曲水县| 赤水市| 靖州|