• 
    <ul id="o6k0g"></ul>
    <ul id="o6k0g"></ul>

    一種SPARC平臺減少中斷響應抖動的技術制造技術

    技術編號:10316176 閱讀:222 留言:0更新日期:2014-08-13 17:36
    本發明專利技術公開了一種SPARC平臺減少中斷響應抖動的技術,步驟如下:1)建立SPARC平臺原子交換函數;2)實現內核路徑上寫全局變量訪問操作的中斷響應抖動減少技術;3)全局隊列訪問操作的中斷響應抖動減少技術;4)全局堆棧訪問操作的中斷響應抖動減少技術。本發明專利技術可以保證對全局變量以及全局隊列、全局堆棧等數據結構的讀寫訪問的一致性,而且所有臨界區都由7條SPARC平臺的匯編指令組成,關中斷的時間短且固定,能減少中斷響應的抖動,并提高平均中斷響應時間,減少外部中斷的丟失。

    【技術實現步驟摘要】
    一種SPARC平臺減少中斷響應抖動的方法
    本專利技術屬于嵌入式實時操作系統領域,具體地說,涉及一種SPARC平臺減少中斷響應抖動的方法。
    技術介紹
    SPARC是一種開源的RISC處理器架構技術,在國內廣泛的應用在航天領域。同時,隨著航天任務的復雜化,嵌入式實時操作系統在航天領域的應用也越來越廣泛。在嵌入式實時操作系統運行過程中,有兩條最重要且執行最頻繁的內核路徑:任務切換路徑和中斷處理路徑。在這兩條路徑上有大量對全局變量及全局數據結構進行讀寫的操作,為保證全局數據的一致性,現有的嵌入式實時操作系統通常采用關中斷的方法確保多個任務對共享資源的互斥訪問?,F有技術存在的主要問題:1、采用關中斷方法保護的臨界區,通常是由C語言實現的對全局變量及全局數據結構進行讀寫的操作,這些代碼長短不一(如使用GCC3.4.4不做優化,對代碼進行編譯,對全局變量進行寫的臨界區有10條匯編指令,隊列插入操作的臨界區有31條匯編指令,隊列刪除操作的臨界區有25條匯編指令),導致不同臨界區執行時間不同。另外臨界區的代碼強烈依賴編譯器,不同編譯器或同一編譯器的不同配置,都有可能導致臨界區代碼執行時間的變化(如使用GCC3.4.4–O2級優化對代碼進行編譯,對全局變量進行寫的臨界區有6條匯編指令,隊列插入操作的臨界區有15條匯編指令,隊列刪除操作的臨界區有17條匯編指令)。如下圖所示,臨界區代碼的長度不同,對中斷響應的延遲也就不同,這會造成中斷響應的延遲在不同的區間抖動,最終導致由中斷觸發的周期任務調度的抖動,這對實時性要求高的應用(如運動控制)的穩定性、可靠性都會造成負面影響。2、另外如果關中斷的時間過長,會造成系統對外部事件反應遲鈍,對多數實時系統而言,這會影響系統的中斷響應時間,使得系統的實時性得不到保證;另外頻繁的關中斷可能變更整個系統的時序,帶來的副作用包括丟失外部事件和時鐘漂移。
    技術實現思路
    本專利技術要解決的技術問題是克服上述缺陷,提供一種保證對全局變量以及全局隊列、全局堆棧等數據結構的讀寫訪問的一致性,而且所有臨界區都由7條SPARC平臺的匯編指令組成,關中斷的時間短且固定,能減少中斷響應的抖動,并提高平均中斷響應時間,減少外部中斷的丟失的SPARC平臺減少中斷響應抖動的方法。為解決上述問題,本專利技術所采用的技術方案是:一種SPARC平臺減少中斷響應抖動的方法,步驟如下:1)、建立SPARC平臺原子交換函數;2)、實現內核路徑上寫全局變量訪問操作的中斷響應抖動減少技術;3)、全局隊列訪問操作的中斷響應抖動減少技術;4)、全局堆棧訪問操作的中斷響應抖動減少技術。作為一種改進,所述建立SPARC平臺原子交換函數的算法如下:使用SPARC匯編指令實現了原子交換函數,該函數共由7條指令組成,其原型如下:intatomic_swap(intoldval,int*p_var,intnewval)返回值為int型,變量oldval存儲某一全局變量修改前的值,指針p_var指向該全局變量,而變量newval存儲將賦給該全局變量的值,返回0值表示用新值對全局變量原先的值進行了替換,返回非0值,表示未用新值對全局變量原先的值進行替換;所述原子交換函數的算法如下:1)、快速關中斷;2)、將oldval和p_var指向的地址處的值相減,將結果填入存放返回值的寄存器,如果為0,則繼續執行第3步,如果不為0,則跳轉到第4步;3)、將newval的值賦給p_var指向的地址;4)、打開中斷,函數返回。作為一種改進,所述實現內核路徑上寫全局變量訪問操作的中斷響應抖動減少技術的函數原型如下:voidwrite_global(int*pglb,intnew)其中變量pglb指向要進行寫操作的全局變量的地址,變量new指向將要寫入全局變量的值;所述實現內核路徑上寫全局變量訪問操作的中斷響應抖動減少技術算法如下:1)、取出指針pglb指向的全局變量的值,賦給臨時變量temp;2)、調用原子交換函數,格式為atomic_swap(temp,pglb,new);3)、如果原子交換函數返回值不為0,則調轉到第1步;如果返回值為0,則函數退出。作為一種改進,所述全局隊列訪問操作的中斷響應抖動減少技術首先是插入節點操作,其函數原型如下:voidinsert_queue(Node*pnew_node,constint&data,Queue*pqueue)隊列是先進先出的數據結構,插入操作總是在隊列尾進行,所以第一個參數給出了將插入節點的指針,第二個參數給出了新節點中存儲的數據,第三個參數是隊列指針;所述全局隊列訪問操作的中斷響應抖動減少技術算法如下:1)、將新節點數據域賦值為data,指針域賦值為null;2)、將當前隊尾節點賦值給臨時變量old_tail,并將old_tail指針域指向新創建的節點;3)、調用原子交換函數,格式為atomic_swap(old_tail,&(pqueue->tail),pnew_node);4)、如果原子交換函數返回值不為0,則跳轉到第2步;如果返回值為0,則函數退出。隊列的刪除操作在隊列頭進行,其函數原型如下:Node*delete_queue(Queue*pqueue)其中變量pqueue為指向隊列的指針;其隊列的刪除操作算法如下:1)、取出當前隊列的頭指針,賦值給臨時變量old_head;2)、將old_head的指針域賦給臨時變量pnext;3)、調用原子交換函數,格式為atomic_swap(old_head,&(pqueue->head),pnext);4)、如果原子交換函數返回值不為0,則跳轉到第1步;如果返回值為0,則返回old_head,函數退出。作為一種改進,所述全局堆棧訪問操作的中斷響應抖動減少技術,其原型為:voidpush(Node*pnode,constint&data,stack*pstack)第一個參數是指向將插入的節點的指針,第二個參數data為待壓入節點數據域存儲的數據,第三個參數為指向棧的指針;所述全局堆棧訪問操作的中斷響應抖動減少技術的算法如下:1)、將pnode數據域賦值為data;2)、用臨時變量old_top記錄當前棧頂節點的指針;3)、pnode的指針域指向old_top;4)、調用原子交換函數,其格式為atomic_swap(old_top,&(pstack->top),pnode);5)、如果原子交換函數返回值不為0,則跳轉到第1步;如果返回值為0,則函數退出;出棧操作的原型如下:Node*pop(stack*pstack)唯一的一個參數為指向棧的指針,出棧操作的算法如下:1)、用臨時變量old_top記錄當前棧頂指針;2)、將old_top的指針域賦值給臨時變量pnode;3)、調用原子交換函數,其格式為atomic_swap(old_top,pstack->top,pnode);4)、如果原子交換函數返回值不為0,則跳轉到第1步;如果返回值為0,則返回old_top,函數退出。由于采用了上述技術方案,與現有技術相比,本專利技術可以保證對全局變量以及全局隊列、全局堆棧等數據結構的讀寫訪問的一致性,而且所有臨界區都由7條SP本文檔來自技高網
    ...
    一種<a  title="一種SPARC平臺減少中斷響應抖動的技術原文來自X技術">SPARC平臺減少中斷響應抖動的技術</a>

    【技術保護點】
    一種SPARC平臺減少中斷響應抖動的技術,其特征在于:步驟如下:1)、建立SPARC平臺原子交換函數;2)、實現內核路徑上寫全局變量訪問操作的中斷響應抖動減少技術;3)、全局隊列訪問操作的中斷響應抖動減少技術;4)、全局堆棧訪問操作的中斷響應抖動減少技術。

    【技術特征摘要】
    1.一種SPARC平臺減少中斷響應抖動的方法,其特征在于:步驟如下:1)、建立SPARC平臺原子交換函數;2)、減少內核路徑上寫全局變量訪問操作的中斷響應抖動;3)、減少全局隊列訪問操作的中斷響應抖動;4)、減少全局堆棧訪問操作的中斷響應抖動,其中:步驟1)中的建立SPARC平臺原子交換函數的算法如下:使用SPARC匯編指令實現了原子交換函數,該函數共由7條指令組成,其原型如下:intatomic_swap(intoldval,int*p_var,intnewval)返回值為int型,變量oldval存儲某一全局變量修改前的值,指針p_var指向該全局變量,而變量newval存儲將要賦給該全局變量的值,返回0值表示用新值對全局變量原先的值進行了替換,返回非0值,表示未用新值對全局變量原先的值進行替換;所述原子交換函數的算法如下:11)、快速關中斷;12)、將oldval和p_var指向的地址處的值相減,將結果填入存放返回值的寄存器,如果為0,則繼續執行步驟13),如果不為0,則跳轉到步驟14);13)、將newval的值賦給p_var指向的地址;14)、打開中斷,函數返回;減少內核路徑上寫全局變量訪問操作的中斷響應抖動的函數原型如下:voidwrite_global(int*pglb,intnew)其中變量pglb指向要進行寫操作的全局變量的地址,變量new指向將要寫入全局變量的值;減少內核路徑上寫全局變量訪問操作的中斷響應抖動的算法如下:21)、取出指針pglb指向的全局變量的值,賦給臨時變量temp;22)、調用原子交換函數,格式為atomic_swap(temp,pglb,new);23)、如果原子交換函數返回值不為0,則調轉到步驟21);如果返回值為0,則函數退出;減少全局隊列訪問操作的中斷響應抖動首先是插入節點操作,其函數原型如下:voidinsert_queue(Node*pnew_node,constint&data,Queue*pqueue)隊列是先進先出的數據結構,插入操作總是在隊列尾進行,所以第一個參數給出了將要插入節點的指針,第二個參數給出了新節點中存儲的數據,第三個參數是隊列指針;減少全局隊列訪問操作的中斷響應抖動的算法如下:31)、將新節點數據域賦值為data,指針域賦值為null;32)、...

    【專利技術屬性】
    技術研發人員:卓保特周啟平呂紫旭趙英輝,
    申請(專利權)人:北京神舟航天軟件技術有限公司,
    類型:發明
    國別省市:北京;11

    網友詢問留言 已有0條評論
    • 還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。

    1
    主站蜘蛛池模板: 亚洲国产成人无码av在线播放| 亚洲色无码专区在线观看| 在线观看亚洲AV每日更新无码| 无码aⅴ精品一区二区三区浪潮| 亚洲国产成AV人天堂无码| 无码h黄肉3d动漫在线观看| 亚洲热妇无码AV在线播放| 亚洲午夜成人精品无码色欲| 精品久久久久久无码人妻热| 亚洲中文字幕久久无码| 亚洲AV中文无码字幕色三| 2020无码专区人妻系列日韩| 日韩精品无码一区二区三区 | 亚洲av无码一区二区三区网站| 无码精品人妻一区二区三区漫画| 国产午夜无码片在线观看影院| 西西午夜无码大胆啪啪国模 | 亚洲AV无码不卡在线观看下载| 熟妇无码乱子成人精品| 熟妇人妻系列av无码一区二区| 人妻av中文字幕无码专区| 欧洲人妻丰满av无码久久不卡| 永久免费av无码入口国语片| 免费无遮挡无码视频网站| 亚洲精品自偷自拍无码| 日韩精品人妻系列无码专区免费| 国产在线观看无码免费视频| 日韩A无码AV一区二区三区| 中日韩精品无码一区二区三区| 久久久久亚洲AV无码网站| 无码精品久久久久久人妻中字 | 亚洲第一极品精品无码久久| 亚洲国产91精品无码专区| 日韩av片无码一区二区三区不卡 | 亚洲中文字幕无码av| 99精品人妻无码专区在线视频区 | 亚洲精品97久久中文字幕无码| 蜜芽亚洲av无码一区二区三区| 亚洲av无码专区青青草原| 亚洲精品无码高潮喷水A片软| 人妻少妇精品无码专区动漫|