国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)的任務(wù)分配方法及其裝置與流程

      文檔序號(hào):11216049閱讀:1392來源:國知局
      汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)的任務(wù)分配方法及其裝置與流程

      本發(fā)明涉及一種汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)(autosaroperatingsystem)的分配任務(wù)的方法及其裝置。更詳細(xì)地,涉及一種參照計(jì)數(shù)器(counter)來發(fā)生報(bào)警器,同時(shí)調(diào)節(jié)報(bào)警器的偏移(offset)來分配任務(wù)(task)的方法及執(zhí)行其方法的裝置。



      背景技術(shù):

      現(xiàn)有的汽車是機(jī)械裝置的集合,但最近的汽車稱為各種電子裝置的集合也并非言過其實(shí)。隨著自動(dòng)平衡控制、自助泊車等智能型服務(wù)變得普遍,使得更多的電子裝置互相連接且聯(lián)動(dòng)而內(nèi)置于汽車上?,F(xiàn)在已不是發(fā)動(dòng)汽車的時(shí)代,而是啟動(dòng)(booting)汽車的時(shí)代。

      隨著在汽車中使用的電子裝置變得越多,對(duì)汽車中使用的軟件的標(biāo)準(zhǔn)化要求也變得越高。因此,為了能提高模塊的再利用性、且提高各車輛的部件的兼容性,正在開發(fā)基于汽車開放系統(tǒng)架構(gòu)(autosar)的嵌入式軟件開放平臺(tái)(embeddedsoftwareopenplatform)。

      所謂汽車開放系統(tǒng)架構(gòu)(autosar;automotiveopensystemarchitecture),是開放型汽車標(biāo)準(zhǔn)軟件結(jié)構(gòu)。汽車開放系統(tǒng)架構(gòu)是為了對(duì)使用在汽車上的電子裝置進(jìn)行標(biāo)準(zhǔn)化,而以整車制造商、部件供應(yīng)公司及it技術(shù)企業(yè)等作為骨干而設(shè)立的團(tuán)體,也是標(biāo)準(zhǔn)規(guī)格的名稱。有關(guān)的更詳細(xì)的內(nèi)容可在汽車開放系統(tǒng)架構(gòu)的官方網(wǎng)站(http://www.autosar.org/)上確認(rèn)。

      汽車開放系統(tǒng)架構(gòu)會(huì)引起汽車產(chǎn)業(yè)的一大變革,而在其背景有引領(lǐng)基于模型的開發(fā)的omg、以及推進(jìn)歐洲汽車行業(yè)的電子裝置用嵌入式系統(tǒng)標(biāo)準(zhǔn)化的osek/vdx。osek標(biāo)準(zhǔn)的組成要素有操作系統(tǒng)規(guī)范(osekoperatingsystem,osekos)、通信規(guī)范(osekcommunication,osekcom)、osek網(wǎng)絡(luò)管理規(guī)范(oseknetmanagement,oseknm)、osek實(shí)現(xiàn)語言(osekimplementationlanguage,oil)、osek運(yùn)行時(shí)接口(osekruntimeinterface,osekrti)、綁定文檔(bindingdocument)、osek時(shí)間(osektime)、osek容錯(cuò)通信(osekfault-tolerantcommunication,osekftcom)等。

      其中,osekos是支持搶占式多任務(wù)(multi-tasking)的基本的操作系統(tǒng),其提供應(yīng)用程序標(biāo)準(zhǔn)化的接口。通過標(biāo)準(zhǔn)化的接口能夠做到在硬件(hardware)上開發(fā)獨(dú)立的應(yīng)用,且可以提高擴(kuò)展性和穩(wěn)定性。并且,通過調(diào)度,能夠在一個(gè)的電子控制單元(electroniccontrolunit,ecu)分配執(zhí)行多個(gè)作業(yè),能極大化硬件資源的活用。

      汽車開放系統(tǒng)架構(gòu)中提供的操作系統(tǒng)提供了能夠基于周期性的調(diào)度來執(zhí)行軟件的osalarm及相關(guān)ostask?;旧?,對(duì)于汽車開放系統(tǒng)架構(gòu)提供的ostask的報(bào)警器初始化時(shí)間點(diǎn)可區(qū)分為對(duì)于基礎(chǔ)軟件(basicsoftware,bsw)模塊的初始化時(shí)間點(diǎn)及對(duì)于應(yīng)用軟件(applicationsoftware,asw)模塊的初始化時(shí)間點(diǎn)。

      但由于bsw模塊和asw模塊的初始化時(shí)間點(diǎn)不同,因此存在導(dǎo)致無法高效地分配資源的問題。即在不同的時(shí)刻(timing)會(huì)初始化(init)及開始(start)osalarm,因此有以下難點(diǎn):1)很難預(yù)測任務(wù)的正確執(zhí)行時(shí)間點(diǎn);2)很難高效地分配任務(wù)。因此,需要能夠高效執(zhí)行資源分配的任務(wù)管理方法。



      技術(shù)實(shí)現(xiàn)要素:

      本發(fā)明要解決的技術(shù)問題

      本發(fā)明要解決的技術(shù)問題是提供一種汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)的任務(wù)分配方法及其裝置。

      本發(fā)明的技術(shù)問題不限制于上述提到的技術(shù)問題,并且本領(lǐng)域技術(shù)人員可通過以下的記載理解尚未提到的其他技術(shù)問題。

      技術(shù)方案

      根據(jù)為了解決上述技術(shù)問題的本發(fā)明一方面的汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)的任務(wù)分配方法,其可以包括:將設(shè)定用于bsw模塊的報(bào)警器的函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至counter_bsw的步驟;將設(shè)定用于asw模塊的報(bào)警器的函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至counter_rte的步驟;以及利用上述counter_bsw的值和上述counter_rte的值,修改用于asw模塊的報(bào)警器的偏移值的步驟。

      在一執(zhí)行例中,設(shè)定用于上述bsw模塊的報(bào)警器的函數(shù)為schm_init函數(shù),設(shè)定用于上述asw模塊的報(bào)警器的函數(shù)為rte_start函數(shù),且上述schm_init函數(shù)比rte_start函數(shù)先被執(zhí)行。

      在另一個(gè)執(zhí)行例中,修改上述偏移值的步驟,包括:比較counter_rte的值和(counter_bsw+offset)值的步驟;以及在counter_rte的值比(counter_bsw+offset)值大的情況下,根據(jù)以下公式設(shè)定新的offset的步驟。newoffset=(cycle-((counter_rte-(counter_bsw+offset))%cycle))(只是,cycle=計(jì)數(shù)器的周期)。

      在又一個(gè)執(zhí)行例中,修改上述偏移值的步驟,包括:比較counter_rte的值和(counter_bsw+offset)值的步驟;以及在counter_rte的值比(counter_bsw+offset)值小的情況下,根據(jù)以下公式設(shè)定新的offset的步驟。newoffset=(cycle-(((counter_bsw+offset)-counter_rte)%cycle))(只是,cycle=計(jì)數(shù)器的周期)。

      根據(jù)為了解決上述技術(shù)問題的本發(fā)明另一方面的汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)的任務(wù)分配裝置,其可以包括:counter_bsw儲(chǔ)存部,其將設(shè)定用于bsw模塊的報(bào)警器的函數(shù)被調(diào)用時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至counter_bsw;counter_rte儲(chǔ)存部,其將設(shè)定用于asw模塊的報(bào)警器的函數(shù)被調(diào)用時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至counter_rte;以及offset修改部,其在用上述counter_bsw的值和上述counter_rte的值,修改用于asw模塊的報(bào)警器的偏移值。

      根據(jù)為了解決上述技術(shù)問題的本發(fā)明又一方面的報(bào)警器偏移值的修改方法,其可以包括:對(duì)設(shè)定相對(duì)(relative)方式的第1報(bào)警器的函數(shù)被調(diào)用時(shí)間點(diǎn)的第1計(jì)數(shù)器值進(jìn)行存儲(chǔ)的步驟;對(duì)設(shè)定相對(duì)(relative)的第2報(bào)警器的函數(shù)被調(diào)用時(shí)間點(diǎn)的第2計(jì)數(shù)器值進(jìn)行存儲(chǔ)的步驟;以及利用上述第1計(jì)數(shù)器的值和上述第2計(jì)數(shù)器的值,修改上述第2報(bào)警器的偏移值的步驟。

      在一執(zhí)行例中,修改上述第2報(bào)警器的偏移值的步驟,包括:比較第2計(jì)數(shù)器的值和(第1計(jì)數(shù)器的值+偏移值)的步驟;以及在第2計(jì)數(shù)器的值比(第1計(jì)數(shù)器的值+偏移值)大的情況下,根據(jù)以下公式設(shè)定新的偏移值的步驟。新的偏移值=(計(jì)數(shù)器的周期-((第2計(jì)數(shù)器的值-(第1計(jì)數(shù)器的值+偏移值))%計(jì)數(shù)器的周期))。

      在另一個(gè)執(zhí)行例中,修改上述第2報(bào)警器的偏移值的步驟,包括:比較第2計(jì)數(shù)器的值和(第1計(jì)數(shù)器的值+偏移值)的步驟;以及在第2計(jì)數(shù)器的值比(第1計(jì)數(shù)器的值+偏移值)小的情況下,根據(jù)以下公式設(shè)定新的偏移值的步驟。新的偏移值=(計(jì)數(shù)器的周期-(((第1計(jì)數(shù)器的值+偏移值)-第2計(jì)數(shù)器的值)%計(jì)數(shù)器的周期))。

      有益效果

      根據(jù)如上所述的本發(fā)明,在聯(lián)動(dòng)于一個(gè)計(jì)數(shù)器(counter)、且在不同的時(shí)刻分別初始化(init)及開始(start)osalarm的汽車開放系統(tǒng)架構(gòu)軟件的操作結(jié)構(gòu)中,也能夠高效地分配資源。并且,能準(zhǔn)確地預(yù)測任務(wù)的開始。

      本發(fā)明的效果不限制于上述提到的效果,并且本領(lǐng)域技術(shù)人員可通過以下的記載明確理解尚未提到的其他效果。

      附圖說明

      圖1為用于說明一執(zhí)行例中使用的汽車開放系統(tǒng)架構(gòu)的結(jié)構(gòu)圖。

      圖2至圖3為用于說明本發(fā)明的一執(zhí)行例中使用的絕對(duì)(absolute)方式和相對(duì)(relative)方式的示意圖。

      圖4a至圖4b為用于說明本發(fā)明的一執(zhí)行例中使用的關(guān)于任務(wù)分散的示意圖。

      圖5至圖6為用于說明根據(jù)現(xiàn)有的absolute方式和relative方式的任務(wù)分配的問題的示意圖。

      圖7a至圖7b為用于說明根據(jù)現(xiàn)有的absolute方式和relative方式的任務(wù)分配的問題的表格。

      圖8為根據(jù)本發(fā)明一執(zhí)行例的自適應(yīng)相對(duì)(adaptiverelative)方式的任務(wù)管理方法的流程圖。

      圖9為用于說明根據(jù)本發(fā)明一執(zhí)行例的adaptiverelative方式的任務(wù)管理方法的表格。

      具體實(shí)施方式

      以下,參考附圖來詳細(xì)說明本發(fā)明的優(yōu)選執(zhí)行例。對(duì)于本發(fā)明的優(yōu)點(diǎn)及特征、以及實(shí)現(xiàn)上述優(yōu)點(diǎn)和特征的方法,一同參照附圖和詳細(xì)的下述執(zhí)行例會(huì)變得明確。但是,本發(fā)明不限制于以下記載的執(zhí)行例,而是可以體現(xiàn)為互不相同的多樣的形態(tài),只不過,本執(zhí)行例是為了使本發(fā)明的記載能夠變得完整且將發(fā)明的范疇完整地告知本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員而提供的,并且本發(fā)明僅根據(jù)技術(shù)內(nèi)容的范疇來定義。說明書全文中同一附圖標(biāo)記指代相同的結(jié)構(gòu)要求。

      如果沒有其他定義,本說明書使用的所有術(shù)語(包括技術(shù)及科學(xué)術(shù)語)能夠以本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員可共同理解的意思來使用。并且,除非明確地進(jìn)行了特殊定義,在通常使用的詞典中定義的術(shù)語不應(yīng)被理想地或者過度地解釋。本說明書使用的術(shù)語是用于說明執(zhí)行例而非用于限制本發(fā)明。在本說明書中,只要不特別提及,單數(shù)形也包括復(fù)數(shù)形。

      說明書所使用的“包括(comprises)”及/或者“包括的(comprising)”表示所提及的結(jié)構(gòu)要求、步驟、動(dòng)作及/或者元件不會(huì)排除存在或添加一個(gè)以上的其他結(jié)構(gòu)要求、步驟、動(dòng)作及/或者元件。

      以下,根據(jù)附圖來更加詳細(xì)地說明本發(fā)明。

      圖1為用于說明一執(zhí)行例中使用的汽車開放系統(tǒng)架構(gòu)的結(jié)構(gòu)圖。

      參考圖1,汽車開放系統(tǒng)架構(gòu)的軟件大體由軟件組件(softwarecomponent,swc)、運(yùn)行時(shí)環(huán)境(runtimeenvironment,rte)、基礎(chǔ)軟件(basicsoftware,bsw)的3個(gè)階層構(gòu)成。汽車開放系統(tǒng)架構(gòu)標(biāo)準(zhǔn)平臺(tái)基本通過基于組件的軟件開發(fā)(cbd:component-basedsoftwaredevelopment)使得許多部件具有輸入/輸出端口并互相進(jìn)行假想的通信。

      swc位于最上位,執(zhí)行發(fā)動(dòng)機(jī)、自動(dòng)變速器、剎車控制功能,且配置于被稱為虛擬功能總線(virtualfunctionalbus,vfb)的假想網(wǎng)絡(luò)而聯(lián)動(dòng)于ecu。rte位于swc和bsw之間,提供用于swc和bsw之間的數(shù)據(jù)交換的接口。rte用于提供swc不從屬于硬件的獨(dú)立性,執(zhí)行模塊之間的通信連接。bsw位于最底層,其提供如操作系統(tǒng)(operatingsystem,os)、設(shè)備驅(qū)動(dòng)程序、通信(communication)之類的swc執(zhí)行所需的作業(yè)的服務(wù)。

      基本上,汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)是通過osalarm來執(zhí)行ostask。并且,osalarm分別具有用于bsw模塊和applicationsw模塊(以下稱為asw模塊)的初始化時(shí)間點(diǎn)。即bsw模塊在bsw階層是通過schm_init()函數(shù)執(zhí)行初始化,且asw模塊在rte階層是通過rte_start()函數(shù)執(zhí)行初始化。

      盡管,bsw模塊和asw模塊的初始化及開始時(shí)間點(diǎn)不同,現(xiàn)有技術(shù)中為了osalarm,使用了絕對(duì)(absolute)方式或者相對(duì)(relative)方式。關(guān)于在absolute方式或者relative方式中,由于不同時(shí)刻而引起的問題,將在圖7a至圖7b中進(jìn)行更仔細(xì)的研究。在此之前,通過圖2至圖3的示例仔細(xì)研究absolute方式和relative方式。

      圖2至圖3為用于說明本發(fā)明的一執(zhí)行例中使用的absolute方式和relative方式的示意圖。圖2為關(guān)于absolute方式的示意圖,圖3為關(guān)于relative方式的示意圖。

      在查看圖2和圖3之前,先來查看圖2和圖3中使用的坐標(biāo)平面。圖2的橫軸以時(shí)間(time)表示操作系統(tǒng)開始后進(jìn)行的時(shí)間,縱軸為計(jì)數(shù)器(counter),即表示在操作系統(tǒng)中獲得用于執(zhí)行任務(wù)而每時(shí)間段增加的值的線性計(jì)數(shù)器(upcounter)。線性計(jì)數(shù)器可獲得0x0000至0xffff的值。線性計(jì)數(shù)器獲得0xffff的值后,由于值不能再增加而將發(fā)生溢出(overflow)。即0xffff之后會(huì)重新計(jì)數(shù)0x0000的值。

      以下,為了便于理解,假設(shè)計(jì)數(shù)器從0x0000增加到0xffff需消耗16ms的時(shí)間。即在圖2或者圖3的例子中,汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)開始后,在0ms~16ms為止的時(shí)間里完成計(jì)數(shù)器的第1次循環(huán)(cycle),在16ms~32ms為止的時(shí)間里完成計(jì)數(shù)器的第2次循環(huán)。同樣,在32ms~48ms為止的時(shí)間里完成計(jì)數(shù)器的第3次循環(huán)。

      如此完成每隔一定的周期的循環(huán)時(shí),如果計(jì)數(shù)器每獲得特定值時(shí)執(zhí)行任務(wù),則每隔一定的周期可以執(zhí)行任務(wù)。即在汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)中,當(dāng)計(jì)數(shù)器獲得特定值時(shí)發(fā)生報(bào)警器(alarm),以便執(zhí)行任務(wù)。此時(shí),可以以兩種方式指定發(fā)生報(bào)警器的計(jì)數(shù)器的值。

      其中,第1個(gè)是absolute方式,可由其“絕對(duì)”的含義就可知曉,其為指定發(fā)生報(bào)警器的計(jì)數(shù)器的值本身的方式。在圖2的例子中,計(jì)數(shù)器為0x1000時(shí),即在時(shí)間為1ms的t0的時(shí)間上報(bào)警器被初始化,并且以absolute方式設(shè)定兩個(gè)報(bào)警器。此時(shí),可通過setabsalarm函數(shù)設(shè)定absolute方式的報(bào)警器。

      查看setabsalarm函數(shù),其總共獲得3個(gè)參數(shù)(parameter)。作為第一個(gè)參數(shù)獲得報(bào)警器的標(biāo)識(shí)符,然后作為第二個(gè)參數(shù)獲得偏移(offset)值,作為最后一個(gè)參數(shù)獲得周期(period)。

      在此,作為offset得到的值為發(fā)生報(bào)警器的計(jì)數(shù)器的特定值。在圖2的例中,作為offset獲得了0x7000和0xa000,因此一個(gè)報(bào)警器(alarm)發(fā)生在7ms的t1時(shí)間,另一個(gè)報(bào)警器發(fā)生在10ms的t2時(shí)間。即absolute方式與調(diào)用setabsalarm函數(shù)的時(shí)間點(diǎn)的計(jì)數(shù)器的值無關(guān)地、在作為offset而獲得的值和計(jì)數(shù)器的值相同時(shí),將發(fā)生報(bào)警器。

      另外,額外地,還可以根據(jù)作為第三個(gè)參數(shù)的周期(period)的值,以周期性反復(fù)的方式來發(fā)生報(bào)警器。即setabsalarm(alarm,0x7000,period)可以由ncycle+0x7000的形式反復(fù)執(zhí)行。與剛才假定的一樣,一個(gè)循環(huán)0xffff為16ms,因此setabsalarm(alarm,0x7000,period)能以n*16ms+7ms的形式?jīng)Q定周期,setabsalarm(alarm,0xa000,period)能以n*16ms+10ms的形式?jīng)Q定周期。其中,n=0時(shí)可確認(rèn)t1為7ms、t2為10ms。雖然圖2并沒有示出,但n=1的時(shí)候,在23ms和26ms分別能發(fā)生報(bào)警器。

      在下文中,雖然會(huì)在圖4a至圖4b中詳細(xì)地闡述,但在absolute方式中由offset值決定發(fā)生報(bào)警器的時(shí)刻,因此,如果offset值互不相同,則在一個(gè)周期內(nèi),會(huì)自動(dòng)在互不相同的時(shí)間點(diǎn)上發(fā)生報(bào)警器而執(zhí)行任務(wù)。即能夠以在互不相同的時(shí)間執(zhí)行的方式分配任務(wù)來提高資源的使用率。

      指定發(fā)生報(bào)警器的計(jì)數(shù)器的值的第二個(gè)方法為relative方式。從relative方式的名稱中可以得知,relative方式是以函數(shù)被調(diào)用的時(shí)間點(diǎn)的值為基準(zhǔn),相對(duì)地決定發(fā)生報(bào)警器的計(jì)數(shù)器的特定值。在圖3的例子中計(jì)數(shù)器為0x1000時(shí),即在時(shí)間為1ms的t0時(shí)間上報(bào)警器被初始化,并且以relative方式設(shè)定兩個(gè)報(bào)警器。此時(shí),可通過setrelalarm函數(shù)設(shè)定relative方式的報(bào)警器。

      setrelalarm函數(shù)和setabsalarm函數(shù)相同地,也會(huì)獲得三個(gè)參數(shù)。在圖3的例子中,與圖2相同地,作為offset值設(shè)定了0x7000和0xa000的兩個(gè)報(bào)警器。雖然與圖2的setabsalarm函數(shù)相同地,獲得了同樣的offset值,但圖3的setrelalarm函數(shù)還考慮當(dāng)前setrelalarm函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器的值,因此會(huì)在與圖2不同的時(shí)間點(diǎn)上發(fā)生報(bào)警器。即在當(dāng)前setrelalarm函數(shù)被調(diào)用的時(shí)間點(diǎn)1ms的t0時(shí)間點(diǎn)上加上對(duì)應(yīng)于0x7000的7ms的時(shí)間點(diǎn)0x8000,即8ms的t1時(shí)間點(diǎn)上發(fā)生報(bào)警器,并且在t0時(shí)間點(diǎn)加上對(duì)應(yīng)于0xa000的10ms的0xb000,即11ms的t2時(shí)間點(diǎn)上發(fā)生報(bào)警器。

      相同地,在與將0x7000和0xa000作為offset參數(shù)而獲得的圖2的setabsalarm函數(shù)中是在7ms和10ms發(fā)生報(bào)警器的情況相比,能觀察到圖3的setrelalarm函數(shù)中會(huì)在8ms和11ms發(fā)生報(bào)警器。這是因?yàn)閷?duì)于setrelalarm函數(shù)的情況而言,還會(huì)考慮setrelalarm函數(shù)被調(diào)用的時(shí)間點(diǎn),因此在發(fā)生報(bào)警器的時(shí)間點(diǎn)t1和t2的演算中會(huì)反映出t0的1ms。

      在relative方式的情況下,僅以offset是無法知道什么時(shí)候會(huì)發(fā)生報(bào)警器,即在relative方式中,還需考慮函數(shù)被調(diào)用的時(shí)間點(diǎn),因此僅以offset是很難分配執(zhí)行任務(wù)的時(shí)間點(diǎn)。反之,以函數(shù)被調(diào)用的時(shí)間點(diǎn)為基準(zhǔn)來決定發(fā)生報(bào)警器的時(shí)間點(diǎn),因此具有可以準(zhǔn)確地預(yù)測何時(shí)會(huì)發(fā)生報(bào)警器的優(yōu)點(diǎn)。

      圖4a至圖4b為用于說明本發(fā)明的一執(zhí)行例中使用的關(guān)于任務(wù)分配的示意圖。

      汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)是通過發(fā)生報(bào)警器來執(zhí)行任務(wù)。并且,報(bào)警器可分為用于bsw模塊的報(bào)警器和用于asw模塊的兩個(gè)報(bào)警器。用于bsw模塊的報(bào)警器是調(diào)用schm_init()函數(shù)來設(shè)定,且用于asw模塊的報(bào)警器是調(diào)用rte_start()函數(shù)來設(shè)定。

      在汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)中,在schm_init及rte_start時(shí)間點(diǎn)被初始化(init)及開始(start)的報(bào)警器,在設(shè)定offset以后,會(huì)在每個(gè)自己的周期上執(zhí)行周期性聯(lián)動(dòng)的ostask。此時(shí),由于多個(gè)的osalarm按照各自的周期執(zhí)行相關(guān)的ostask,因此以能夠在特定的時(shí)間點(diǎn)連續(xù)地執(zhí)行多數(shù)的ostask的方式設(shè)定osalarm的情況下,將無法保障執(zhí)行基于準(zhǔn)確地周期的ostask。

      參考圖4a,能看到各模塊的任務(wù)隨著時(shí)間的流動(dòng)被執(zhí)行的情況。尤其能看到在bsw模塊執(zhí)行的bsw任務(wù)(task)和在asw模塊執(zhí)行的asw任務(wù)(task)。此時(shí),若根據(jù)發(fā)生報(bào)警器的時(shí)間點(diǎn)而在特定區(qū)間集中報(bào)警器,則任務(wù)也會(huì)集中。由此,需要執(zhí)行任務(wù)的資源也發(fā)生偏重現(xiàn)象。這會(huì)導(dǎo)致性能降低,從而會(huì)降低汽車的安全性。

      如果為了解決僅在特定區(qū)間集中任務(wù)的偏重現(xiàn)象(如圖4a)而分散任務(wù)(如圖4b所示),則需要分配執(zhí)行任務(wù)的時(shí)間點(diǎn)。當(dāng)然,此時(shí)還需考慮任務(wù)的執(zhí)行時(shí)間,但為了便于理解,若假設(shè)任務(wù)的執(zhí)行時(shí)間非常短,則只要單純地分散執(zhí)行任務(wù)的時(shí)間點(diǎn),即可分散任務(wù),且由此可高效地活用資源。

      為了分散執(zhí)行任務(wù)的時(shí)間點(diǎn),如前面所說明的,需適當(dāng)?shù)鼗钣胹etabsalarm函數(shù)或者setrelalarm函數(shù)的offset參數(shù)。此時(shí),setabsalarm函數(shù)是通過offset來決定發(fā)生報(bào)警器的時(shí)間點(diǎn),且setrelalarm函數(shù)是通過offset值和執(zhí)行setrelalarm函數(shù)的時(shí)間點(diǎn)的計(jì)數(shù)器的值來決定發(fā)生報(bào)警器的時(shí)間點(diǎn)。下面分析此時(shí),利用各個(gè)函數(shù)來分散任務(wù)時(shí)發(fā)生的問題。

      圖5至圖6為用于說明根據(jù)現(xiàn)有的absolute方式和relative方式的任務(wù)分配的問題的示意圖。圖5為示出關(guān)于absolute方式的示意圖,圖6為示出關(guān)于relative方式的示意圖。

      參考圖5可以看到:在對(duì)應(yīng)于0x1000的時(shí)間點(diǎn)1ms的t0時(shí)間上調(diào)用了用于bsw模塊的schm_init()函數(shù),且在對(duì)應(yīng)于1cycle+0x6000的時(shí)間點(diǎn)22ms的t3時(shí)間上調(diào)用了用于asw模塊的rte_start()函數(shù)。在schm_init()函數(shù)和rte_start()函數(shù)的內(nèi)部通過setabsalarm函數(shù)分別設(shè)定2個(gè)報(bào)警器。

      首先,查看schm_init()函數(shù),schm_init()函數(shù)的內(nèi)部通過1)setabsalarm(alarm,0x7000,period)、2)setabsalarm(alarm,0xa000,period)而設(shè)定兩個(gè)報(bào)警器。在absolute方式中,schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)不會(huì)影響發(fā)生報(bào)警器的時(shí)間點(diǎn),因此只通過作為offset參數(shù)而接受的0x7000值和0xa000值決定發(fā)生報(bào)警器的時(shí)間點(diǎn)。

      即若只要offset值分散,報(bào)警器會(huì)以分散的方式發(fā)生,且若報(bào)警器以分散的方式發(fā)生,則將以分散的方式執(zhí)行任務(wù)。具體地可看到根據(jù)0x7000值的offset,在7ms的t1時(shí)間點(diǎn)上發(fā)生報(bào)警器,而根據(jù)0xa000,在10ms的t2時(shí)間點(diǎn)上發(fā)生報(bào)警器。并且,在t1的時(shí)間點(diǎn)和t2的時(shí)間外,在每次的循環(huán)都會(huì)反復(fù)地發(fā)生報(bào)警器。

      如果schm_init()函數(shù)中設(shè)定的兩個(gè)報(bào)警器在每周期都發(fā)生反復(fù),則雖然圖5中未圖示,在1)對(duì)應(yīng)于n*cycle+0x7000的時(shí)間點(diǎn)n*16ms+7ms和2)對(duì)應(yīng)于n*cycle+0xa000的時(shí)間點(diǎn)n*16ms+10ms,都會(huì)發(fā)生用于bsw模塊的報(bào)警器,并執(zhí)行bsw任務(wù)。因此,用于asw模塊的報(bào)警器需要在除了上述時(shí)間點(diǎn)之外的時(shí)間,即需要以除0x7000值和0xa000值以外的值來設(shè)定offset參數(shù)。因?yàn)橹挥羞@樣才能分散任務(wù)。

      查看rte_start()函數(shù),能看到rte_start()函數(shù)的內(nèi)部通過1)setabsalarm(alarm,0x1000,period)、2)setabsalarm(alarm,0x2000,period)設(shè)定兩個(gè)報(bào)警器。其為absolute方式,且offset參數(shù)使用0x1000值和0x2000值,因此能看到bsw模塊的任務(wù)和asw模塊的任務(wù)很好地被分散開。

      即absolute方式是只通過offset決定發(fā)生報(bào)警器的時(shí)間點(diǎn),因此absolute方式中只要設(shè)定不同的offset值,就能分散任務(wù)。但是,在absolute方式中,設(shè)定報(bào)警器的schm_init()函數(shù)和rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)以及根據(jù)offset值來發(fā)生報(bào)警器的時(shí)間點(diǎn),可能會(huì)與預(yù)測的不一樣。

      參考圖5,schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)為對(duì)應(yīng)于0cycle+0x1000的時(shí)間點(diǎn)1ms的t0時(shí)間,且此時(shí)的offset參數(shù)為0x7000和0xa000。函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器為0x1000,而offset參數(shù)為比這大的0x7000和0xa000,因此,schm_init()函數(shù)被調(diào)用后,當(dāng)計(jì)數(shù)器的值相當(dāng)于0x7000和0xa000時(shí)發(fā)生報(bào)警器。只不過,對(duì)于rte_start()函數(shù)而言,情況會(huì)稍有不同。

      參考圖5,rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)為對(duì)應(yīng)于1cycle+0x6000的時(shí)間點(diǎn)22ms的t3時(shí)間,且此時(shí)的offset參數(shù)為0x1000和0x2000。函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器為0x6000,而offset參數(shù)為比這小的0x1000和0x2000,因此,rte_start()函數(shù)被調(diào)用后,發(fā)生溢出(overflow),從而計(jì)數(shù)器的值將被初始化,且當(dāng)計(jì)數(shù)器的值再次相當(dāng)于0x1000和0x2000時(shí)會(huì)發(fā)生報(bào)警器。即若offset參數(shù)的值比函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器小,則需要再循環(huán)1cycle才能發(fā)生報(bào)警器。

      即雖然rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)為對(duì)應(yīng)于1cycle+0x6000的時(shí)間點(diǎn),但實(shí)際發(fā)生報(bào)警器的時(shí)間點(diǎn)在不是1cycle內(nèi)而是2cycle中發(fā)生。即能看到:1)對(duì)應(yīng)于2cycle+0x1000的時(shí)間點(diǎn)33ms的t4時(shí)間發(fā)生報(bào)警器;2)對(duì)應(yīng)于2cycle+0x2000的時(shí)間點(diǎn)34ms的t5時(shí)間發(fā)生報(bào)警器。

      對(duì)于absolute方式而言,具有僅分散offset值就能分散報(bào)警器且由此能分散任務(wù)的優(yōu)點(diǎn),但在offset值比函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值小的情況下,具有為了發(fā)生報(bào)警器而再需要1cycle的缺點(diǎn)。即報(bào)警器的開始時(shí)間點(diǎn)會(huì)延遲。

      換句話說,即使函數(shù)被調(diào)用,也有很難準(zhǔn)確地預(yù)測發(fā)生報(bào)警器的時(shí)間點(diǎn)在當(dāng)前的循環(huán)內(nèi)還是在下一個(gè)循環(huán)內(nèi)的缺點(diǎn)。因?yàn)樵赼bsolute方式中,根本不考慮函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值。如此,在absolute方式中,雖然有可以高效分散任務(wù)的優(yōu)點(diǎn),但有很難準(zhǔn)確管理任務(wù)的缺點(diǎn)。

      參考圖6,與如圖5相同地,能看到在對(duì)應(yīng)于0x1000的時(shí)間點(diǎn)1ms的t0時(shí)間上調(diào)用了用于bsw模塊的schm_init()函數(shù),且在對(duì)應(yīng)于1cycle+0x6000的時(shí)間點(diǎn)22ms的t3時(shí)間上調(diào)用了用于asw模塊的rte_start()函數(shù)。但是在圖6中,與圖5的情況不同地,在schm_init()函數(shù)和rte_start()函數(shù)中通過setrelalarm函數(shù)分別設(shè)定兩個(gè)報(bào)警器。

      首先,查看schm_init()函數(shù),schm_init()函數(shù)的內(nèi)部通過1)setrelalarm(alarm,0x7000,period)和、2)setrelalarm(alarm,0xa000,period)設(shè)定兩個(gè)報(bào)警器。在relative方式中,schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)影響發(fā)生報(bào)警器的時(shí)間點(diǎn),因此以schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)的0x1000值及作為offset參數(shù)而接受的0x7000值和0xa000值決定發(fā)生報(bào)警器的時(shí)間點(diǎn)。

      即在relative方式中,只分配offset值是不夠的,還需考慮函數(shù)被調(diào)用的時(shí)間點(diǎn)。具體地,根據(jù)在0x1000被調(diào)用的0x7000值的offset會(huì)在8ms的t1時(shí)間點(diǎn)上發(fā)生報(bào)警器,而根據(jù)0xa000,在11ms的t2時(shí)間點(diǎn)上發(fā)生報(bào)警器。并且,除了t1的時(shí)間點(diǎn)和t2的時(shí)間點(diǎn)以外,在每次的循環(huán)也會(huì)反復(fù)地發(fā)生報(bào)警器。

      如果schm_init()函數(shù)中設(shè)定的兩個(gè)報(bào)警器在每周期都反復(fù),則雖然圖6中未圖示,在1)對(duì)應(yīng)于n*cycle+0x8000的時(shí)間點(diǎn)n*16ms+8m和2)對(duì)應(yīng)于n*cycle+0xb000的時(shí)間點(diǎn)n*16ms+11ms,都會(huì)發(fā)生用于bsw模塊的報(bào)警器,并執(zhí)行bsw任務(wù)。因此,用于asw模塊的報(bào)警器需要在除了上述時(shí)間點(diǎn)之外的時(shí)間,即需要以除0x8000值和0xb000值以外的值來設(shè)定函數(shù)被調(diào)用的時(shí)間點(diǎn)和offset參數(shù)。這樣才能分散任務(wù)。

      查看rte_start()函數(shù),能看到rte_start()函數(shù)的內(nèi)部通過1)setrelalarm(alarm,0x1000,period)、2)setrelalarm(alarm,0x2000,period)設(shè)定兩個(gè)報(bào)警器。其為relative方式,且作為offset參數(shù),使用0x1000值和0x2000值,因此能看到很好地分散了offset參數(shù)其本身。但是,在relative方式中,只分散offset參數(shù)是無法分散任務(wù)的。

      參考圖6,rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)為對(duì)應(yīng)于1cycle+0x6000的時(shí)間點(diǎn)22ms的t3時(shí)間,這時(shí)的offset參數(shù)為0x1000和0x2000。函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器為0x6000且offset參數(shù)為0x1000和0x2000,因此當(dāng)rte_start()函數(shù)被調(diào)用后,在對(duì)應(yīng)于1cycle+0x6000+0x1000的時(shí)間點(diǎn),即對(duì)應(yīng)于1cycle+0x7000的時(shí)間點(diǎn)23ms的t4時(shí)間點(diǎn)上發(fā)生報(bào)警器,且在對(duì)應(yīng)于1cycle+0x6000+0x2000的時(shí)間點(diǎn),即對(duì)應(yīng)于1cycle+0x8000的時(shí)間點(diǎn)24ms的t5時(shí)間點(diǎn)上發(fā)生報(bào)警器。即利用函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器和offset參數(shù)的值來決定發(fā)生報(bào)警器的時(shí)間點(diǎn),因此,即使分散了offset參數(shù),可能也會(huì)由于函數(shù)被調(diào)用的的時(shí)間點(diǎn)而發(fā)生報(bào)警器并未實(shí)現(xiàn)分散的現(xiàn)象。

      即在schm_init()函數(shù)中是以0x7000和0xa000作為offset參數(shù),在rte_start()函數(shù)中是以0x1000和0x2000作為offset參數(shù),從而分散了offset參數(shù)。但schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)是在0x1000,所以schm_init()函數(shù)在0x8000和0xb000發(fā)生報(bào)警器,而rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)是在0x6000,所以在0x7000和0x8000發(fā)生報(bào)警器,使得報(bào)警器在0x8000發(fā)生偏重。

      對(duì)于relative方式而言,函數(shù)被調(diào)用后,過去相當(dāng)于offset值的時(shí)間后才會(huì)發(fā)生報(bào)警器,因此具有可以準(zhǔn)確地預(yù)測發(fā)生報(bào)警器時(shí)間的優(yōu)點(diǎn)。即不必?fù)?dān)心報(bào)警器開始的時(shí)間點(diǎn)會(huì)延遲。但是有以下缺點(diǎn):僅分散offset值無法分散報(bào)警器,并且還需考慮設(shè)定報(bào)警器的函數(shù)被調(diào)用的時(shí)間點(diǎn)才能分配任務(wù)。

      換句話說,調(diào)用設(shè)定報(bào)警器的函數(shù)的同時(shí)還要考慮函數(shù)被調(diào)用的時(shí)間點(diǎn)和offset參數(shù)才能分散任務(wù)。這是因?yàn)槠溆糜赽sw模塊的報(bào)警器是通過schm_init()函數(shù)來設(shè)定的,而用于asw模塊的函數(shù)是在rte_start()中設(shè)定的。即在汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)中,根據(jù)模塊設(shè)定報(bào)警器的時(shí)刻會(huì)不同,因此利用relative方式會(huì)有很難適當(dāng)?shù)胤稚⑷蝿?wù)的缺點(diǎn)。像這樣,雖然relative方式具有準(zhǔn)確地管理任務(wù)的優(yōu)點(diǎn),但具有很難高效地分散任務(wù)的缺點(diǎn)。

      到目前為止,通過圖5至圖6,分析了聯(lián)動(dòng)于一個(gè)計(jì)數(shù)器(counter)且在不同的時(shí)刻分別對(duì)osalarm進(jìn)行初始化(init)及開始(start)的汽車開放系統(tǒng)架構(gòu)軟件的動(dòng)作結(jié)構(gòu)中absolute方式和relative方式所具有的缺點(diǎn)。若用表格整理該內(nèi)容,則如圖7a和圖7b所示。

      圖7a至圖7b為用于說明根據(jù)現(xiàn)有的absolute方式和relative方式的任務(wù)分配的問題的表格。

      圖7a為整理圖5的情況的表格,圖7b為整理圖6的情況的表格。參考圖7a,用于bsw模塊的schm_init()函數(shù)在計(jì)數(shù)器為0x1000時(shí)會(huì)被調(diào)用。此時(shí),作為offset參數(shù)會(huì)接受0x7000和0xa000。為了便于理解以下內(nèi)容,假定bsw模塊在每周期都反復(fù)調(diào)用bsw任務(wù),而且asw模塊只調(diào)用一次asw任務(wù)。

      在absolute方式中,根據(jù)offset值決定發(fā)生報(bào)警器的時(shí)間點(diǎn),因此在offset為0x7000的情況下,在對(duì)用于ncycle+0x7000的每個(gè)時(shí)間點(diǎn)上發(fā)生報(bào)警器且執(zhí)行任務(wù),而在offset為0xa000的情況下,在對(duì)應(yīng)于ncycle+0xa000的每個(gè)時(shí)間點(diǎn)上發(fā)生報(bào)警器且執(zhí)行任務(wù)。即在0x7000的情況下,每7ms、16ms+7ms=23ms、2*16ms+7ms=39ms、……時(shí)執(zhí)行任務(wù),而在0xa000的情況下,每10ms、16ms+10ms=26ms、2*16ms+10ms=42ms、……時(shí)執(zhí)行任務(wù)。

      同樣,用于asw模塊的rte_start()函數(shù)在1cycle+0x6000時(shí)被調(diào)用。此時(shí),作為offset參數(shù)會(huì)接受0x1000和0x2000。offset參數(shù)比函數(shù)被調(diào)用的時(shí)間的計(jì)數(shù)器0x6000更小,因此計(jì)數(shù)器發(fā)生一次溢出(overflow)后才會(huì)發(fā)生報(bào)警器。即發(fā)生報(bào)警器的時(shí)間點(diǎn)為對(duì)應(yīng)于2cycle+0x1000的時(shí)間點(diǎn)33ms和對(duì)應(yīng)于2cycle+0x2000的時(shí)間點(diǎn)34ms。

      在absolute方式中,根據(jù)offset值決定發(fā)生報(bào)警器的時(shí)間點(diǎn),因此為了分散用于bsw模塊和asw模塊的任務(wù),僅不同地設(shè)定offset值就可以。在圖7a,offset值分別不同地為0x7000、0xa000、0x1000、0x2000,因此執(zhí)行任務(wù)的時(shí)間點(diǎn)不會(huì)重復(fù)。只不過,在asw模塊的情況下,offset的值比函數(shù)被調(diào)用的時(shí)間的計(jì)數(shù)器0x6000小,因此能看到開始報(bào)警器被延遲的問題。

      即在absolute方式中會(huì)發(fā)生很難準(zhǔn)確地預(yù)測執(zhí)行任務(wù)的時(shí)間點(diǎn)的問題。absolute方式是雖然易于任務(wù)的分散,但在任務(wù)的管理上有缺點(diǎn)的方式。實(shí)際上,在asw模塊函數(shù)的調(diào)用是在1cycle+0x6000,但是任務(wù)的執(zhí)行是在2cycle里進(jìn)行,因此直到執(zhí)行ostask為止會(huì)發(fā)生延遲,且其無法準(zhǔn)確地把握上述延遲。這是因?yàn)樵赼bsolute方式中幾乎不考慮函數(shù)被調(diào)用的時(shí)間。

      同樣,查看圖7b,用于bsw模塊的schm_init()函數(shù)在計(jì)數(shù)器為0x1000時(shí)會(huì)被調(diào)用。此時(shí),作為offset參數(shù)會(huì)接受0x7000和0xa000。在relative方式中決定發(fā)生報(bào)警器的時(shí)間點(diǎn)時(shí),會(huì)考慮函數(shù)被調(diào)用的時(shí)間和offset參數(shù),因此在offset為0x7000的情況下,在對(duì)應(yīng)于ncycle+(0x1000+0x7000)的每個(gè)時(shí)間點(diǎn)上發(fā)生報(bào)警器且執(zhí)行任務(wù),而offset為0xa000的情況下,在對(duì)應(yīng)于ncycle+(0x1000+0xa000)的每個(gè)時(shí)間點(diǎn)上發(fā)生報(bào)警器且執(zhí)行任務(wù)。即在0x7000的情況下,每1ms+7ms=8ms、16ms+1ms+7ms=24ms、2*16ms+1ms+7ms=40ms、……時(shí)執(zhí)行任務(wù),而在0xa000的情況下,每1ms+10ms=11ms、16ms+1ms+10ms=27ms、2*16ms+1ms+10ms=43ms、……時(shí)執(zhí)行任務(wù)。

      同樣,用于asw模塊的rte_start()函數(shù)在計(jì)數(shù)器為1cycle+0x6000時(shí)被調(diào)用。此時(shí),作為offset參數(shù)會(huì)接受0x1000和0x2000。從函數(shù)被調(diào)用的時(shí)間點(diǎn)經(jīng)過offset值后會(huì)發(fā)生報(bào)警器,因此發(fā)生報(bào)警器的時(shí)間點(diǎn)為對(duì)應(yīng)于1cycle+0x6000+0x1000的時(shí)間點(diǎn)23ms和對(duì)應(yīng)于1cycle+0x6000+0x2000的時(shí)間點(diǎn)24ms。

      在relative方式中,從函數(shù)被調(diào)用的時(shí)間點(diǎn)經(jīng)過offset值后發(fā)生報(bào)警器,因此不會(huì)出現(xiàn)報(bào)警器的延遲。即可以準(zhǔn)確地預(yù)測發(fā)生報(bào)警器的時(shí)間點(diǎn)。但是,因考慮函數(shù)被調(diào)用的時(shí)間點(diǎn)和offset值而發(fā)生報(bào)警器,所以具有很難分散發(fā)生報(bào)警器的時(shí)間點(diǎn)的缺點(diǎn)。

      即在relative方式中,存在很難分散任務(wù)的問題。relative方式是雖然利于任務(wù)的管理,但在任務(wù)的分散上存在缺點(diǎn)的方式。實(shí)際上,bsw模塊的offset為0x7000、0xa000,而asw模塊的offset為0x1000和0x2000,彼此不相同,但由于函數(shù)被調(diào)用的時(shí)間點(diǎn)分別為0x1000和1cycle+0x6000,因此能看到在24ms時(shí),報(bào)警器發(fā)生偏重的情況。因此會(huì)發(fā)生無法高效地使用資源的情況。

      到目前為止,分析了在通過現(xiàn)有的absolute方式和relative方式管理用于bsw模塊和asw模塊的任務(wù)的情況會(huì)發(fā)生的問題。這是因設(shè)定用于bsw模塊的報(bào)警器的時(shí)間點(diǎn)和設(shè)定用于asw模塊的報(bào)警器的時(shí)間互不相同而發(fā)生的問題。即汽車開放系統(tǒng)架構(gòu)操作系統(tǒng)引入適當(dāng)?shù)膐ffset,以避免ostask間的相互干涉,但即使使用absolute方式和relative方式中的任何一個(gè),也難以在分散任務(wù)的同時(shí)高效地管理任務(wù)。

      即使在不同的時(shí)刻osalarm被初始化及開始,也需要可以在分散任務(wù)的同時(shí)可以高效地管理任務(wù)的方法。為此,需要整合了absolute方式和relative方式的優(yōu)點(diǎn)的新的方式。在本發(fā)明的一執(zhí)行例提出了命名為自適應(yīng)相對(duì)(adaptiverelative)osalarm的新方式。

      本發(fā)明提出的adaptiverelative方式為如下方式:在schm_init()函數(shù)的調(diào)用時(shí)間點(diǎn)存儲(chǔ)bsw模塊中使用的計(jì)數(shù)器的值,之后在rte_start()函數(shù)的調(diào)用時(shí)間點(diǎn)將存儲(chǔ)的計(jì)數(shù)器的值與當(dāng)前的計(jì)數(shù)器的值進(jìn)行比較來修改rte_start()函數(shù)中設(shè)定的報(bào)警器的offset。由此,即使bsw模塊和asw模塊在互不相同的時(shí)間點(diǎn)被調(diào)用,也可通過共享bsw模塊被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器的值來將同步的offset引入一個(gè)時(shí)域(timedomain)。

      圖8為根據(jù)本發(fā)明一執(zhí)行例的adaptiverelative方式的任務(wù)管理方法的流程圖。

      參考圖8,設(shè)定bsw模塊的報(bào)警器的時(shí)間點(diǎn),即將schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至稱為counter_bsw的變量(s1000)。對(duì)于bsw模塊的情況,無需修改offset,根據(jù)現(xiàn)有的relative方式設(shè)定發(fā)生報(bào)警器的時(shí)間點(diǎn)。

      之后,隨著時(shí)間的經(jīng)過,將設(shè)定asw模塊的報(bào)警器的時(shí)間點(diǎn),即rte_start()函數(shù)的調(diào)用時(shí)間點(diǎn)的計(jì)數(shù)器值存儲(chǔ)至稱為counter_rte的變量(s2000)。對(duì)于asw模塊的情況,不能直接使用offset,而是考慮bsw模塊的報(bào)警器被設(shè)定的時(shí)間而進(jìn)行修改。

      為此,比較counter_rte值與計(jì)算后的值(counter_bsw+用于asw模塊的rte_start()函數(shù)的offset值)(s3000)。如果比較這兩個(gè)值來修改用于asw模塊的rte_start()函數(shù)的offset值,則bsw模塊和asw模塊會(huì)在一個(gè)時(shí)閾中產(chǎn)生報(bào)警器。即利用relative方式的同時(shí),也能顯示與absolute方式相似的效果。

      比較兩個(gè)值后,如果counter_rte值比(counter_bsw+offset)大,則新的offset值可以使用cycle-((counter_rte-(counter_bsw+offset))%cycle)(s4000)。看公式能得知,其為考慮counter_rte的值和counter_bsw的值來修改offset,從而指定新的偏移的方式。由此,即使在不同的時(shí)刻設(shè)定用于bsw模塊的報(bào)警器和用于asw模塊的報(bào)警器,也能以與absolute相似的方式設(shè)定relative方式的報(bào)警器。

      反之,如果counter_rte值比(counter_bsw+offset)小,則新的offset值可以使用cycle-(((counter_bsw+offset)-counter_rte)%cycle)(s5000)。比較步驟s4000和步驟s5000,則能得知最后是以counter_rte值和(counter_bsw+offset)值之差的絕對(duì)值為基準(zhǔn)修改offset并算出新的offset。

      如果將本發(fā)明的一執(zhí)行例的、根據(jù)offset修改方法的adaptiverelative方式的任務(wù)分散方法適用于圖7b的情況,能更確切地掌握差異點(diǎn)。先對(duì)修改的offset導(dǎo)致執(zhí)行時(shí)間點(diǎn)如何變化進(jìn)行分析,再確認(rèn)由此實(shí)現(xiàn)負(fù)荷分散的過程。

      圖9為用于說明根據(jù)本發(fā)明一執(zhí)行例的adaptiverelative方式的任務(wù)管理方法的表格。

      參考圖9,能看出初始的counter值和offset值為止都與圖7b相同。只不過,增加了稱作修改的offset值的項(xiàng)目,且由此可知,在relative方式下,吸收了absolute方式的優(yōu)點(diǎn)。具體可參考以下內(nèi)容。

      首先,設(shè)定用于bsw模塊的報(bào)警器的過程與圖7b沒有太大的區(qū)別。發(fā)生報(bào)警器的時(shí)間點(diǎn)也同樣為1)ncycle+0x8000,為8ms、24ms、40ms、……;2)ncycle+0xb000,為11ms、27ms、43ms、……。即設(shè)定用于bsw模塊的報(bào)警器的過程是相同的。只不過,在其過程中,將用于設(shè)定bsw模塊的schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)另行存儲(chǔ)至變量。在圖9的例子,計(jì)數(shù)器0x1000的值另行存儲(chǔ)到名為counter_bsw的變量后,在調(diào)用用于asw模塊的函數(shù)時(shí)使用。

      查看設(shè)定用于asw模塊的報(bào)警器的過程,rte_start()函數(shù)與圖7b相同地,在1cycle+0x6000的時(shí)間點(diǎn)被調(diào)用。此時(shí),參考schm_init()函數(shù)被調(diào)用的時(shí)間點(diǎn)counter_bsw的0x1000值來變更設(shè)定在rte_start()函數(shù)的報(bào)警器的offset。為此,將rte_start()函數(shù)被調(diào)用的時(shí)間點(diǎn)的計(jì)數(shù)器值0x6000的值存儲(chǔ)到counter_rte變量。

      接著,比較counter_rte的值和counter_bsw+offset值。首先,在offset為0x1000的情況下,counter_rte為0x6000,且counter_bsw+offset的值為0x1000+0x1000=0x2000的值。即因counter_rte比counter_bsw+offset大,所以若將這兩者之差的0x4000值從一個(gè)循環(huán)0xffff中去掉,則能獲得0xc000的新的offset值。即offset的0x1000值更改為0xc000的值。通過相同的過程,0x2000的offset值會(huì)更改為0xd000的值。

      利用新修改的offset值計(jì)算執(zhí)行時(shí)間點(diǎn),則如果1cycle+0x6000的rte_start()函數(shù)被調(diào)用的計(jì)數(shù)器值加上修改的offset值,分別會(huì)在對(duì)應(yīng)于2cycle+0x2000的34ms和在對(duì)應(yīng)于2cycle+0x3000的35ms發(fā)生用于asw模塊的報(bào)警器。

      與圖7b的情況相比較,能看到用于asw模塊的報(bào)警器在與用于bsw模塊的報(bào)警器不同的時(shí)間點(diǎn)上發(fā)生。即使在不同的時(shí)刻執(zhí)行用于bsw模塊的schm_init()函數(shù)和用于asw模塊的rte_start()函數(shù),能夠以與實(shí)行用于bsw模塊的schm_init()函數(shù)時(shí)的計(jì)數(shù)器值0x1000為基準(zhǔn)而適用relativie方式一樣,能看到0x7000、0xa000、0x1000、0x2000的執(zhí)行時(shí)間點(diǎn)被決定為0x8000、0xb000、0x2000、0x3000。

      這樣,通過以一個(gè)時(shí)域、以relative方式設(shè)定任務(wù),具有可以準(zhǔn)確地預(yù)測執(zhí)行任務(wù)的時(shí)間點(diǎn)的同時(shí)、分散任務(wù)的執(zhí)行時(shí)間點(diǎn)來高效地活用資源的效果。如上所述的方式即為在本發(fā)明的一執(zhí)行例提出的adaptiverelative方式的報(bào)警器設(shè)定。

      雖然上文中參照附圖說明了本發(fā)明的執(zhí)行例,本發(fā)明所屬技術(shù)領(lǐng)域的技術(shù)人員清楚不更改本發(fā)明技術(shù)思想或者必不可少的特征,可以以其他具體的形態(tài)進(jìn)行執(zhí)行。因此,應(yīng)理解為以上所述的執(zhí)行例在所有的方面是示例性的,而不是限制性的。

      當(dāng)前第1頁1 2 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1