亚洲狠狠干,亚洲国产福利精品一区二区,国产八区,激情文学亚洲色图

單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法和系統(tǒng)的制作方法

文檔序號(hào):6621499閱讀:714來源:國(guó)知局
單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法和系統(tǒng),包括步驟:將所有實(shí)時(shí)任務(wù)打包成一個(gè)實(shí)時(shí)任務(wù)調(diào)用函數(shù),在該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的實(shí)現(xiàn)里把所有實(shí)時(shí)任務(wù)依次調(diào)用一次;將耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟,對(duì)應(yīng)于每個(gè)執(zhí)行步驟至少植入一次該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用。本發(fā)明具有以下技術(shù)效果:既不影響程序流程的可讀性,又方便地實(shí)現(xiàn)了在單線程模式下實(shí)現(xiàn)并行運(yùn)算的技巧,且完整地保留了調(diào)用棧,適合調(diào)試時(shí)定位故障源。
【專利說明】[0001] 單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法和系統(tǒng)

【技術(shù)領(lǐng)域】
[0002] 本發(fā)明涉及單片機(jī)的程序運(yùn)行管理,特別是與單片機(jī)的實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)的協(xié) 調(diào)有關(guān)。

【背景技術(shù)】
[0003] 實(shí)時(shí)任務(wù)是指不可阻塞、不可拖延和響應(yīng)及時(shí)的任務(wù),通常包括通信協(xié)議報(bào)文處 理、定時(shí)任務(wù)及喂狗等,這類任務(wù)處理函數(shù)非??焖?,運(yùn)行時(shí)間短。耗時(shí)任務(wù)是指有內(nèi)在處 理邏輯、有特定執(zhí)行順序、且需要耗費(fèi)較長(zhǎng)時(shí)間才能執(zhí)行完成的任務(wù),這類任務(wù)屬于應(yīng)用層 次,不要求實(shí)時(shí)性,但必須保證執(zhí)行的順序。
[0004] 現(xiàn)有單片機(jī)環(huán)境中通常使用兩種方式實(shí)現(xiàn)實(shí)時(shí)任務(wù)和耗時(shí)任務(wù)的并行執(zhí)行。一 種使用RT0S (實(shí)時(shí)操作系統(tǒng)),由實(shí)時(shí)操作系統(tǒng)提供中斷級(jí)別的分時(shí)多任務(wù),程序中只需調(diào) 用RT庫(kù)提供的API創(chuàng)建新任務(wù),即可實(shí)現(xiàn)實(shí)時(shí)任務(wù)和耗時(shí)任務(wù)的并行運(yùn)行。另一種不使用 RT0S,參見圖2,其是把耗時(shí)任務(wù)原始執(zhí)行邏輯分解成若干個(gè)耗時(shí)較小的執(zhí)行步驟1、2···Ν ; 參見圖1,其在入口 main ()函數(shù)中使用無限循環(huán),實(shí)時(shí)任務(wù)的處理大致包括定時(shí)任務(wù)、發(fā)送 報(bào)文、接收并解釋報(bào)文和喂狗等;參見圖3,每次循環(huán)只調(diào)用耗時(shí)任務(wù)的一個(gè)步驟,下次循 環(huán)調(diào)用下一個(gè)步驟,以此在不影響系統(tǒng)實(shí)時(shí)響應(yīng)的基礎(chǔ)上模擬出耗時(shí)任務(wù)也在并行運(yùn)行的 效果。
[0005] 在有條件的單片機(jī)上,例如有足夠大的RAM (隨機(jī)存取存儲(chǔ)器)和存儲(chǔ)空間的情況 下,第一選擇都是使用RT0S,畢竟由庫(kù)提供的多任務(wù)環(huán)境極大地減少了編寫多任務(wù)程序的 難度和復(fù)雜度,尤其是調(diào)試代碼時(shí)指令執(zhí)行邏輯清晰,調(diào)用棧跟蹤方便,很容易根據(jù)調(diào)用上 下文查錯(cuò)和糾錯(cuò),但由于涉及到任務(wù)調(diào)度、TCB (任務(wù)控制塊)數(shù)據(jù)分配及數(shù)據(jù)同步處理等因 素,需要占用額外的內(nèi)存和處理器資源,也相應(yīng)增加了同步處理的復(fù)雜性。
[0006] 而且由于成本的因素,存在大量如下的單片機(jī)類型:一種是存儲(chǔ)空間非常有限,t匕 如:只有幾 K字節(jié)甚至幾百字節(jié)的RAM,無法滿足RT0S所需要的基本存儲(chǔ)需求;另一種是 單片機(jī)廠商未提供對(duì)應(yīng)的RT0S。對(duì)于這樣的單片機(jī)類型,只能選擇任務(wù)分解方式提供模擬 多任務(wù)效果,這種方式必須打亂程序邏輯結(jié)構(gòu),且需要增加額外的變量空間來記住任務(wù)的 當(dāng)前執(zhí)行步驟,在下一個(gè)循環(huán)周期能從記憶的執(zhí)行步驟中恢復(fù)狀態(tài)以便繼續(xù)執(zhí)行剩余的步 驟;此方式會(huì)明顯增加程序邏輯的復(fù)雜度,狀態(tài)轉(zhuǎn)換極易出錯(cuò),且由于完全丟失了調(diào)用上下 文關(guān)系,導(dǎo)致出錯(cuò)時(shí)難以確定故障來源,增加了糾錯(cuò)和維護(hù)的成本。
[0007]


【發(fā)明內(nèi)容】

[0008] 本發(fā)明要解決的技術(shù)問題在于避免現(xiàn)有技術(shù)中無法使用RT0S的單片機(jī)軟件的情 況下,而所存在的實(shí)時(shí)和耗時(shí)任務(wù)執(zhí)行需要占用額外的內(nèi)存和處理器資源、同步處理復(fù)雜, 或者程序邏輯復(fù)雜、狀態(tài)轉(zhuǎn)換容易出錯(cuò)、糾錯(cuò)和維護(hù)成本高等不足之處,而提出一種單片機(jī) 實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法。
[0009] 針對(duì)上述要解決的技術(shù)問題,本發(fā)明的技術(shù)方案如下: 一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法,包括以下步驟:將所有實(shí)時(shí)任 務(wù)打包成一個(gè)實(shí)時(shí)任務(wù)調(diào)用函數(shù),在該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的實(shí)現(xiàn)里把所有實(shí)時(shí)任務(wù)依次調(diào) 用一次;將耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟,對(duì)應(yīng)于每個(gè)執(zhí)行步驟至少植入一次該實(shí)時(shí)任 務(wù)調(diào)用函數(shù)的調(diào)用。
[0010] 進(jìn)一步地,計(jì)算所述耗時(shí)任務(wù)中各執(zhí)行步驟所需要的時(shí)間,并根據(jù)各執(zhí)行步驟所 需要的時(shí)間長(zhǎng)短而決定將實(shí)時(shí)任務(wù)調(diào)用函數(shù)植入所述耗時(shí)任務(wù)的具體執(zhí)行步驟中。
[0011] 進(jìn)一步地,所述耗時(shí)任務(wù)中各執(zhí)行步驟所需要時(shí)間的計(jì)算通過時(shí)間統(tǒng)計(jì)代碼實(shí) 現(xiàn)。
[0012] 進(jìn)一步地,所述耗時(shí)任務(wù)按照函數(shù)流程編寫功能代碼。
[0013] 進(jìn)一步地,植入所述實(shí)時(shí)任務(wù)調(diào)用函數(shù)時(shí),保證相鄰兩次實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào) 用之間所耗費(fèi)的時(shí)間足夠短,以便保證實(shí)時(shí)任務(wù)的實(shí)時(shí)性。
[0014] 進(jìn)一步地,在耗時(shí)任務(wù)需要等待實(shí)時(shí)任務(wù)的執(zhí)行結(jié)果時(shí),反復(fù)調(diào)用所述實(shí)時(shí)任務(wù) 調(diào)用函數(shù),以至所期待結(jié)果出現(xiàn)或者超時(shí)才繼續(xù)執(zhí)行后續(xù)流程。
[0015] 進(jìn)一步地,所述實(shí)時(shí)任務(wù)調(diào)用函數(shù)包括執(zhí)行一下步驟:執(zhí)行定時(shí)任務(wù)、執(zhí)行發(fā)送報(bào) 文、執(zhí)行接收并解析報(bào)文以及執(zhí)行喂狗。
[0016] 進(jìn)一步地,所述單片機(jī)不支持實(shí)時(shí)操作系統(tǒng)。
[0017] 一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)系統(tǒng),包括耗時(shí)任務(wù)模塊、實(shí)時(shí) 任務(wù)模塊和中斷任務(wù)模塊,所述耗時(shí)任務(wù)模塊位于系統(tǒng)最上層,所述實(shí)時(shí)任務(wù)模塊位于系 統(tǒng)中間層,中斷任務(wù)位于系統(tǒng)最底層;所述實(shí)時(shí)任務(wù)模塊的所有實(shí)時(shí)任務(wù)打包成一個(gè)實(shí)時(shí) 任務(wù)調(diào)用函數(shù),在該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的實(shí)現(xiàn)中把所有實(shí)時(shí)任務(wù)依次調(diào)用一次;所述耗時(shí) 任務(wù)模塊將耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟,對(duì)應(yīng)于耗時(shí)任務(wù)執(zhí)行步驟至少植入一次該實(shí) 時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用。
[0018] 進(jìn)一步地,所述實(shí)時(shí)任務(wù)模塊包括依次連接的用于更新定時(shí)任務(wù)計(jì)數(shù)器的定時(shí)任 務(wù)子模塊、用于發(fā)送報(bào)文的發(fā)送報(bào)文子模塊、用于接收并解析報(bào)文的接收并解析報(bào)文子模 塊和用于喂狗的喂狗子模塊。
[0019] 本發(fā)明的單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法,與現(xiàn)有技術(shù)相比,具 有以下技術(shù)效果: 通過植入式調(diào)用實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO,既不影響程序流程的可讀性,又方便 地實(shí)現(xiàn)了在單線程模式下實(shí)現(xiàn)并行運(yùn)算的技巧,且完整地保留了調(diào)用棧,適合調(diào)試時(shí)定位 故障源。任務(wù)執(zhí)行邏輯清晰,避免了分解式執(zhí)行導(dǎo)致的調(diào)用上下文丟失,無法從調(diào)用棧獲取 錯(cuò)誤來源的問題。
[0020] 植入式調(diào)用方案使得軟件開發(fā)過程更清晰,即開發(fā)初期無需考慮任務(wù)是否耗時(shí), 只需按照正常流程完成任務(wù)功能代碼。僅需在后期測(cè)試期間收集任務(wù)執(zhí)行時(shí)間,并在合適 的地方加入AsyncWorkO調(diào)用來保證實(shí)時(shí)任務(wù)的實(shí)時(shí)性即可。采用本技術(shù)方案設(shè)計(jì),可以 使單片機(jī)軟件開發(fā)人員從耗時(shí)任務(wù)拆分的繁瑣勞動(dòng)中解脫出來,專注于任務(wù)的邏輯流程設(shè) 計(jì),而不需要花費(fèi)很大精力處理各個(gè)步驟的協(xié)調(diào)和狀態(tài)記憶。
[0021] 不需要RT0S的任務(wù)調(diào)度和數(shù)據(jù)同步控制,不占用額外內(nèi)存空間,沒有任務(wù)調(diào)度導(dǎo) 致的性能損失,完全可以運(yùn)行在RAM很小的設(shè)備上。
[0022]

【專利附圖】

【附圖說明】
[0023] 圖1是現(xiàn)有的任務(wù)分解式的main ()函數(shù)流程圖。
[0024] 圖2是現(xiàn)有的耗時(shí)任務(wù)原始流程圖。
[0025] 圖3是現(xiàn)有的耗時(shí)任務(wù)分解流程圖。
[0026] 圖4是本發(fā)明實(shí)施例的單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)系統(tǒng)方框示 意圖。
[0027] 圖5是本發(fā)明實(shí)施例的實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO函數(shù)所封裝的實(shí)時(shí)任務(wù)流 程圖。
[0028] 圖6是本發(fā)明實(shí)施例的耗時(shí)任務(wù)植入式調(diào)用流程圖。
[0029] 圖7是本發(fā)明實(shí)施例的簡(jiǎn)單耗時(shí)任務(wù)流程圖。
[0030]

【具體實(shí)施方式】
[0031] 下面結(jié)合各附圖對(duì)實(shí)施例作進(jìn)一步詳述: 參見圖4, 一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)系統(tǒng),包括耗時(shí)任務(wù)模塊、 實(shí)時(shí)任務(wù)模塊和中斷任務(wù)模塊,所述耗時(shí)任務(wù)模塊位于系統(tǒng)最上層,所述實(shí)時(shí)任務(wù)模塊位 于系統(tǒng)中間層,中斷任務(wù)模塊位于系統(tǒng)最底層。這樣通過把任務(wù)層次進(jìn)行明確劃分,能保證 實(shí)時(shí)任務(wù)和耗時(shí)任務(wù)在單線程模式下同時(shí)并行執(zhí)行,且能避免拆分耗時(shí)任務(wù)后跟實(shí)時(shí)任務(wù) 混合調(diào)度的混亂局面。
[0032] 具體地,所述實(shí)時(shí)任務(wù)模塊包括依次連接的用于更新定時(shí)任務(wù)計(jì)數(shù)器的定時(shí)任務(wù) 子模塊、用于發(fā)送報(bào)文的發(fā)送報(bào)文子模塊、用于接收并解析報(bào)文的接收并解析報(bào)文子模塊 和用于喂狗的喂狗子模塊。所述中斷任務(wù)模塊的中斷任務(wù)作為硬件級(jí)的實(shí)時(shí)服務(wù),包括定 時(shí)器中斷、通信中斷以及其它中斷,本身已經(jīng)具備并行執(zhí)行的基礎(chǔ),屬于現(xiàn)有技術(shù),此處不 再贅述。
[0033] -種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法,基于單片機(jī)不支持實(shí)時(shí)操 作系統(tǒng),包括以下步驟:將所有實(shí)時(shí)任務(wù)打包成一個(gè)實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO,在該 實(shí)時(shí)任務(wù)調(diào)用函數(shù)的實(shí)現(xiàn)里把所有實(shí)時(shí)任務(wù)依次調(diào)用一次,例如:從發(fā)送緩沖區(qū)提取并發(fā) 送報(bào)文;從接收緩沖區(qū)提取并解析報(bào)文;調(diào)用定時(shí)任務(wù)以及喂狗。將耗時(shí)任務(wù)劃分為若干 個(gè)執(zhí)行步驟,對(duì)應(yīng)于每個(gè)執(zhí)行步驟至少植入一次該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用。在耗時(shí)任務(wù) 內(nèi)部隨時(shí)調(diào)用此實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO來處理實(shí)時(shí)任務(wù),這也是本發(fā)明方法實(shí)現(xiàn) 的基礎(chǔ)。如圖6所示,把整個(gè)耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟1、2…N,對(duì)應(yīng)于每個(gè)執(zhí)行步 驟1、2…N相應(yīng)地至少植入一次實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO的調(diào)用。上述實(shí)現(xiàn)方法當(dāng) 然也可以適用于單片機(jī)支持實(shí)時(shí)操作系統(tǒng)的情形。
[0034] 一些實(shí)施例中,耗時(shí)任務(wù)按照普通的函數(shù)流程編寫代碼,而不需要編寫任務(wù)拆分 代碼。在全部功能代碼完成后,可通過經(jīng)驗(yàn)或額外的時(shí)間統(tǒng)計(jì)代碼等方式計(jì)算所述耗時(shí)任 務(wù)中各執(zhí)行步驟所需要的時(shí)間,并根據(jù)各執(zhí)行步驟所需要的時(shí)間長(zhǎng)短而決定將實(shí)時(shí)任務(wù)調(diào) 用函數(shù)植入所述耗時(shí)任務(wù)的具體執(zhí)行步驟中,即根據(jù)各執(zhí)行步驟所需要的時(shí)間長(zhǎng)短確定在 耗時(shí)任務(wù)的哪些具體執(zhí)行步驟中加入實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO的調(diào)用。本發(fā)明的植 入式調(diào)用在運(yùn)行效果上與現(xiàn)有技術(shù)中的分解式調(diào)用相同,但它保留了耗時(shí)任務(wù)的程序控制 邏輯,對(duì)于軟件開發(fā)者來說,植入式調(diào)用更符合思維習(xí)慣。
[0035] 一些實(shí)施例中,植入所述實(shí)時(shí)任務(wù)調(diào)用函數(shù)時(shí),考慮以下兩個(gè)條件:一是保證相鄰 兩次實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用之間所耗費(fèi)的時(shí)間足夠短,以便保證實(shí)時(shí)任務(wù)的實(shí)時(shí)性。例 如:必須在指定的時(shí)間內(nèi)喂狗以避免看門狗復(fù)位單片機(jī)。二是在耗時(shí)任務(wù)的等待期間,有時(shí) 耗時(shí)任務(wù)需要等待實(shí)時(shí)任務(wù)的執(zhí)行結(jié)果,例如耗時(shí)任務(wù)發(fā)送一個(gè)報(bào)文后必須等待實(shí)時(shí)任務(wù) 一個(gè)響應(yīng)報(bào)文時(shí),可以反復(fù)調(diào)用所述實(shí)時(shí)任務(wù)調(diào)用函數(shù),以至所期待結(jié)果出現(xiàn)或者超時(shí)才 繼續(xù)執(zhí)行后續(xù)流程。
[0036] 一些實(shí)施例中,參見圖5,本發(fā)明的實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO包括執(zhí)行以下 步驟: 5101、 執(zhí)行定時(shí)任務(wù); 5102、 執(zhí)行發(fā)送報(bào)文; 5103、 執(zhí)行接收并解析報(bào)文; 5104、 執(zhí)行喂狗。
[0037] 圖7是本發(fā)明一實(shí)施例的簡(jiǎn)單耗時(shí)任務(wù)流程圖。這里假設(shè)一種簡(jiǎn)單耗時(shí)任務(wù)的場(chǎng) 景:在設(shè)備中向外部設(shè)備發(fā)送一個(gè)查詢指令并等待外部設(shè)備返回結(jié)果,如果外部設(shè)備就緒, 則再發(fā)送一個(gè)控制指令并等待結(jié)果;如果外部設(shè)備未就緒或者任何一個(gè)指令的響應(yīng)超時(shí), 則任務(wù)直接結(jié)束。使用本發(fā)明方法執(zhí)行此任務(wù)的基本流程如下: 5301、 構(gòu)造查詢指令報(bào)文并放入發(fā)送隊(duì)列; 5302、 構(gòu)造定時(shí)任務(wù)計(jì)數(shù)器以計(jì)算超時(shí); 5303、 調(diào)用實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO ;完成發(fā)送報(bào)文、檢測(cè)接收?qǐng)?bào)文、超時(shí)計(jì)數(shù) 器更新等,這個(gè)過程具體包括:如果發(fā)送隊(duì)列存在報(bào)文則取出報(bào)文并發(fā)送給外部設(shè)備;判 斷接收緩沖區(qū)是否存在完整報(bào)文,如果存在,則解析報(bào)文后放入接收隊(duì)列;以及更新定時(shí)任 務(wù)計(jì)數(shù)器; 5304、 檢測(cè)接收隊(duì)列是否存在響應(yīng)報(bào)文,如果存在,則執(zhí)行步驟S305,否則執(zhí)行步驟 S314 ; 5305、 停止定時(shí)任務(wù)計(jì)數(shù)器計(jì)數(shù); 5306、 根據(jù)報(bào)文內(nèi)容,判斷外部設(shè)備是否就緒,如果未就緒,則結(jié)束任務(wù),如果就緒,則 執(zhí)行步驟S306 ; 5307、 構(gòu)造控制指令報(bào)文并放入發(fā)送隊(duì)列; 5308、 構(gòu)造定時(shí)任務(wù)計(jì)數(shù)器以計(jì)算超時(shí) 5309、 調(diào)用實(shí)時(shí)任務(wù)調(diào)用函數(shù)AsyncWorkO ;完成發(fā)送報(bào)文、檢測(cè)接收?qǐng)?bào)文、超時(shí)計(jì)數(shù) 器更新等,這個(gè)過程具體包括:如果發(fā)送隊(duì)列存在報(bào)文則取出報(bào)文并發(fā)送給外部設(shè)備;判 斷接收緩沖區(qū)是否存在完整報(bào)文,如果存在,則解析報(bào)文后放入接收隊(duì)列;以及更新定時(shí)任 務(wù)計(jì)數(shù)器; 5310、 檢測(cè)接收隊(duì)列是否存在響應(yīng)報(bào)文,如果存在,則執(zhí)行步驟S311,如果不存在,則執(zhí) 行步驟S313 ; 5311、 停止定時(shí)任務(wù)計(jì)數(shù)器計(jì)數(shù); 5312、 根據(jù)報(bào)文內(nèi)容,檢測(cè)控制指令的執(zhí)行結(jié)果,結(jié)束任務(wù)。
[0038] S313、獲取計(jì)數(shù)器判斷是否超時(shí),如果超時(shí),則結(jié)束任務(wù);未超時(shí)則重復(fù)執(zhí)行步驟 S309 ; S314、獲取計(jì)數(shù)器判斷是否超時(shí),如果超時(shí),則結(jié)束任務(wù);未超時(shí)則重復(fù)執(zhí)行步驟 S303。
[0039] 可以看出,本發(fā)明方法的開發(fā)過程非常符合程序員的思維。通過一種"隨時(shí)隨地植 入"的機(jī)制,在不依賴RT0S的基礎(chǔ)上實(shí)現(xiàn)實(shí)時(shí)任務(wù)和耗時(shí)任務(wù)的并行執(zhí)行,解決了 RT0S方 式需要占用額外內(nèi)存空間、需要任務(wù)切換時(shí)間、數(shù)據(jù)同步控制的問題,也解決了非RT0S的 任務(wù)分解方式需要拆分耗時(shí)任務(wù)、丟失調(diào)用上下文、需要額外的全局或靜態(tài)狀態(tài)變量、不利 于調(diào)試查錯(cuò)的問題,最終達(dá)到符合代碼邏輯思維習(xí)慣、簡(jiǎn)化狀態(tài)控制導(dǎo)致的邏輯復(fù)雜性、便 于調(diào)試查錯(cuò)的效果,從而可以增加編程的效率和可靠性。
[0040] 以上,僅為本發(fā)明之較佳實(shí)施例,意在進(jìn)一步說明本發(fā)明,而非對(duì)其進(jìn)行限定。凡 根據(jù)上述之文字和附圖所公開內(nèi)容進(jìn)行的簡(jiǎn)單替換,都在本專利的權(quán)利保護(hù)范圍之列。
【權(quán)利要求】
1. 一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)方法,其特征在于,包括以下步驟: 將所有實(shí)時(shí)任務(wù)打包成一個(gè)實(shí)時(shí)任務(wù)調(diào)用函數(shù),在該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的實(shí)現(xiàn)里把所有實(shí) 時(shí)任務(wù)依次調(diào)用一次;將耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟,對(duì)應(yīng)于每個(gè)執(zhí)行步驟至少植入 一次該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用。
2. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于:計(jì)算所述耗時(shí)任務(wù)中各執(zhí)行步驟所 需要的時(shí)間,并根據(jù)各執(zhí)行步驟所需要的時(shí)間長(zhǎng)短而決定將實(shí)時(shí)任務(wù)調(diào)用函數(shù)植入所述耗 時(shí)任務(wù)的具體執(zhí)行步驟中。
3. 根據(jù)權(quán)利要求2所述的實(shí)現(xiàn)方法,其特征在于:所述耗時(shí)任務(wù)中各執(zhí)行步驟所需要 時(shí)間的計(jì)算通過時(shí)間統(tǒng)計(jì)代碼實(shí)現(xiàn)。
4. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于:所述耗時(shí)任務(wù)按照函數(shù)流程編寫功 能代碼。
5. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于:植入所述實(shí)時(shí)任務(wù)調(diào)用函數(shù)時(shí),保 證相鄰兩次實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用之間所耗費(fèi)的時(shí)間足夠短,以便保證實(shí)時(shí)任務(wù)的實(shí)時(shí) 性。
6. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于:在耗時(shí)任務(wù)需要等待實(shí)時(shí)任務(wù)的執(zhí) 行結(jié)果時(shí),反復(fù)調(diào)用所述實(shí)時(shí)任務(wù)調(diào)用函數(shù),以至所期待結(jié)果出現(xiàn)或者超時(shí)才繼續(xù)執(zhí)行后 續(xù)流程。
7. 根據(jù)權(quán)利要求1所述的實(shí)現(xiàn)方法,其特征在于:所述實(shí)時(shí)任務(wù)調(diào)用函數(shù)包括執(zhí)行以 下步驟:執(zhí)行定時(shí)任務(wù)、執(zhí)行發(fā)送報(bào)文、執(zhí)行接收并解析報(bào)文以及執(zhí)行喂狗。
8. 根據(jù)權(quán)利要求1至7中任一項(xiàng)所述的實(shí)現(xiàn)方法,其特征在于:所述單片機(jī)不支持實(shí) 時(shí)操作系統(tǒng)。
9. 一種單片機(jī)實(shí)時(shí)任務(wù)與耗時(shí)任務(wù)并行執(zhí)行的實(shí)現(xiàn)系統(tǒng),包括耗時(shí)任務(wù)模塊、實(shí)時(shí)任 務(wù)模塊和中斷任務(wù)模塊,其特征在于:所述耗時(shí)任務(wù)模塊位于系統(tǒng)最上層,所述實(shí)時(shí)任務(wù)模 塊位于系統(tǒng)中間層,中斷任務(wù)位于系統(tǒng)最底層; 所述實(shí)時(shí)任務(wù)模塊的所有實(shí)時(shí)任務(wù)打包成一個(gè)實(shí)時(shí)任務(wù)調(diào)用函數(shù),在該實(shí)時(shí)任務(wù)調(diào)用 函數(shù)的實(shí)現(xiàn)中把所有實(shí)時(shí)任務(wù)依次調(diào)用一次; 所述耗時(shí)任務(wù)模塊將耗時(shí)任務(wù)劃分為若干個(gè)執(zhí)行步驟,對(duì)應(yīng)于耗時(shí)任務(wù)執(zhí)行步驟至少 植入一次該實(shí)時(shí)任務(wù)調(diào)用函數(shù)的調(diào)用。
10. 根據(jù)權(quán)利要求9所述的實(shí)現(xiàn)系統(tǒng),其特征在于:所述實(shí)時(shí)任務(wù)模塊包括依次連接的 用于更新定時(shí)任務(wù)計(jì)數(shù)器的定時(shí)任務(wù)子模塊、用于發(fā)送報(bào)文的發(fā)送報(bào)文子模塊、用于接收 并解析報(bào)文的接收并解析報(bào)文子模塊和用于喂狗的喂狗子模塊。
【文檔編號(hào)】G06F9/38GK104102491SQ201410362872
【公開日】2014年10月15日 申請(qǐng)日期:2014年7月28日 優(yōu)先權(quán)日:2014年7月28日
【發(fā)明者】胡柏華 申請(qǐng)人:航天科工深圳(集團(tuán))有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1