<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > SPARC結(jié)構(gòu)與實時內(nèi)核的移植

          SPARC結(jié)構(gòu)與實時內(nèi)核的移植

          作者: 時間:2012-05-17 來源:網(wǎng)絡(luò) 收藏

          4.系統(tǒng)

          時鐘節(jié)拍

          對于一個多任務(wù)系統(tǒng),時鐘節(jié)拍是必不可少的。ERC32CPU提供2個定時器,根據(jù)系統(tǒng)硬件采用的晶振源頻率,可通過設(shè)置對應(yīng)定時器控制寄存器的計數(shù)值,通過產(chǎn)生一定周期的系統(tǒng)來實現(xiàn)時鐘節(jié)拍。對于時鐘節(jié)拍的處理子程序,所選內(nèi)核不同,其自帶子程序也不同。在定時到來,只需將子程序入口地址添加到中斷服務(wù)子程序中即可。

          中斷嵌套

          當在系統(tǒng)開發(fā)中需要不同優(yōu)先級中斷,并可能發(fā)生中斷嵌套的情況時,需要在進入中斷服務(wù)子程序之前設(shè)置中斷優(yōu)先級,然后打開Trap,以允許在較長的中斷服務(wù)子程序中響應(yīng)更高優(yōu)先級的中斷。在退出中斷服務(wù)子程序后,關(guān)閉Trap,將該中斷優(yōu)先級屏蔽掉,然后退出中斷。

          堆棧段

          在堆棧的管理上存在堆棧幀的概念,并且每個幀的分配與產(chǎn)生都對應(yīng)一個新的窗口和一個新的線程或者中斷。根據(jù)中斷的棧結(jié)構(gòu)和線程棧結(jié)構(gòu)的不同,可在程序初始化部分分配兩個堆棧段。一個堆棧段對應(yīng)普通線程的堆棧分配和管理,一個對應(yīng)中斷棧的分配和管理。這樣在每個段中各幀的大小一致,不會在 Overflow Trap和Underflow Trap時讀寫內(nèi)存出錯??梢酝ㄟ^增加兩個變量LEVEL,SKP來協(xié)調(diào)兩個堆棧段的使用。使用兩個堆棧的中斷嵌套服務(wù)子程序流程圖如圖4。

          5.總結(jié)

          結(jié)構(gòu)中比較復(fù)雜的部分就是的概念,但在使用中,效率也高很多。如果能了解的工作原理,并能正確使用Window flush操作,在軟件設(shè)計上將會得到高的可靠性。

          本文作者的創(chuàng)新點為,將能實現(xiàn)自動控制需求的小型uC/OS內(nèi)核移植到具有高可靠性結(jié)構(gòu)的ERC32 CPU。ERC32 CPU是專門針對航天應(yīng)用而設(shè)計的CPU,采用 V7指令集。航天工程的控制不像消費電子的控制那么復(fù)雜,但在可靠性和實時性方面要求比較苛刻,能夠移植滿足需求的小型內(nèi)核,如uC/OS到ERC32,在工程上有很大的應(yīng)用價值。

          參考文獻:

          1.The SPARC Architecture Manual Version 8,SPARC International,Inc.1998.

          2.Jean J.Labrosse,邵貝貝,嵌入式實時操作系統(tǒng)uC/OS-II(第二版),北京航空航天大學出版社

          3.Rad.Hard 32-bit SPARC Embedded Processor User Guide, Atmel Inc.2004

          4.陳繼榮,Linux操作系統(tǒng)實時性分析及改進策略,微計算機信息,2005,11期,67頁


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();