新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于μC/OS-II設(shè)計整車控制器系統(tǒng)技術(shù)

        基于μC/OS-II設(shè)計整車控制器系統(tǒng)技術(shù)

        作者: 時間:2010-06-17 來源:網(wǎng)絡(luò) 收藏


        (2)OSCtxSw()

        當(dāng)從低優(yōu)先級的任務(wù)切換到較高優(yōu)先級的任務(wù)時,調(diào)用任務(wù)切換函數(shù)OSCtxSw()保存處理器的內(nèi)容和任務(wù)指針到當(dāng)前任務(wù)的任務(wù)堆棧,然后執(zhí)行用戶調(diào)用函數(shù)OSTaskSwHook(),最后從要執(zhí)行任務(wù)的任務(wù)堆棧里恢復(fù)寄存器和堆棧中的內(nèi)容,執(zhí)行中斷返回指令開始運行新的任務(wù)。

        (3)OSIntCtxSw()

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

        (4)OSTickISR()

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

        3.2.4OS_CPU_C.C

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

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

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

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

        4 軟件多任務(wù)

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



        4.1 定時器模塊

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


        4.2 CAN通信模塊

        CAN通信模塊功能是實現(xiàn)整車與其他節(jié)點間的信息傳輸。周期性傳輸,傳輸周期為20 ms,通信速率為250 kbps,中斷調(diào)用CAN通信服務(wù)程序。

        創(chuàng)建CAN通信模塊任務(wù)CAN_Trans,任務(wù)優(yōu)先級3:



        4.3 A/D模塊

        A/D模塊功能是完成讀取蓄電池電壓、加速踏板傳感器和節(jié)氣門位置傳感器信號,并進行模數(shù)轉(zhuǎn)換,被其他函數(shù)調(diào)用。

        創(chuàng)建A/D轉(zhuǎn)換模塊任務(wù)ADC_Cony,任務(wù)優(yōu)先級4:



        4.4 整車控制主程序模塊

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

        創(chuàng)建整車控制主程序任務(wù)Drive_Ctr,優(yōu)先級9:

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

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

        結(jié)語

        隨著汽車整車的不斷發(fā)展和法規(guī)日益嚴(yán)格的要求,汽車電子系統(tǒng)會變得越來越復(fù)雜,采用操作系統(tǒng)來實現(xiàn)對復(fù)雜任務(wù)的管理和協(xié)調(diào),將成為不可避免的趨勢。

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

        上一頁 1 2 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 班戈县| 衡南县| 西昌市| 沂水县| 大新县| 额尔古纳市| 和林格尔县| 凌云县| 襄樊市| 驻马店市| 韶山市| 多伦县| 西充县| 景德镇市| 南投县| 靖西县| 房产| 昌乐县| 昭觉县| 保德县| 武义县| 武功县| 新乐市| 富阳市| 德昌县| 隆昌县| 宣威市| 普定县| 华坪县| 合水县| 麻栗坡县| 临潭县| 敦煌市| 青神县| 浏阳市| 珲春市| 泊头市| 揭西县| 盘锦市| 深水埗区| 庄浪县|