專利名稱:用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明提供了一種任務(wù)調(diào)度的實(shí)現(xiàn)方法,尤其涉及了一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法。
背景技術(shù):
整車(chē)控制器作為新能源汽車(chē)的動(dòng)力、驅(qū)動(dòng)的管理與協(xié)調(diào)的核心,實(shí)現(xiàn)節(jié)能環(huán)保的關(guān)鍵所在;然而,整車(chē)控制器涉及的相關(guān)子系統(tǒng)即控制對(duì)象多而復(fù)雜,與各控制對(duì)象間的數(shù)據(jù)交換的及時(shí)性、可靠性的要求極高;為此,通常采用周期性定時(shí)任務(wù)或中斷進(jìn)行數(shù)據(jù)的采集、交換、分析及存儲(chǔ)等。可是,通常采用的周期性定時(shí)任務(wù)或中斷的調(diào)度是以時(shí)鐘周期為核心進(jìn)行的,如圖ι所示意;在某個(gè)時(shí)間點(diǎn)上,會(huì)觸發(fā)多個(gè)任務(wù)同時(shí)進(jìn)行,如在整車(chē)控制器的MCU中與多個(gè)控制對(duì)象進(jìn)行數(shù)據(jù)交換的任務(wù)會(huì)同時(shí)或相繼地發(fā)生;又因?yàn)檎?chē)控制器的MCU的運(yùn)算速度遠(yuǎn)快于用于數(shù)據(jù)交換的通信或采集速度,所以各控制對(duì)象幾乎會(huì)在同一時(shí)刻接收到整車(chē)控制器的要求而響應(yīng),造成諸如CAN通信無(wú)序競(jìng)爭(zhēng)及源端數(shù)據(jù)陣發(fā)性阻塞等諸多問(wèn)題,成為與各控制對(duì)象間的數(shù)據(jù)交換的不及時(shí)、不可靠的主要因素之一。
發(fā)明內(nèi)容
本發(fā)明主要是針對(duì)現(xiàn)有技術(shù)的不足,提供了一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法。為了實(shí)現(xiàn)上述目的,本發(fā)明提供以下技術(shù)方案
用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,包括基準(zhǔn)時(shí)鐘模塊、任務(wù)調(diào)度標(biāo)記模塊、任務(wù)執(zhí)行模塊和任務(wù)標(biāo)記清除模塊;所述基準(zhǔn)時(shí)鐘模塊是基準(zhǔn)時(shí)鐘的周期產(chǎn)生及計(jì)數(shù),并調(diào)用所述任務(wù)調(diào)度標(biāo)記模塊;所述任務(wù)調(diào)度標(biāo)記是利用分時(shí)任務(wù)的信息(數(shù)組)及基準(zhǔn)時(shí)鐘計(jì)數(shù)值,將各個(gè)分時(shí)任務(wù)在時(shí)間軸上以基準(zhǔn)時(shí)鐘周期的K倍(K>0,素?cái)?shù))進(jìn)行間隔,實(shí)現(xiàn)有序而均衡的散列,并做任務(wù)調(diào)度標(biāo)記;所述任務(wù)執(zhí)行模塊利用分時(shí)任務(wù)的信息及任務(wù)調(diào)度標(biāo)記,進(jìn)行多個(gè)任務(wù)的觸發(fā)及執(zhí)行,并調(diào)用所述任務(wù)標(biāo)記清除模塊;所述任務(wù)標(biāo)記清除模塊在任務(wù)執(zhí)行完成后,依據(jù)任務(wù)清除標(biāo)記,進(jìn)行調(diào)度標(biāo)記清除。作為本發(fā)明的一優(yōu)選實(shí)施例,所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘初始化過(guò)程,其具體步驟A為
Al.計(jì)算并設(shè)置基準(zhǔn)時(shí)鐘周期; Α2.設(shè)置基準(zhǔn)時(shí)鐘中斷向量及優(yōu)先級(jí); A3.允許基準(zhǔn)時(shí)鐘中斷; Α4.開(kāi)中斷/中斷允許。作為本發(fā)明的一優(yōu)選實(shí)施例,所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘中斷過(guò)程,其具體步驟B為
Bi.關(guān)中斷/中斷禁止;B2.基準(zhǔn)時(shí)鐘累加計(jì)數(shù); B3.執(zhí)行任務(wù)調(diào)度標(biāo)記模塊; B4.開(kāi)中斷/中斷允許。作為本發(fā)明的一優(yōu)選實(shí)施例,所述任務(wù)調(diào)度標(biāo)記模塊的具體步驟C為 Cl.輸入已經(jīng)計(jì)算得到的基準(zhǔn)時(shí)鐘計(jì)數(shù)值;
C2.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0 ;
C3.依據(jù)任務(wù)索引,從任務(wù)數(shù)組中獲取執(zhí)行任務(wù)的信息;
C4.根據(jù)任務(wù)ID計(jì)算出任務(wù)間隔;
C5.計(jì)算出算式(基準(zhǔn)時(shí)鐘計(jì)數(shù)值+任務(wù)間隔)%任務(wù)觸發(fā)周期的值,并進(jìn)行以下判斷 C51.如果根據(jù)算式得出的值不等于0,就直接執(zhí)行步驟C6和C7 ; C52.如果根據(jù)算式得出的值等于0,則判斷任務(wù)調(diào)度標(biāo)記是否溢出,如果溢出,就設(shè)置任務(wù)調(diào)度標(biāo)記為1,如果沒(méi)有溢出,任務(wù)調(diào)度標(biāo)記的值加1,然后執(zhí)行步驟C6和C7 ; C6.獲取任務(wù)索引自加1后的值;
C7.判斷任務(wù)索引值是否任務(wù)數(shù)最大值,如果大于任務(wù)數(shù)最大值,則結(jié)束整個(gè)過(guò)程,如果不大于,繼續(xù)執(zhí)行步驟C3。作為本發(fā)明的一優(yōu)選實(shí)施例,所述任務(wù)執(zhí)行模塊的具體步驟D為 Dl.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0 ;
D2.從任務(wù)數(shù)組中獲取當(dāng)前任務(wù);
D3.判斷當(dāng)前任務(wù)狀態(tài)是否為1,如果是1,就直接從步驟D8開(kāi)始執(zhí)行;如果不是1,就進(jìn)行步驟D4 ;
D4.判斷當(dāng)前任務(wù)標(biāo)記是否大于0,如果不大于0,就直接從步驟D8開(kāi)始執(zhí)行;如果大于0,就執(zhí)行步驟D5;
D5.設(shè)置當(dāng)前任務(wù)狀態(tài)為1,即運(yùn)行狀態(tài); D6.執(zhí)行當(dāng)前任務(wù);
D7.設(shè)置當(dāng)前任務(wù)狀態(tài)為0,并設(shè)置清除標(biāo)記; D8.獲取任務(wù)索引變量加1后的值;
D9.判斷任務(wù)索引變量的值是否大于任務(wù)數(shù)最大值,如果不大于,就重新從步驟D2開(kāi)始執(zhí)行;如果大于,就執(zhí)行步驟DlO ; D10.執(zhí)行任務(wù)標(biāo)記清除模塊;
Dll.判斷是否要退出系統(tǒng),如果要退出,就直接關(guān)閉流程;如果不要退出,就重新從步驟Dl開(kāi)始執(zhí)行。作為本發(fā)明的一優(yōu)選實(shí)施例,所述任務(wù)標(biāo)記清除模塊的具體步驟E為 El.輸入指定任務(wù)調(diào)度標(biāo)記清除要求;
E2.判斷指定任務(wù)調(diào)度標(biāo)記是否要清除,如果不要清除,就直接結(jié)束本模塊所有流程, 如果要清除,就執(zhí)行下一步E3;
E3.判斷指定任務(wù)調(diào)度標(biāo)記是否大于0,如果大于0,就獲取任務(wù)調(diào)度標(biāo)記減1后的值, 并結(jié)束本模塊流程;如果不大于0,就設(shè)置指定任務(wù)調(diào)度標(biāo)記值為0,并結(jié)束本模塊流程。本發(fā)明的基準(zhǔn)時(shí)鐘采用外部硬件中斷,即中斷源為外部晶振,有效地解決了在以往技術(shù)中因利用軟中斷時(shí)鐘而計(jì)時(shí)不精確的問(wèn)題;又因?yàn)槠涫且杂邢迶?shù)量的分時(shí)任務(wù)為基本出發(fā)點(diǎn),任務(wù)間以K倍的基準(zhǔn)時(shí)鐘周期進(jìn)行間隔,使得分時(shí)任務(wù)的在時(shí)間軸上均衡化,有效地避免了因任務(wù)集中而導(dǎo)致的諸如CAN通信的源端數(shù)據(jù)陣發(fā)性阻塞等問(wèn)題;而且本發(fā)明的任務(wù)調(diào)度標(biāo)記采用累加數(shù)值的方式進(jìn)行,有效地避免了在前后臺(tái)系統(tǒng)架構(gòu)中有時(shí)發(fā)生前后臺(tái)架構(gòu)中任務(wù)執(zhí)行遺漏的情況。圖1是以一種時(shí)鐘周期為核心的進(jìn)行分時(shí)任務(wù)調(diào)度的示意圖2是涉及本發(fā)明的以一種以基準(zhǔn)時(shí)鐘周期及分時(shí)任務(wù)為核心的進(jìn)行分時(shí)任務(wù)調(diào)度的示意圖3是本發(fā)明一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法一較佳實(shí)施例的結(jié)構(gòu)示意
圖4是本發(fā)明所述基準(zhǔn)時(shí)鐘模塊的流程圖; 圖5是本發(fā)明所述任務(wù)調(diào)度標(biāo)記模塊的流程圖; 圖6是本發(fā)明所述任務(wù)執(zhí)行模塊的流程圖; 圖7是本發(fā)明所述任務(wù)標(biāo)記清除模塊的流程圖。
具體實(shí)施例方式下面結(jié)合附圖對(duì)本發(fā)明的較佳實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。參閱圖2到圖7,圖2是涉及本發(fā)明的以基準(zhǔn)時(shí)鐘周期及分時(shí)任務(wù)為核心的調(diào)度方法;圖3是本發(fā)明一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法一較佳實(shí)施例的結(jié)構(gòu)示意圖;圖4是本發(fā)明所述基準(zhǔn)時(shí)鐘模塊的流程圖;圖5是本發(fā)明所述任務(wù)調(diào)度標(biāo)記模塊的流程圖;圖6是本發(fā)明所述任務(wù)執(zhí)行模塊的流程圖;圖7是本發(fā)明所述任務(wù)標(biāo)記清除模塊的流程圖。用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,即以基準(zhǔn)時(shí)鐘周期及分時(shí)任務(wù)為核心的調(diào)度方法,包括基準(zhǔn)時(shí)鐘模塊、任務(wù)調(diào)度標(biāo)記模塊、任務(wù)執(zhí)行模塊和任務(wù)標(biāo)記清除模塊;所述基準(zhǔn)時(shí)鐘模塊是基準(zhǔn)時(shí)鐘的周期產(chǎn)生及計(jì)數(shù),并調(diào)用所述任務(wù)調(diào)度標(biāo)記模塊;所述任務(wù)調(diào)度標(biāo)記是利用分時(shí)任務(wù)的信息(數(shù)組)及基準(zhǔn)時(shí)鐘計(jì)數(shù)值,將各個(gè)分時(shí)任務(wù)在時(shí)間軸上以基準(zhǔn)時(shí)鐘周期的K倍(K>0,素?cái)?shù))進(jìn)行間隔,實(shí)現(xiàn)有序而均衡的散列,并做任務(wù)調(diào)度標(biāo)記; 所述任務(wù)執(zhí)行模塊利用分時(shí)任務(wù)的信息及任務(wù)調(diào)度標(biāo)記,進(jìn)行多個(gè)任務(wù)的觸發(fā)及執(zhí)行,并調(diào)用所述任務(wù)標(biāo)記清除模塊;所述任務(wù)標(biāo)記清除模塊在任務(wù)執(zhí)行完成后,依據(jù)任務(wù)清除標(biāo)記,進(jìn)行調(diào)度標(biāo)記清除。所述一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其分時(shí)任務(wù)的數(shù)據(jù)結(jié)構(gòu)代碼即相關(guān)說(shuō)明如下所示
unsigned long ITaskID; unsigned short uTaskStatus; unsigned short uTriggerPeriod
//分時(shí)任務(wù)ID
//分時(shí)任務(wù)狀態(tài),0x01 -運(yùn)行中 //分時(shí)任務(wù)觸發(fā)周期//基準(zhǔn)時(shí)鐘的T倍(T>0,自然數(shù)) unsigned short uScheduleSet 15; //分時(shí)任務(wù)調(diào)度標(biāo)記 unsigned short uScheduleClr 1 ; //分時(shí)任務(wù)調(diào)度清除 void (* pTaskFun) (void) ;//分時(shí)任務(wù)執(zhí)行入口
}TASKINF0, * PTASKINF0;
所述分時(shí)任務(wù)數(shù)組的數(shù)據(jù)結(jié)構(gòu)代碼即相關(guān)說(shuō)明如下所示 TASKINFO g_sTasks[256] = {0} ; //分時(shí)任務(wù)數(shù)可設(shè)為 256 個(gè)所述基準(zhǔn)時(shí)鐘模塊是基準(zhǔn)時(shí)鐘中斷模塊,以基準(zhǔn)時(shí)鐘的周期進(jìn)行任務(wù)觸發(fā)周期的計(jì)數(shù)及調(diào)用任務(wù)調(diào)度標(biāo)記模塊,基準(zhǔn)時(shí)鐘使用外部硬件中斷,即中斷源為外部晶振,中斷優(yōu)先級(jí)高于軟中斷優(yōu)先級(jí),中斷優(yōu)先級(jí)高于各類軟件任務(wù)執(zhí)行模塊,這樣可以確?;鶞?zhǔn)時(shí)鐘計(jì)數(shù)周期的準(zhǔn)確性,避免了采用軟中斷時(shí)鐘因受運(yùn)行狀態(tài)的影響而造成的計(jì)數(shù)周期的波動(dòng),所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘初始化過(guò)程,其具體步驟A為 Al.計(jì)算并設(shè)置基準(zhǔn)時(shí)鐘周期; A2.設(shè)置基準(zhǔn)時(shí)鐘中斷向量及優(yōu)先級(jí); A3.允許基準(zhǔn)時(shí)鐘中斷; A4.開(kāi)中斷/中斷允許。所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘中斷過(guò)程,其具體步驟B為 Bi.關(guān)中斷/中斷禁止;
B2.基準(zhǔn)時(shí)鐘累加計(jì)數(shù); B3.執(zhí)行任務(wù)調(diào)度標(biāo)記模塊; B4.開(kāi)中斷/中斷允許。所述任務(wù)調(diào)度標(biāo)記模塊是以有限數(shù)量(如,256個(gè)任務(wù),以滿足系統(tǒng)最大任務(wù)數(shù)而定)的分時(shí)任務(wù)為考慮出發(fā)點(diǎn),結(jié)合當(dāng)前的基準(zhǔn)任務(wù)計(jì)數(shù)值,以基準(zhǔn)時(shí)鐘周期的K倍(K>0, 素?cái)?shù),遞增;如2,3,5,7,……)進(jìn)行間隔,將各個(gè)分時(shí)任務(wù)有序地在時(shí)間軸上進(jìn)行的均衡散列并進(jìn)行調(diào)度標(biāo)記;任務(wù)調(diào)度的標(biāo)記是以計(jì)數(shù)遞增的方式進(jìn)行的,這樣可以有效地避免前后臺(tái)架構(gòu)中任務(wù)執(zhí)行遺漏的情況,所述任務(wù)調(diào)度標(biāo)記模塊具體步驟C為C1.輸入已經(jīng)計(jì)算得到的基準(zhǔn)時(shí)鐘計(jì)數(shù)值;C2.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0;C3.依據(jù)任務(wù)索引,從任務(wù)數(shù)組中獲取執(zhí)行任務(wù)的信息;C4.根據(jù)任務(wù)ID計(jì)算出任務(wù)間隔;C5.計(jì)算出算式(基準(zhǔn)時(shí)鐘計(jì)數(shù)值+任務(wù)間隔)%任務(wù)觸發(fā)周期的值,并進(jìn)行以下判斷C51.如果根據(jù)算式得出的值不等于0,就直接執(zhí)行步驟C6和C7 ;C52.如果根據(jù)算式得出的值等于0,則判斷任務(wù)調(diào)度標(biāo)記是否溢出,如果溢出,就設(shè)置任務(wù)調(diào)度標(biāo)記為1,如果沒(méi)有溢出,任務(wù)調(diào)度標(biāo)記的值加1,然后執(zhí)行步驟C6和C7 ;C6.獲取任務(wù)索引自加1后的值;C7.判斷任務(wù)索引值是否任務(wù)數(shù)最大值,如果大于任務(wù)數(shù)最大值,則結(jié)束整個(gè)過(guò)程,如果不大于,繼續(xù)執(zhí)行步驟C3。所述任務(wù)執(zhí)行模塊是按照任務(wù)ID及任務(wù)調(diào)度標(biāo)記進(jìn)行有序執(zhí)行各類任務(wù)的模塊,其在后臺(tái)運(yùn)行即通常作為系統(tǒng)模塊中的一部分或子模塊,所述任務(wù)執(zhí)行模塊具體步驟D 為D1.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0 ;D2.從任務(wù)數(shù)組中獲取當(dāng)前任務(wù);D3.判斷當(dāng)前任務(wù)狀態(tài)是否為1,如果是1,就直接從步驟D8開(kāi)始執(zhí)行;如果不是1,就進(jìn)行步驟D4 ;D4.判斷當(dāng)前任務(wù)標(biāo)記是否大于0,如果不大于0,就直接從步驟D8開(kāi)始執(zhí)行;如果大于0,就執(zhí)行步驟D5 ;D5.設(shè)置當(dāng)前任務(wù)狀態(tài)為1,即運(yùn)行狀態(tài);D6.執(zhí)行當(dāng)前任務(wù);D7.設(shè)置當(dāng)前任務(wù)狀態(tài)為0,并設(shè)置清除標(biāo)記;D8.獲取任務(wù)索引變量加1后的值;D9.判斷任務(wù)索引變量的值是否大于任務(wù)數(shù)最大值,如果不大于,就重新從步驟D2開(kāi)始執(zhí)行;如果大于,就執(zhí)行步驟DlO ; D10.執(zhí)行任務(wù)標(biāo)記清除模塊;Dll.判斷是否要退出系統(tǒng),如果要退出,就直接關(guān)閉流程;如果不要退出,就重新從步驟Dl開(kāi)始執(zhí)行。所述任務(wù)標(biāo)記清除模塊是由任務(wù)執(zhí)行模塊進(jìn)行調(diào)用,目的是在當(dāng)前任務(wù)執(zhí)行之后,進(jìn)行任務(wù)調(diào)度標(biāo)記的清除,其具體步驟E為El.輸入指定任務(wù)調(diào)度標(biāo)記清除要求; E2.判斷指定任務(wù)調(diào)度標(biāo)記是否要清除,如果不要清除,就直接結(jié)束本模塊所有流程,如果要清除,就執(zhí)行下一步E3 ; E3.判斷指定任務(wù)調(diào)度標(biāo)記是否大于0,如果大于0,就獲取任務(wù)調(diào)度標(biāo)記減1后的值,并結(jié)束本模塊流程;如果不大于0,就設(shè)置指定任務(wù)調(diào)度標(biāo)記值為0, 并結(jié)束本模塊流程。本發(fā)明的基準(zhǔn)時(shí)鐘采用外部硬件中斷,即中斷源為外部晶振,有效地解決了在以往技術(shù)中因利用軟中斷時(shí)鐘而計(jì)時(shí)不精確的問(wèn)題;又因?yàn)槠涫且杂邢迶?shù)量的分時(shí)任務(wù)為基本出發(fā)點(diǎn),任務(wù)間以K倍的基準(zhǔn)時(shí)鐘周期進(jìn)行間隔,使得分時(shí)任務(wù)的在時(shí)間軸上均衡化,有效地避免了因任務(wù)集中而導(dǎo)致的諸如CAN通信的源端數(shù)據(jù)陣發(fā)性阻塞等問(wèn)題;而且本發(fā)明的任務(wù)調(diào)度標(biāo)記采用累加數(shù)值的方式進(jìn)行,有效地避免了在前后臺(tái)系統(tǒng)架構(gòu)中有時(shí)發(fā)生前后臺(tái)架構(gòu)中任務(wù)執(zhí)行遺漏的情況。以上所述,僅為本發(fā)明優(yōu)選實(shí)施例的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本領(lǐng)域的技術(shù)人員在本發(fā)明所揭露的技術(shù)范圍內(nèi),可不經(jīng)過(guò)創(chuàng)造性勞動(dòng)想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于包括基準(zhǔn)時(shí)鐘模塊、任務(wù)調(diào)度標(biāo)記模塊、任務(wù)執(zhí)行模塊和任務(wù)標(biāo)記清除模塊;所述基準(zhǔn)時(shí)鐘模塊是基準(zhǔn)時(shí)鐘的周期產(chǎn)生及計(jì)數(shù),并調(diào)用所述任務(wù)調(diào)度標(biāo)記模塊;所述任務(wù)調(diào)度標(biāo)記是利用分時(shí)任務(wù)的信息或數(shù)組,以及基準(zhǔn)時(shí)鐘計(jì)數(shù)值,將各個(gè)分時(shí)任務(wù)在時(shí)間軸上以基準(zhǔn)時(shí)鐘周期的K倍進(jìn)行間隔,K為大于0的素?cái)?shù),實(shí)現(xiàn)有序而均衡的散列,并做任務(wù)調(diào)度標(biāo)記;所述任務(wù)執(zhí)行模塊利用分時(shí)任務(wù)的信息及任務(wù)調(diào)度標(biāo)記,進(jìn)行多個(gè)任務(wù)的觸發(fā)及執(zhí)行,并調(diào)用所述任務(wù)標(biāo)記清除模塊;所述任務(wù)標(biāo)記清除模塊在任務(wù)執(zhí)行完成后,依據(jù)任務(wù)清除標(biāo)記,進(jìn)行調(diào)度標(biāo)記清除。
2.根據(jù)權(quán)利要求1所述的用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘初始化過(guò)程,其具體步驟A為Al.計(jì)算并設(shè)置基準(zhǔn)時(shí)鐘周期; A2.設(shè)置基準(zhǔn)時(shí)鐘中斷向量及優(yōu)先級(jí); A3.允許基準(zhǔn)時(shí)鐘中斷; A4.開(kāi)中斷/中斷允許。
3.根據(jù)權(quán)利要求1所述的用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于所述基準(zhǔn)時(shí)鐘模塊包括了基準(zhǔn)時(shí)鐘中斷過(guò)程,其具體步驟B為Bi.關(guān)中斷/中斷禁止; B2.基準(zhǔn)時(shí)鐘累加計(jì)數(shù); B3.執(zhí)行任務(wù)調(diào)度標(biāo)記模塊; B4.開(kāi)中斷/中斷允許。
4.根據(jù)權(quán)利要求1所述的用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于所述基準(zhǔn)時(shí)鐘使用外部硬件中斷,即中斷源為外部晶振,中斷優(yōu)先級(jí)高于軟中斷優(yōu)先級(jí)。
5.根據(jù)權(quán)利要求1所述的用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于所述任務(wù)調(diào)度標(biāo)記模塊的具體步驟C為Cl.輸入已經(jīng)計(jì)算得到的基準(zhǔn)時(shí)鐘計(jì)數(shù)值;C2.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0 ;C3.依據(jù)任務(wù)索引,從任務(wù)數(shù)組中獲取執(zhí)行任務(wù)的信息;C4.根據(jù)任務(wù)ID計(jì)算出任務(wù)間隔;C5.計(jì)算出算式(基準(zhǔn)時(shí)鐘計(jì)數(shù)值+任務(wù)間隔)%任務(wù)觸發(fā)周期的值,并進(jìn)行以下判斷 C51.如果根據(jù)算式得出的值不等于0,就直接執(zhí)行步驟C6和C7 ; C52.如果根據(jù)算式得出的值等于0,則判斷任務(wù)調(diào)度標(biāo)記是否溢出,如果溢出,就設(shè)置任務(wù)調(diào)度標(biāo)記為1,如果沒(méi)有溢出,任務(wù)調(diào)度標(biāo)記的值加1,然后執(zhí)行步驟C6和C7 ; C6.獲取任務(wù)索引自加1后的值;C7.判斷任務(wù)索引值是否任務(wù)數(shù)最大值,如果大于任務(wù)數(shù)最大值,則結(jié)束整個(gè)過(guò)程,如果不大于,繼續(xù)執(zhí)行步驟C3。
6.根據(jù)權(quán)利要求1所述的一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于 所述任務(wù)執(zhí)行模塊的具體步驟D為Dl.創(chuàng)建任務(wù)索引變量并設(shè)其初始為0 ; D2.從任務(wù)數(shù)組中獲取當(dāng)前任務(wù);D3.判斷當(dāng)前任務(wù)狀態(tài)是否為1,如果是1,就直接從步驟D8開(kāi)始執(zhí)行;如果不是D1,就進(jìn)行步驟4 ;D4.判斷當(dāng)前任務(wù)標(biāo)記是否大于0,如果不大于0,就直接從步驟D8開(kāi)始執(zhí)行;如果大于0,就執(zhí)行步驟D5;D5.設(shè)置當(dāng)前任務(wù)狀態(tài)為1,即運(yùn)行狀態(tài);D6.執(zhí)行當(dāng)前任務(wù);D7.設(shè)置當(dāng)前任務(wù)狀態(tài)為0,并設(shè)置清除標(biāo)記;D8.獲取任務(wù)索引變量加1后的值;D9.判斷任務(wù)索引變量的值是否大于任務(wù)數(shù)最大值,如果不大于,就重新從步驟D2開(kāi)始執(zhí)行;如果大于,就執(zhí)行步驟DlO ;D10.執(zhí)行任務(wù)標(biāo)記清除模塊;Dll.判斷是否要退出系統(tǒng),如果要退出,就直接關(guān)閉流程;如果不要退出,就重新從步驟Dl開(kāi)始執(zhí)行。
7.根據(jù)權(quán)利要求1所述的用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其特征在于所述任務(wù)標(biāo)記清除模塊的具體步驟E為El.輸入指定任務(wù)調(diào)度標(biāo)記清除要求;E2.判斷指定任務(wù)調(diào)度標(biāo)記是否要清除,如果不要清除,就直接結(jié)束本模塊所有流程, 如果要清除,就執(zhí)行下一步E3;E3.判斷指定任務(wù)調(diào)度標(biāo)記是否大于0,如果大于0,就獲取任務(wù)調(diào)度標(biāo)記減1后的值, 并結(jié)束本模塊流程;如果不大于0,就設(shè)置指定任務(wù)調(diào)度標(biāo)記值為0,并結(jié)束本模塊流程。
全文摘要
本發(fā)明提供了一種用于整車(chē)控制器的分時(shí)任務(wù)的實(shí)現(xiàn)方法,其包括基準(zhǔn)時(shí)鐘模塊、任務(wù)調(diào)度標(biāo)記模塊、任務(wù)執(zhí)行模塊和任務(wù)標(biāo)記清除模塊;所述基準(zhǔn)時(shí)鐘模塊是基準(zhǔn)時(shí)鐘周期的產(chǎn)生及計(jì)數(shù),并調(diào)用所述任務(wù)調(diào)度標(biāo)記模塊;所述任務(wù)調(diào)度標(biāo)記是利用分時(shí)任務(wù)的信息及基準(zhǔn)時(shí)鐘計(jì)數(shù)值及特定算法,將各個(gè)任務(wù)在時(shí)間軸上進(jìn)行有序而均衡的散列,并進(jìn)行任務(wù)調(diào)度標(biāo)記;所述任務(wù)執(zhí)行模塊利用任務(wù)調(diào)度標(biāo)記,進(jìn)行多個(gè)任務(wù)的觸發(fā)及執(zhí)行,并調(diào)用所述任務(wù)標(biāo)記清除模塊;所述任務(wù)標(biāo)記清除模塊在任務(wù)執(zhí)行完成后,依據(jù)任務(wù)清除標(biāo)記,進(jìn)行調(diào)度標(biāo)記清除;本發(fā)明有效地解決了軟中斷時(shí)鐘計(jì)時(shí)不精確、源端數(shù)據(jù)陣發(fā)性阻塞和前后臺(tái)架構(gòu)中任務(wù)執(zhí)行遺漏等問(wèn)題。
文檔編號(hào)B60R16/023GK102371955SQ201110330730
公開(kāi)日2012年3月14日 申請(qǐng)日期2011年10月27日 優(yōu)先權(quán)日2011年10月27日
發(fā)明者吳新兵 申請(qǐng)人:蘇州海格新能源汽車(chē)電控系統(tǒng)科技有限公司