新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于μC/OS-II設計整車控制器系統技術

        基于μC/OS-II設計整車控制器系統技術

        作者: 時間:2010-06-17 來源:網絡 收藏


        (2)OSCtxSw()

        當從低優先級的任務切換到較高優先級的任務時,調用任務切換函數OSCtxSw()保存處理器的內容和任務指針到當前任務的任務堆棧,然后執行用戶調用函數OSTaskSwHook(),最后從要執行任務的任務堆棧里恢復寄存器和堆棧中的內容,執行中斷返回指令開始運行新的任務。

        (3)OSIntCtxSw()

        當需要在中斷發生后切換到更高優先級的任務時,調用中斷級任務切換函數OSIntCtxSw(),然后執行用戶調用函數OSTaskSwHook()。因為該函數是在中斷程序中被調用,所以不需要保存中斷任務的寄存器;中斷子程序在調用函數OSInExit()時,將返回地址壓入堆棧,在這里不需要再返回,所以必須從堆棧中清理掉返回地址。

        (4)OSTickISR()

        OSTickISR()是μC/OS-II中的時鐘節拍中斷服務程序。在每個時鐘節拍調用該函數,給每個處于延時的任務延時減1,并檢查所有處于延時狀態的任務是否延時結束成為就緒任務。然后調用OSIntExit(),如果有優先級更高的任務就緒,OSIntExit()就會進行任務調度。OSIntExit()并不返回調用者,而是用新的任務堆棧中的內容來恢復CPU現場,由中斷返回執行新的任務。

        3.2.4OS_CPU_C.C

        用戶需要編寫6個C語言函數OSTaskStkInit()、OSTaskCreateHook()、OSTaskDelHook()、OSTaskSwHook()、OSTaskSatHook()、OSTimeTickHook()。其中,唯一必要的是OSTaskStkInit(),其他5個必須聲明,但可以不包含代碼。

        OSTaskStkInit()由任務創建函數OSTaskCreate()或OSTaskCreateExt()調用,在建立每個任務的時候初始化任務堆棧。開始運行這個任務就是模擬中斷返回,把初始化后堆棧中保存的值恢復到各個寄存器。初始化任務堆棧時,要傳遞任務代碼起始指針(Ptask)、參數指針(Pdata)、任務堆棧棧頂指針。任務堆棧初始化完成后,返回一個新的堆棧棧頂指針,OSTaskCreate()或OSTaskCreateExt()將它保存到OSTCB中。

        在OS_CPU_C.C文件中可以創建5個鉤子函數,使用的前提是配置文件中常量OS_CPU_HOOKS_EN使能。

        至此,μC/OS-II操作的移植基本完成。

        4 軟件多任務

        軟件以實時操作作為開發平臺,將應用程序分解成多任務,簡化了軟件的,保證了控制系統的實時性,提高了系統的穩定性與可靠性。整個系統的主程序流程如圖3所示。



        4.1 定時器模塊

        定時器的主要功能是為軟件程序提供基準時鐘。本應用選擇T5作為時鐘基準,在初始化函數void GPT_vInit()中完成模塊寄存器配置;中斷服務程序設置為OSTicklSR(),中斷向量為0x25。通過建立時鐘任務函數Timer_Int(),調用時鐘節拍函數OSTimeTick(),實現定時器與系統時鐘的連接。系統時鐘節拍編程為1 ms,可以減少中斷服務時間,提高實時性。


        4.2 CAN通信模塊

        CAN通信模塊功能是實現整車與其他節點間的信息傳輸。周期性傳輸,傳輸周期為20 ms,通信速率為250 kbps,中斷調用CAN通信服務程序。

        創建CAN通信模塊任務CAN_Trans,任務優先級3:



        4.3 A/D模塊

        A/D模塊功能是完成讀取蓄電池電壓、加速踏板傳感器和節氣門位置傳感器信號,并進行模數轉換,被其他函數調用。

        創建A/D轉換模塊任務ADC_Cony,任務優先級4:



        4.4 整車控制主程序模塊

        在混合動力汽車系統各模塊自檢成功后,整車控制器要求啟動電池,進入正常EV工作模式。然后通過判斷檔位,鑰匙開關和油門踏板等信息,進入不同的處理模塊。控制策略包括整車控制策略和能量流管理策略,實現扭矩算法的控制輸出。

        創建整車控制主程序任務Drive_Ctr,優先級9:

        OSTaskCreate(Drive_Ctr,(void*)Drive_Ctr[OS_TASK_STK],9)

        這里限于篇幅不再介紹其他模塊,大體過程相似。

        結語

        隨著汽車整車的不斷發展和法規日益嚴格的要求,汽車電子系統會變得越來越復雜,采用操作系統來實現對復雜任務的管理和協調,將成為不可避免的趨勢。

        本文通過混合動力整車控制器的軟硬件設計,詳細說明了μC/OS-II系統移植過程,優化了系統軟件設計,充分滿足了系統的需求。經實車試驗測試取得了很好的效果。

        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 集贤县| 安顺市| 台中市| 富源县| 尉犁县| 大英县| 大渡口区| 永嘉县| 柳江县| 文山县| 西昌市| 张家口市| 新安县| 海门市| 姜堰市| 淄博市| 上思县| 松江区| 邢台市| 石棉县| 登封市| 桃园县| 灌阳县| 扎赉特旗| 喀喇| 沁阳市| 吉木萨尔县| 谢通门县| 文登市| 北京市| 安福县| 达孜县| 长岭县| 湖南省| 太保市| 朔州市| 达拉特旗| 桂阳县| 云安县| 宜州市| 开江县|