1. gzyueqian
      18529173453
      首頁 > 新聞中心 > > 正文

      一個uCOS ARM系統的啟動過程分析及系統構架

      更新時間: 2007-01-24 16:20:02來源: 粵嵌教育瀏覽量:1053

      /****************************************************
      *一個uCOS ARM系統的啟動過程分析及系統構架。 *
      *Main 函數的代碼如下: *
      *****************************************************/
      int Main(int argc, char **argv)
      {
      ARMTargetInit() // 系統硬件初始化
      OSInit() //初始化操作系統
      uHALr_ResetMMU() //復位MMU
      LCD_Init() //初始化LCD 模塊
      LCD_printf("LCD initialization is OK\n") //顯示液晶屏信息
      LCD_printf("240 x 128 Text Mode\n")
      LoadFont() //裝載系統字體
      LCD_printf("Create task on uCOS-II...\n") //顯示液晶屏信息
      //創建系統的任務
      OSTaskCreate(Main_Task, (void *)0,
      (OS_STK *)& Main_Stack[STACKSIZE*8-1], Main_Task_Prio)
      OSTaskCreate(Led_Flash_Task, (void *)0,
      (OS_STK *)& Led_Flash_Stack[STACKSIZE-1], Led_Flash_Prio )
      OSTaskCreate(Lcd_Fresh_Task, (void *)0,
      (OS_STK *)& Lcd_Fresh_Stack[STACKSIZE-1], Lcd_Fresh_prio )
      OSTaskCreate(Key_Scan_Task, (void *)0,
      (OS_STK *)& Key_Scan_Stack[STACKSIZE-1], Key_Scan_Task_Prio )
      LCD_printf("Starting uCOS-II...\n")
      LCD_printf("Entering graph mode...\n")
      LCD_ChangeMode(DspGraMode) //設置液晶屏顯示為圖形模式
      initOSGUI() //初始化圖形用戶界面
      InitRtc() //初始化系統時鐘
      LCDFresh_MBox=OSMboxCreate(NULL) //創建LCD 刷新郵箱
      Lcd_Disp_Sem=OSSemCreate(1) //創建LCD 緩沖區控制權旗語,初值為1 滿足互斥條件
      Nand_Rw_Sem=OSSemCreate(1) //創建Nand-Flash 讀寫控制權旗語,初值為1 滿足互斥條件
      ARMTargetStart() //啟動操作系統的硬件定時器等中斷
      OSStart() // 啟動操作系統
      //程序不會運行至此
      return 0
      }//main end

      /****************************************************
      *系統啟動的時候創建了4 個系統任務,其中Main_Task 為系統的主任務,用戶的應 *
      *用程序就是從Main_Task 任務開始的。其代碼如下: *
      *****************************************************/
      void Main_Task(void *Id) //Main_Test_Task
      {
      POSMSG pMsg=0
      ClearScreen() //清除屏幕
      for( )
      OSTimeDly(1000)
      //消息循環
      /* for( ){
      pMsg=WaitMessage(0)
      tch(pMsg-> Message){
      case OSM_KEY:
      onKey(pMsg-> WParam,pMsg-> LParam)
      break
      }
      DeleteMessage(pMsg)
      }*/
      }
      /**************************************************
      通常多操作系統中的任務是一個無限循環,同樣,Main_Task 也要陷入一個無限循環。
      因為uCOS-II 是占先式多任務操作系統,如果沒有比Main_Task 任務更高優先級的任務
      進入就緒狀態,Main_Task 任務是不會放棄CPU 的控制權的。通過調用OSTimeDly(INT16U
      ticks)函數,可以使操作系統進行一次任務調度,并且執行下一個優先級的就緒狀態的
      任務。參數Ticks 表示任務延時的節拍數,一旦規定的時間期滿,該任務馬上又會重新進入
      就緒狀態。
      ****************************************************/

      免費預約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲狠狠爱综合影院婷婷 | 亚洲欧洲国产1区二区 | 日韩欧美中文字幕在线三区 | 亚洲九九影院在线 | 亚洲精品中文字幕字幕 | 中文字幕手机在线看片不卡 |