色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

          作者: 時(shí)間:2012-03-13 來源:網(wǎng)絡(luò) 收藏

          (2)OSCtxSw()

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

          (3)OSIntCtxSw()

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

          (4)OSTickISR()

          OSTickISR()是μC/OS-II中的時(shí)鐘節(jié)拍中斷服務(wù)程序。在每個時(shí)鐘節(jié)拍調(diào)用該函數(shù),給每個處于延時(shí)的任務(wù)延時(shí)減1,并檢查所有處于延時(shí)狀態(tài)的任務(wù)是否延時(shí)結(jié)束成為就緒任務(wù)。然后調(diào)用OSIntExit(),如果有優(yōu)先級更高的任務(wù)就緒,OSIntExit()就會進(jìn)行任務(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ù)的時(shí)候初始化任務(wù)堆棧。開始運(yùn)行這個任務(wù)就是模擬中斷返回,把初始化后堆棧中保存的值恢復(fù)到各個寄存器。初始化任務(wù)堆棧時(shí),要傳遞任務(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ù)

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



          4.1 定時(shí)器模塊

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


          4.2 CAN通信模塊

          CAN通信模塊功能是實(shí)現(xiàn)整車與其他節(jié)點(diǎn)間的信息傳輸。周期性傳輸,傳輸周期為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é)氣門位置傳感器信號,并進(jìn)行模數(shù)轉(zhuǎn)換,被其他函數(shù)調(diào)用。

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



          4.4 整車控制主程序模塊

          在混合動力汽車系統(tǒng)各模塊自檢成功后,整車控制器要求啟動電池,進(jìn)入正常EV工作模式。然后通過判斷檔位,鑰匙開關(guān)和油門踏板等信息,進(jìn)入不同的處理模塊??刂撇呗园ㄕ嚳刂撇呗院湍芰苛鞴芾聿呗裕瑢?shí)現(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)來實(shí)現(xiàn)對復(fù)雜任務(wù)的管理和協(xié)調(diào),將成為不可避免的趨勢。

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

          本文引用地址:http://cafeforensic.com/article/149436.htm
          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

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

          關(guān)閉