專利名稱:一種多線程訪問(wèn)間接寄存器的調(diào)度方法
技術(shù)領(lǐng)域:
本發(fā)明涉及光傳輸領(lǐng)域,提出了 一種多線程訪問(wèn)間接寄存器的調(diào)度方法。
背景技術(shù):
光傳輸在現(xiàn)代通信中的占有非常重要的地位,隨著通信:汰術(shù)的發(fā)展, 光通信設(shè)備功能越來(lái)越強(qiáng)大,相對(duì)的商用芯片功能也越來(lái)越復(fù)雜,但是由 于硬件資源的有限,很多商用芯片采用了大量的間接寄存器讀寫方式以節(jié) 約資源,這卻給嵌入式軟件系統(tǒng)埋下了炸彈。這里說(shuō)明一下間接寄存器的 讀寫方式,以PMC的芯片為例,間接寄存器的讀寫操作需要控制兩類寄 存器, 一類是控制寄存器, 一類是數(shù)據(jù)寄存器,在控制寄存器里面有三種 控制操作,第一種是讀/寫方式的控制操作,第二種是間接地址內(nèi)容的控 制操作,第三種是當(dāng)前從間接地址內(nèi)容里面讀/寫內(nèi)容是否完成的判斷控 制操作。目前SDH設(shè)備基本都是采用嵌入式系統(tǒng)來(lái)開發(fā)應(yīng)用軟件了 ,嵌入式 操作系統(tǒng)為我們提供了基本的任務(wù)調(diào)度方式.即采用基于優(yōu)先級(jí)的搶占式 方式來(lái)調(diào)度任務(wù),就會(huì)引發(fā)一個(gè)問(wèn)題。以兩個(gè)任務(wù)為例,低優(yōu)先級(jí)任務(wù)在 正在操作數(shù)據(jù)寄存器時(shí),高優(yōu)先級(jí)任務(wù)搶占了 CPU,重新操作了一次控 制寄存器和數(shù)據(jù)寄存器,然后再將CPU資源交還給低優(yōu)先級(jí)任務(wù),繼續(xù) 操作數(shù)據(jù)寄存器,從軟件角度來(lái)說(shuō)沒有任何問(wèn)題,但是從硬件角度就產(chǎn)生 問(wèn)題了,由于控制寄存器的內(nèi)容發(fā)生了改變,此時(shí)的數(shù)據(jù)寄存器內(nèi)容并不 是之前低優(yōu)先級(jí)任務(wù)所需要的數(shù)據(jù)寄存器內(nèi)容了 。現(xiàn)有技術(shù)解決該問(wèn)題的做法是使用信號(hào)量保存高低優(yōu)先級(jí)任務(wù)讀寫 的順序,才能解決該問(wèn)題,但是引進(jìn)的信號(hào)量可以同時(shí)供高低優(yōu)先級(jí)任務(wù) 使用,極不安全。 發(fā)明內(nèi)容本發(fā)明要解決的技術(shù)問(wèn)題是提供一種多線程訪問(wèn)間接寄存器的調(diào)度 方法,利用寄存器本身的原理性,在不使用信號(hào)量的前提下加以處理,可 以保證多線程訪問(wèn)間接寄存器不會(huì)訪問(wèn)錯(cuò)誤。為了解決上述問(wèn)題,本發(fā)明提供了 一種多線程訪問(wèn)間接寄存器的調(diào)度 方法,基于優(yōu)先級(jí)的搶占方式來(lái)調(diào)度任務(wù),由對(duì)數(shù)據(jù)寄存器以及控制寄存 器的操作來(lái)控制對(duì)所述間接寄存器的訪問(wèn),其中,在訪問(wèn)間接寄存器的當(dāng) 前優(yōu)先級(jí)任務(wù)被優(yōu)先級(jí)更高的任務(wù)搶占時(shí),首先暫4f當(dāng)前優(yōu)先級(jí)任務(wù),并 對(duì)當(dāng)前優(yōu)先級(jí)任務(wù)操作下的數(shù)據(jù)寄存器的值進(jìn)行保存,再調(diào)度所述數(shù)據(jù)寄存器以及控制寄存器對(duì)所述優(yōu)先級(jí)更高的任務(wù)進(jìn)行操作;當(dāng)所述優(yōu)先級(jí)更 高的任務(wù)完成后,將之前保存的數(shù)據(jù)寄存器的值重新寫入數(shù)據(jù)寄存器,恢 復(fù)數(shù)據(jù)寄存器環(huán)境,然后繼續(xù)完成對(duì)之前中斷的任務(wù)的操作;進(jìn)一步的,本發(fā)明所述的方法,其中,操作所述控制寄存器,選擇操 作才莫式以及間接地址;進(jìn)一步的,本發(fā)明所述的方法,其中,所述操作模式,包括讀操作 與寫4喿作;進(jìn)一步的,本發(fā)明所述的方法,其中,對(duì)所述間接寄存器設(shè)置延時(shí)標(biāo) 記位,讀取該延時(shí)標(biāo)記位為假時(shí),說(shuō)明所述間接寄存器被一任務(wù)占據(jù),硬 件操作在進(jìn)行中;讀取該延時(shí)標(biāo)記位為真時(shí),說(shuō)明所述間接寄存器硬件操 作中斷,當(dāng)前任務(wù)暫?;蛲瓿桑贿M(jìn)一步的,本發(fā)明所述的方法,其中,多線程訪問(wèn)間接寄存器中,對(duì) 當(dāng)前優(yōu)先級(jí)任務(wù)的讀操作,包括以下步驟(la)操作控制寄存器,選擇操作模式為讀操作、以及正確的間接地址;(2a)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(3a);
如果為真,則跳轉(zhuǎn)步驟(4a);(3a)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(2a);如果大于閥值, 則跳轉(zhuǎn)步驟(5a);(4a)操作數(shù)據(jù)寄存器,讀出值;(5a)當(dāng)前優(yōu)先級(jí)任務(wù)的讀操作結(jié)束;進(jìn)一步的,本發(fā)明所述的方法,其中,多線程訪問(wèn)間接寄存器中,優(yōu) 先級(jí)更高的任務(wù)搶占當(dāng)前優(yōu)先級(jí)任務(wù),執(zhí)行讀操作,包括以下步驟(lb)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(2b);如 果為真,則跳轉(zhuǎn)步驟(3b);(2b)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(lb);如果大于閥值, 則跳轉(zhuǎn)步驟(9b);(3b)將數(shù)據(jù)寄存器的值進(jìn)行保存;(4b)操作控制寄存器,選擇操作模式為讀操作、以及正確的間接地址;(5b)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(6b); 如果為真,則跳轉(zhuǎn)步驟(7b);(6b)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(5b);如果大于閥值, 則跳轉(zhuǎn)步驟(9b);(7b)操作數(shù)據(jù)寄存器,讀出值;(8b)恢復(fù)數(shù)據(jù)寄存器環(huán)境,將之前保存的數(shù)據(jù)寄存器的值重新寫入 數(shù)據(jù)寄存器;(9b)優(yōu)先級(jí)更高的任務(wù)的讀操作結(jié)束;進(jìn)一步的,本發(fā)明所述的方法,其中,多線程訪問(wèn)間接寄存器中,當(dāng) 前優(yōu)先級(jí)任務(wù)的寫操作,包括以下步驟(lc)操作數(shù)據(jù)寄存器,寫值;(2c)操作控制寄存器,選擇操作模式為寫操作,以及正確的間接地 址;(3c)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(4c); 如果為真,則跳轉(zhuǎn)步驟(5c);(4c)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(3c);如果大于閥值, 則跳轉(zhuǎn)步驟(5c);(5c)當(dāng)前優(yōu)先級(jí)任務(wù)的寫操作結(jié)束;進(jìn)一步的,本發(fā)明所述的方法,其中,多線程訪問(wèn)間接寄存器中,優(yōu) 先級(jí)更高的任務(wù)搶占當(dāng)前優(yōu)先級(jí)任務(wù),執(zhí)行寫操作,包括以下步驟(ld)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(2d); 如果為真,則跳轉(zhuǎn)步驟(3d);(2d)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(ld);如果大于閥值, 則跳轉(zhuǎn)步驟(9d);(3d)將數(shù)據(jù)寄存器的值進(jìn)行保存;(4d)操作數(shù)據(jù)寄存器,寫值;(5d)操作控制寄存器,選擇梯:作模式為寫操作、以及正確的間接地址;(6d)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(7d); 如果為真,則跳轉(zhuǎn)步驟(8d);(7d)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(6d);如果大于閥值; 則跳轉(zhuǎn)步驟(9d);(8d)恢復(fù)數(shù)據(jù)寄存器環(huán)境,將之前保存的數(shù)據(jù)寄存器的值重新寫入 數(shù)據(jù)寄存器;(9d)優(yōu)先級(jí)更高的任務(wù)的寫操作結(jié)束。采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,采用本發(fā)明所述方法,可以 避免多線程訪問(wèn)性能間接寄存器出現(xiàn)的硬件操作與軟件操作不一致的情 況。
圖1是本發(fā)明實(shí)施例中低優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的讀操作流程圖;圖2是本發(fā)明實(shí)施例中低優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的寫操作 流程圖;圖3是本發(fā)明實(shí)施例中高優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的讀操作 流程圖;圖4是本發(fā)明實(shí)施例中高優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的寫操作 流程圖。
具體實(shí)施方式
本發(fā)明為了解決傳統(tǒng)技術(shù)方案存在的弊端,通過(guò)以下具體實(shí)施例進(jìn)一 步闡述本發(fā)明所述的一種多線程訪問(wèn)間接寄存器的調(diào)度方法,以下對(duì)具體 實(shí)施方式進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。如圖1所示,為本發(fā)明實(shí)施例中低優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的 讀操作流程圖。多線程訪問(wèn)間接寄存器中,低優(yōu)先級(jí)任務(wù)的讀操作,包括 以下步驟步驟100,低優(yōu)先級(jí)任務(wù)的讀操作開始;步驟IOI,操作控制寄存器,選擇操作模式為讀操作、以及正確的間 接地址;步驟102,讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟103; 如果為真,則跳轉(zhuǎn)步驟104;步驟103,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟102;如果大于 閥值P,則跳轉(zhuǎn)步驟105;
步驟104,操作數(shù)據(jù)寄存器,讀出值; 步驟105,低優(yōu)先級(jí)任務(wù)的讀操作結(jié)束。如圖2所示,是本發(fā)明實(shí)施例中低優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的 寫操作流程圖。多線程訪問(wèn)間接寄存器中,低優(yōu)先級(jí)任務(wù)的寫操作,包括 以下步驟步驟200,低優(yōu)先級(jí)任務(wù)的寫操作開始; 步驟201,操作數(shù)據(jù)寄存器,寫值;步驟202,操作控制寄存器,選擇操作模式為寫操作,以及正確的間接 地址;步驟203,讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟204; 如果為真,則跳轉(zhuǎn)步驟205;步驟204,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟203;如果大于 閥值P,則跳轉(zhuǎn)步驟205;步驟205,低優(yōu)先級(jí)任務(wù)的寫操作結(jié)束。如圖3所示,為本發(fā)明實(shí)施例中高優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的 讀操作流程圖。多線程訪問(wèn)間接寄存器中,高優(yōu)先級(jí)任務(wù)搶占低優(yōu)先級(jí)任 務(wù),執(zhí)行讀操作,包括以下步驟步驟300,高優(yōu)先級(jí)任務(wù)的讀操作開始;步驟301,讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟302; 如果為真,則跳轉(zhuǎn)步驟303;步驟302,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟301;如果大于 閥值P,則跳轉(zhuǎn)步驟309;步驟303,保存數(shù)據(jù)寄存器值到一中間量;步驟304,操作控制寄存器,選擇操作模式為讀操作、以及正確的間
接地址;步驟305,讀取間接寄存器延時(shí)標(biāo)記位,如果為^f叚,則跳轉(zhuǎn)步驟306; 如果為真,則跳轉(zhuǎn)步驟307;步驟306,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟305;如果大于 閥值P,則跳轉(zhuǎn)步驟309;步驟307,操作數(shù)據(jù)寄存器,讀出值;步驟308,恢復(fù)數(shù)據(jù)寄存器環(huán)境,將該中間量的值寫入數(shù)據(jù)寄存器; 步驟309,高優(yōu)先級(jí)任務(wù)的讀操作結(jié)束。如圖4所示,是本發(fā)明實(shí)施例中高優(yōu)先級(jí)任務(wù)訪問(wèn)性能間接寄存器的 寫操作流程圖。多線程訪問(wèn)間接寄存器中,高優(yōu)先級(jí)任務(wù)搶占低優(yōu)先級(jí)任 務(wù),執(zhí)行寫操作,包括以下步驟步驟400,高優(yōu)先級(jí)任務(wù)的寫操作開始;步驟401,讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟402; 如果為真,則跳轉(zhuǎn)步驟403;步驟402,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟401;如果大于 閥值P,則跳轉(zhuǎn)步驟409;步驟403,保存控制數(shù)據(jù)寄存器值到一中間量;步驟404,操作數(shù)據(jù)寄存器,寫值;步驟405,操作控制寄存器,選擇操作模式為寫操作、以及正確的間 才妄地址;步驟406,讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟407; 如果為真,則跳轉(zhuǎn)步驟408;步驟407,如果讀取的次數(shù)小于閥值P,則跳轉(zhuǎn)步驟406;如果大于 閥值P;則跳轉(zhuǎn)步驟409;步驟408,恢復(fù)數(shù)據(jù)寄存器環(huán)境,將該中間量的值寫入數(shù)據(jù)寄存器;
步驟409,高優(yōu)先級(jí)任務(wù)的寫操作結(jié)束。假設(shè)A性能和B性能分別在不同的間接寄存器中,但共用 一組控制 寄存器和數(shù)據(jù)寄存器。并且A性能要在的優(yōu)先級(jí)任務(wù)a中讀取,B性能要 在高優(yōu)先級(jí)任務(wù)b中讀取,并且在a任務(wù)中讀取A性能的時(shí)候,當(dāng)剛操作 完控制寄存器的時(shí)候,被b任務(wù)搶占資源優(yōu)先讀取B性能。 ,操作如下第一步在a任務(wù)中,操作控制寄存器。 第二步此時(shí)任務(wù)a被任務(wù)b搶占。第三步任務(wù)b讀取延時(shí)標(biāo)記位為假(a任務(wù)的讀取A性能的硬件 操作還在繼續(xù))。第四步任務(wù)b再次讀取延時(shí)標(biāo)記位為真。第五步任務(wù)b保存數(shù)據(jù)寄存器的值到m_dwRegValue。第六步任務(wù)b操作控制寄存器,準(zhǔn)備讀取B性能。第七步任務(wù)b讀取延時(shí)標(biāo)記為真。第八步任務(wù)b操作數(shù)據(jù)寄存器,讀取B性能。第九步任務(wù)b恢復(fù)數(shù)據(jù)寄存器的值為m_dwRegValue。第十步任務(wù)b查詢B性能結(jié)束,交還CPU給任務(wù)a。第十一步任務(wù)a讀取延時(shí)標(biāo)記位為真。第十二步任務(wù)a操作數(shù)據(jù)寄存器,讀取A性能。第十三步任務(wù)a查詢A性能結(jié)束。假設(shè)A數(shù)據(jù)和B數(shù)據(jù)分別將被寫入不同的間接寄存器中,但寫入過(guò) 程要共用一組控制寄存器和數(shù)據(jù)寄存器。A數(shù)據(jù)要在的優(yōu)先級(jí)任務(wù)a中寫入,B數(shù)據(jù)要在高優(yōu)先級(jí)任務(wù)b中寫入,并且在a任務(wù)中寫入A數(shù)據(jù)的時(shí)候,當(dāng)剛操作完控制寄存器的時(shí)候,被b任務(wù)搶占資源優(yōu)先寫入B數(shù)據(jù)。
操作如下第一步在a任務(wù)中,操作控制寄存器。 第二步此時(shí)任務(wù)a^皮任務(wù)b搶占。第三步任務(wù)b讀取延時(shí)標(biāo)記位為假(a任務(wù)的寫入A數(shù)據(jù)的硬件 操作還在繼續(xù))。第四步任務(wù)b再次讀取延時(shí)標(biāo)記位為真。第五步任務(wù)b保存數(shù)據(jù)寄存器的值到m—dwRegValue。第六步任務(wù)b操作控制寄存器,準(zhǔn)備寫入B數(shù)據(jù)。第七步任務(wù)b讀耳又延時(shí)標(biāo)記為真。第八步任務(wù)b操作數(shù)據(jù)寄存器,寫入B數(shù)據(jù)。第九步任務(wù)b恢復(fù)數(shù)據(jù)寄存器的值為m—dwRegValue。第十步任務(wù)b寫入B數(shù)據(jù)結(jié)束,交還CPU給任務(wù)a。第十一步任務(wù)a讀取延時(shí)標(biāo)記位為真。第十二步任務(wù)a操作數(shù)據(jù)寄存器,寫入A數(shù)據(jù)。第十三步任務(wù)a寫入A數(shù)據(jù)結(jié)束。當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1、 一種多線程訪問(wèn)間接寄存器的調(diào)度方法,基于優(yōu)先級(jí)的搶占方式 來(lái)調(diào)度任務(wù),由對(duì)數(shù)據(jù)寄存器以及控制寄存器的操作來(lái)控制對(duì)所述間接寄 存器的訪問(wèn),其特征在于,在訪問(wèn)間接寄存器的當(dāng)前優(yōu)先級(jí)任務(wù)^皮優(yōu)先級(jí) 更高的任務(wù)搶占時(shí),首先暫停當(dāng)前優(yōu)先級(jí)任務(wù),并對(duì)當(dāng)前優(yōu)先級(jí)任務(wù)操作 下的數(shù)據(jù)寄存器的值進(jìn)行保存,再調(diào)度所述數(shù)據(jù)寄存器以及控制寄存器對(duì)所述優(yōu)先級(jí)更高的任務(wù)進(jìn)行操作;當(dāng)所述優(yōu)先級(jí)更高的任務(wù)完成后,將之 前保存的數(shù)據(jù)寄存器的值重新寫入數(shù)據(jù)寄存器,恢復(fù)數(shù)據(jù)寄存器環(huán)境,然 后繼續(xù)完成對(duì)之前中斷的任務(wù)的操作。
2、 如權(quán)利要求1所述的方法,其特征在于,操作所述控制寄存器, 選擇操作模式以及間接地址。
3、 如權(quán)利要求2所述的方法,其特征在于,所述操作模式,包括 讀操作與寫操作。
4、 如權(quán)利要求3所述的方法,其特征在于,對(duì)所述間接寄存器設(shè)置 延時(shí)標(biāo)記位,讀取該延時(shí)標(biāo)記位為假時(shí),說(shuō)明所述間接寄存器被一任務(wù)占 據(jù),硬件操作在進(jìn)行中;讀取該延時(shí)標(biāo)記位為真時(shí),說(shuō)明所述間接寄存器 硬件操作中斷,當(dāng)前任務(wù)暫?;蛲瓿伞?br>
5、 如權(quán)利要求4所述的方法,其特征在于,多線程訪問(wèn)間接寄存器 中,對(duì)當(dāng)前優(yōu)先級(jí)任務(wù)的讀操作,包括以下步驟(la)操作控制寄存器,選擇操作模式為讀操作、以及正確的間接地址;(2a)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(3a); 如果為真,則跳轉(zhuǎn)步驟(4a);(3a)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(2a);如果大于閥值, 則跳轉(zhuǎn)步驟(5a);(4a)操作數(shù)據(jù)寄存器,讀出值;(5a)當(dāng)前優(yōu)先級(jí)任務(wù)的讀操作結(jié)束。
6、 如權(quán)利要求4所述的方法,其特征在于,多線程訪問(wèn)間接寄存器 中,優(yōu)先級(jí)更高的任務(wù)搶占當(dāng)前優(yōu)先級(jí)任務(wù),執(zhí)行讀操作,包括以下步驟(lb)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(2b);如 果為真,則跳轉(zhuǎn)步驟(3b);(2b)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(lb);如果大于閥值, 則跳轉(zhuǎn)步驟(9b);(3b)將數(shù)據(jù)寄存器的值進(jìn)行保存;(4b)操作控制寄存器,選擇操作模式為讀操作、以及正確的間接地址;(5b)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(6b); 如果為真,則跳轉(zhuǎn)步驟(7b);(6b)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(5b);如果大于閥值, 則跳轉(zhuǎn)步驟(9b);(7b)操作數(shù)據(jù)寄存器,讀出值;(8b)恢復(fù)數(shù)據(jù)寄存器環(huán)境,將之前保存的數(shù)據(jù)寄存器的值重新寫入 數(shù)據(jù)寄存器;(9b)優(yōu)先級(jí)更高的任務(wù)的讀操作結(jié)束。
7、 如權(quán)利要求4所述的方法,其特征在于,多線程訪問(wèn)間接寄存器 中,當(dāng)前優(yōu)先級(jí)任務(wù)的寫操作,包括以下步驟(lc)操作數(shù)據(jù)寄存器,寫值;(2c)操作控制寄存器,選擇操作模式為寫操作,以及正確的間接地址;(3c)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(4c); 如果為真,則跳轉(zhuǎn)步驟(5c);(4c)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(3c);如果大于閥值, 則跳轉(zhuǎn)步驟(5c); (5C)當(dāng)前優(yōu)先級(jí)任務(wù)的寫操作結(jié)束。
8、如權(quán)利要求4所述的方法,其特征在于,多線程訪問(wèn)間接寄存器 中,優(yōu)先級(jí)更高的任務(wù)搶占當(dāng)前優(yōu)先級(jí)任務(wù),執(zhí)行寫操作,包括以下步驟(ld)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(2d); 如果為真,則跳轉(zhuǎn)步驟(3d);(2d)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(ld);如果大于閥值, 則跳轉(zhuǎn)步驟(9d);(3d)將數(shù)據(jù)寄存器的值進(jìn)行保存;(4d)操作數(shù)據(jù)寄存器,寫值;(5d)操作控制寄存器,選擇操作模式為寫操作、以及正確的間接地址;(6d)讀取間接寄存器延時(shí)標(biāo)記位,如果為假,則跳轉(zhuǎn)步驟(7d); 如果為真,則跳轉(zhuǎn)步驟(8d);(7d)如果讀取的次數(shù)小于閥值,則跳轉(zhuǎn)步驟(6d);如果大于閥值; 則跳轉(zhuǎn)步驟(9d);(8d)恢復(fù)數(shù)據(jù)寄存器環(huán)境,將之前保存的數(shù)據(jù)寄存器的值重新寫入 數(shù)據(jù)寄存器;(9d)優(yōu)先級(jí)更高的任務(wù)的寫操作結(jié)束。
全文摘要
本發(fā)明公開了一種多線程訪問(wèn)間接寄存器的調(diào)度方法,基于優(yōu)先級(jí)的搶占方式來(lái)調(diào)度任務(wù),由對(duì)數(shù)據(jù)寄存器以及控制寄存器的操作來(lái)控制對(duì)所述間接寄存器的訪問(wèn),其中,在訪問(wèn)間接寄存器的當(dāng)前優(yōu)先級(jí)任務(wù)被優(yōu)先級(jí)更高的任務(wù)搶占時(shí),首先暫停當(dāng)前優(yōu)先級(jí)任務(wù),并對(duì)當(dāng)前優(yōu)先級(jí)任務(wù)操作下的數(shù)據(jù)寄存器的值進(jìn)行保存,再調(diào)度所述數(shù)據(jù)寄存器以及控制寄存器對(duì)所述優(yōu)先級(jí)更高的任務(wù)進(jìn)行操作;當(dāng)所述優(yōu)先級(jí)更高的任務(wù)完成后,將之前保存的數(shù)據(jù)寄存器的值重新寫入數(shù)據(jù)寄存器,恢復(fù)數(shù)據(jù)寄存器環(huán)境,然后繼續(xù)完成對(duì)之前中斷的任務(wù)的操作。采用本發(fā)明所述方法,可以避免多線程訪問(wèn)性能間接寄存器出現(xiàn)的硬件操作與軟件操作不一致的情況。
文檔編號(hào)G06F9/46GK101145113SQ20071014986
公開日2008年3月19日 申請(qǐng)日期2007年9月10日 優(yōu)先權(quán)日2007年9月10日
發(fā)明者曦 楊 申請(qǐng)人:中興通訊股份有限公司