新聞中心

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

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

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

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

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 红安县| 新密市| 小金县| 拉孜县| 凌源市| 吉木萨尔县| 天气| 盐源县| 开平市| 曲靖市| 清涧县| 沈阳市| 茶陵县| 衡山县| 韩城市| 陆川县| 邓州市| 吉首市| 大邑县| 汉寿县| 兴业县| 凤凰县| 高淳县| 孝义市| 迭部县| 江陵县| 鄂尔多斯市| 海丰县| 正镶白旗| 双江| 巴林右旗| 永宁县| 黄石市| 香港 | 安阳县| 岳阳市| 漳州市| 通渭县| 大田县| 永仁县| 商洛市|