<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 關(guān)于RTX51 TINY的分析與探討

關(guān)于RTX51 TINY的分析與探討

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

3 共享資源實(shí)現[1]

由于是一個(gè)多任務(wù)的操作系統,那么就不免會(huì )有幾個(gè)任務(wù)使用同一個(gè)資源,這些資源可能是一個(gè)變量,也可能是輸入/輸出設備。這就要求一個(gè)任務(wù)在使用共享資源時(shí)必須獨占該資源,否則可能會(huì )造成數據被破壞。

中實(shí)現共享資源獨占的方法比較多。比如,可以通過(guò)TIMESHARING這個(gè)變量來(lái)禁止時(shí)間片輪轉,使其值為0,就可以實(shí)現禁止任務(wù)切換,從而當前任務(wù)就可以獨占共享資源。還可以關(guān)閉中斷來(lái)實(shí)現,使EA=0,定時(shí)器T0的中斷被關(guān)閉,不能再為時(shí)間片輪轉提供基準,從而禁止了任務(wù)切換。但這兩種方法都帶有一定的局限性,前一種方法只能適用于實(shí)時(shí)性要求不高的場(chǎng)合,后一種方法由于T0中斷關(guān)閉時(shí)間不能太長(cháng),只能適用于一些簡(jiǎn)單變量操作的場(chǎng)合?;谝陨锨闆r,下面通過(guò)另一種方法來(lái)實(shí)現共享資源的使用。

full中可以利用信號量很好地實(shí)現對共享資源的操作,也可以把這種思想應用到RTX51 中;而在RTX51 TINY中不支持信號量,這就要求用戶(hù)自己定義信號量及其操作過(guò)程。以下是部分代碼:

struct signal {//定義信號量結構體
    uchar count;//該信號量的當前計數值
    uint list_tasks;//等待該信號量任務(wù)表
  } signal_list[3];
  /*初始化信號量 */
  void init_signal(uchar task_id,uchar count) {
    signal_list[task_id].count=count;
    signal_list[task_id].list_tasks=0;
  }
  /*等待信號量 */
  char wait_signal(uchar task_id) {
    if(signal_list[task_id].count>0) {
      signal_list[task_id].count;//獲取信號量
      return(-1);
    }
    signal_list[task_id].list_tasks|=(1os_running_task_id());//標記為等待狀態(tài)
    return(0);
  }
  void wait_sem(uchar task_id) {
    if(wait_signal(task_id==0)
      while(os_wait(K_TMO,255,0)!=RDY_EVENT);//等待,直到該任務(wù)就緒
  }
  /*釋放信號量 */
  char release_signal(uchar task_id) {
    uchar i:
    uint temp=1;
    if((signal_list[task_id].count>0)||( signal_list[task_id].list_tasks==0)) {
      signal_list[task_id].count++; //釋放信號量
      return(-1);
    }
    for(i=0;i16;i++) {
      if((signal_list[task_id].list_tasks(temp))!=0){//查找任務(wù)表
        signal_list[task_id].list_tasks= ~(1i);return(i); //返回等待信號量的任務(wù)號
      }
      temp=1:
    }
  }
  void release_sem(uchar task_id) {
    char task_temp;
    task_temp=release_signal(task_id);
    if(task_temp!=-1) {
      os_set_ready(task_temp); //任務(wù)task_id進(jìn)入就緒狀態(tài)
      os_switch_task();
    }
  }



關(guān)鍵詞: 探討 分析 TINY RTX51 關(guān)于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>