[發明專利]單片機實時任務與耗時任務并行執行的實現方法和系統有效
| 申請號: | 201410362872.2 | 申請日: | 2014-07-28 |
| 公開(公告)號: | CN104102491B | 公開(公告)日: | 2017-07-14 |
| 發明(設計)人: | 胡柏華 | 申請(專利權)人: | 深圳航天工業技術研究院有限公司 |
| 主分類號: | G06F9/44 | 分類號: | G06F9/44;G06F9/38 |
| 代理公司: | 深圳市睿智專利事務所44209 | 代理人: | 郭文姬,羅興元 |
| 地址: | 518000 廣東省深圳市南*** | 國省代碼: | 廣東;44 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 單片機 實時 任務 耗時 并行 執行 實現 方法 系統 | ||
技術領域
本發明涉及單片機的程序運行管理,特別是與單片機的實時任務與耗時任務的協調有關。
背景技術
實時任務是指不可阻塞、不可拖延和響應及時的任務,通常包括通信協議報文處理、定時任務及喂狗等,這類任務處理函數非??焖?,運行時間短。耗時任務是指有內在處理邏輯、有特定執行順序、且需要耗費較長時間才能執行完成的任務,這類任務屬于應用層次,不要求實時性,但必須保證執行的順序。
現有單片機環境中通常使用兩種方式實現實時任務和耗時任務的并行執行。一種使用RTOS(實時操作系統),由實時操作系統提供中斷級別的分時多任務,程序中只需調用RT庫提供的API創建新任務,即可實現實時任務和耗時任務的并行運行。另一種不使用RTOS,參見圖2,其是把耗時任務原始執行邏輯分解成若干個耗時較小的執行步驟1、2…N;參見圖1,其在入口main()函數中使用無限循環,實時任務的處理大致包括定時任務、發送報文、接收并解釋報文和喂狗等;參見圖3,每次循環只調用耗時任務的一個步驟,下次循環調用下一個步驟,以此在不影響系統實時響應的基礎上模擬出耗時任務也在并行運行的效果。
在有條件的單片機上,例如有足夠大的RAM(隨機存取存儲器)和存儲空間的情況下,第一選擇都是使用RTOS,畢竟由庫提供的多任務環境極大地減少了編寫多任務程序的難度和復雜度,尤其是調試代碼時指令執行邏輯清晰,調用棧跟蹤方便,很容易根據調用上下文查錯和糾錯,但由于涉及到任務調度、TCB(任務控制塊)數據分配及數據同步處理等因素,需要占用額外的內存和處理器資源,也相應增加了同步處理的復雜性。
而且由于成本的因素,存在大量如下的單片機類型:一種是存儲空間非常有限,比如:只有幾K字節甚至幾百字節的RAM,無法滿足RTOS所需要的基本存儲需求;另一種是單片機廠商未提供對應的RTOS。對于這樣的單片機類型,只能選擇任務分解方式提供模擬多任務效果,這種方式必須打亂程序邏輯結構,且需要增加額外的變量空間來記住任務的當前執行步驟,在下一個循環周期能從記憶的執行步驟中恢復狀態以便繼續執行剩余的步驟;此方式會明顯增加程序邏輯的復雜度,狀態轉換極易出錯,且由于完全丟失了調用上下文關系,導致出錯時難以確定故障來源,增加了糾錯和維護的成本。
發明內容
本發明要解決的技術問題在于避免現有技術中無法使用RTOS的單片機軟件的情況下,而所存在的實時和耗時任務執行需要占用額外的內存和處理器資源、同步處理復雜,或者程序邏輯復雜、狀態轉換容易出錯、糾錯和維護成本高等不足之處,而提出一種單片機實時任務與耗時任務并行執行的實現方法。
針對上述要解決的技術問題,本發明的技術方案如下:
一種單片機實時任務與耗時任務并行執行的實現方法,包括以下步驟:將所有實時任務打包成一個實時任務調用函數,在該實時任務調用函數的實現里把所有實時任務依次調用一次;將耗時任務劃分為若干個執行步驟,對應于每個執行步驟至少植入一次該實時任務調用函數的調用。
進一步地,計算所述耗時任務中各執行步驟所需要的時間,并根據各執行步驟所需要的時間長短而決定將實時任務調用函數植入所述耗時任務的具體執行步驟中。
進一步地,所述耗時任務中各執行步驟所需要時間的計算通過時間統計代碼實現。
進一步地,所述耗時任務按照函數流程編寫功能代碼。
進一步地,植入所述實時任務調用函數時,保證相鄰兩次實時任務調用函數的調用之間所耗費的時間足夠短,以便保證實時任務的實時性。
進一步地,在耗時任務需要等待實時任務的執行結果時,反復調用所述實時任務調用函數,以至所期待結果出現或者超時才繼續執行后續流程。
進一步地,所述實時任務調用函數包括執行一下步驟:執行定時任務、執行發送報文、執行接收并解析報文以及執行喂狗。
進一步地,所述單片機不支持實時操作系統。
一種單片機實時任務與耗時任務并行執行的實現系統,包括耗時任務模塊、實時任務模塊和中斷任務模塊,所述耗時任務模塊位于系統最上層,所述實時任務模塊位于系統中間層,中斷任務位于系統最底層;所述實時任務模塊的所有實時任務打包成一個實時任務調用函數,在該實時任務調用函數的實現中把所有實時任務依次調用一次;所述耗時任務模塊將耗時任務劃分為若干個執行步驟,對應于耗時任務執行步驟至少植入一次該實時任務調用函數的調用。
進一步地,所述實時任務模塊包括依次連接的用于更新定時任務計數器的定時任務子模塊、用于發送報文的發送報文子模塊、用于接收并解析報文的接收并解析報文子模塊和用于喂狗的喂狗子模塊。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于深圳航天工業技術研究院有限公司,未經深圳航天工業技術研究院有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201410362872.2/2.html,轉載請聲明來源鉆瓜專利網。





