[發(fā)明專利]一種嵌入式平臺下的多任務(wù)運行方法有效
| 申請?zhí)枺?/td> | 202010326392.6 | 申請日: | 2020-04-23 |
| 公開(公告)號: | CN111538579B | 公開(公告)日: | 2023-02-03 |
| 發(fā)明(設(shè)計)人: | 唐漢釗;喬子龍;粟汝發(fā);王璞;王宇;徐源長 | 申請(專利權(quán))人: | 山東華芯半導(dǎo)體有限公司 |
| 主分類號: | G06F9/48 | 分類號: | G06F9/48;G06F9/50 |
| 代理公司: | 濟南泉城專利商標事務(wù)所 37218 | 代理人: | 趙玉鳳 |
| 地址: | 250101 山東省濟南市高新*** | 國省代碼: | 山東;37 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 嵌入式 平臺 任務(wù) 運行 方法 | ||
本發(fā)明公開一種嵌入式平臺下的多任務(wù)運行方法,本方法在內(nèi)存中為每一個任務(wù)分配獨立的棧空間,使各個任務(wù)運行過程互不干擾;某一任務(wù)占用CPU運行時,該任務(wù)的運行信息寫入CPU寄存器中,其他任務(wù)的運行信息存入對應(yīng)的棧中;運行中的任務(wù)通過主動暫停運行或者被動暫停運行的方式實現(xiàn)隨時暫停并切換至其他任務(wù),切換任務(wù)時,將CPU存儲器的值寫入被暫停業(yè)務(wù)對應(yīng)的棧中,保存被暫停任務(wù)的運行狀態(tài),然后選取下一項需要運行的任務(wù),將被選取任務(wù)對應(yīng)棧中的數(shù)據(jù)填入CPU寄存器中,使下一項任務(wù)在先前任務(wù)暫停的位置上繼續(xù)運行。本發(fā)明能在使用較少的處理器資源的情況下實現(xiàn)多任務(wù)并行處理。
技術(shù)領(lǐng)域
本發(fā)明涉及計算機軟件領(lǐng)域,具體涉及一種嵌入式平臺下的多任務(wù)運行方法。
背景技術(shù)
現(xiàn)有的嵌入式平臺下,一般需要借助操作系統(tǒng)才滿足多任務(wù)并行處理需求,這就要求開發(fā)人員必須熟悉操作系統(tǒng)基本原理、整體結(jié)構(gòu),掌握操作系統(tǒng)移植及任務(wù)開發(fā)流程,增加了大量額外負擔,明顯降低了開發(fā)效率。同時由于操作系統(tǒng)的通用性,會在處理過程中引入額外的冗余功能,加重CPU運行負擔,降低了工作性能。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題是提供一種嵌入式平臺下的多任務(wù)運行方法,使用較少的處理器資源,避免了調(diào)用操作系統(tǒng)實現(xiàn)多任務(wù)并行處理所帶來的冗繁開發(fā)過程。
為了解決所述技術(shù)問題,本發(fā)明采用的技術(shù)方案是:一種嵌入式平臺下的多任務(wù)運行方法,本方法在進入C語言main函數(shù)后,通過子函數(shù)調(diào)用的方式搭建任務(wù)環(huán)境并進行任務(wù)調(diào)度過程,無需在進入main函數(shù)之前對CPU啟動代碼進行任何修改;
本方法在內(nèi)存中為每一個任務(wù)分配獨立的棧空間,使各個任務(wù)運行過程互不干擾;
某一任務(wù)占用CPU運行時,該任務(wù)的運行信息寫入CPU寄存器中,其他任務(wù)的運行信息存入對應(yīng)的棧中;
運行中的任務(wù)通過主動暫停運行或者被動暫停運行的方式實現(xiàn)隨時暫停并切換至其他任務(wù),切換任務(wù)時,將CPU存儲器的值寫入被暫停業(yè)務(wù)對應(yīng)的棧中,保存被暫停任務(wù)的運行狀態(tài),然后選取下一項需要運行的任務(wù),將被選取任務(wù)對應(yīng)棧中的數(shù)據(jù)填入CPU寄存器中,使下一項任務(wù)在先前任務(wù)暫停的位置上繼續(xù)運行。
進一步的,為實現(xiàn)任務(wù)管理,本方法設(shè)有任務(wù)數(shù)據(jù)記錄模塊,用于存儲任務(wù)的基本信息,每個任務(wù)數(shù)據(jù)記錄模塊的內(nèi)容包括任務(wù)函數(shù)入口地址、任務(wù)對應(yīng)的棧起始地址、任務(wù)對應(yīng)的棧棧頂位置,任務(wù)數(shù)據(jù)記錄模塊的最大數(shù)量決定了同步執(zhí)行的任務(wù)數(shù)量,每個任務(wù)數(shù)據(jù)記錄模塊與其對應(yīng)任務(wù)分配的棧空間一一對應(yīng)。
進一步的,為實現(xiàn)多任務(wù)的加載和運行,本方法設(shè)計3個運行函數(shù),分別為:任務(wù)數(shù)據(jù)記錄模塊初始化函數(shù)、任務(wù)注冊函數(shù)、任務(wù)調(diào)度函數(shù);
任務(wù)數(shù)據(jù)記錄模塊初始化函數(shù)用于清空所有任務(wù)數(shù)據(jù)記錄模塊,并將所有任務(wù)數(shù)據(jù)記錄模塊放入空閑隊列中,并置工作隊列為空隊列;如果啟動被動暫停任務(wù)模式,則同時負責初始化定時器;
任務(wù)注冊函數(shù)負責從空閑隊列中獲取一個任務(wù)數(shù)據(jù)記錄模塊并填入任務(wù)信息,然后將該任務(wù)數(shù)據(jù)記錄模塊加入到工作隊列頭部,同時在該任務(wù)數(shù)據(jù)記錄模塊對應(yīng)的棧中,按照CPU寄存器出棧要求寫入包括任務(wù)函數(shù)入口地址、棧指針位置在內(nèi)的運行信息;
任務(wù)調(diào)度函數(shù)在任務(wù)切換時將CPU寄存器的內(nèi)容存入當前任務(wù)棧,根據(jù)工作隊列的排列順序,找到下一個任務(wù)數(shù)據(jù)記錄模塊,并根據(jù)該任務(wù)數(shù)據(jù)記錄模塊提供的棧位置將任務(wù)運行信息寫入CPU寄存器,觸發(fā)CPU執(zhí)行該項任務(wù),如果當前任務(wù)已處于工作隊列尾部,則返回工作隊列頭部進行查找。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于山東華芯半導(dǎo)體有限公司,未經(jīng)山東華芯半導(dǎo)體有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202010326392.6/2.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:游動閥以及強制關(guān)閉防卡抽油泵
- 下一篇:一種共振消音窗





