新聞中心

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

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

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

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

本文引用地址:http://butianyuan.cn/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內(nèi)時(shí)鐘控制每100ms周期性地分別調(diào)用一次。通過(guò)對(duì)printf()和LOG_printf()運(yùn)行時(shí)間作比較發(fā)現(xiàn),在C6211運(yùn)行在150MHz的情況下,printf()需花費(fèi)4000個(gè)周期約26.7μs,LOG_printf()只花費(fèi)36個(gè)周期約0.24μs。printf()比LOG_printf()多開(kāi)銷100倍以上的時(shí)間,因此LOG_printf()對(duì)于實(shí)時(shí)地顯示一些運(yùn)行狀態(tài)是非常有幫助的。而且對(duì)于熟悉C語(yǔ)言的開(kāi)發(fā)者來(lái)說(shuō),LOG_printf()的調(diào)用格式幾乎與printf()完全一樣。

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

上一頁(yè) 1 2 3 4 5 下一頁(yè)

評(píng)論


相關(guān)推薦

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

關(guān)閉