《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > VxWorks下MPC860的中斷處理機制及其應用
VxWorks下MPC860的中斷處理機制及其應用
嵌入式技術網
王明飛 張效義 李鷗 邢明
摘要: VxWorks下MPC860的中斷處理機制及其應用, 嵌入式實時操作系統VxWorks提供的中斷處理機制中斷延遲小,應用編程方便。MPC860是目前在網絡與通信領域應用非常廣泛的一款微處理器芯片。論文詳細分析了VxWorks及MPC860的中斷處理機制,闡述了中斷處理應用編程的過
Abstract:
Key words :

 嵌入式實時操作系統VxWorks提供的中斷處理機制中斷延遲小,應用編程方便。MPC860是目前在網絡與通信領域應用非常廣泛的一款微處理器芯片。論文詳細分析了VxWorks及MPC860的中斷處理機制,闡述了中斷處理應用編程的過程,并給出了應用實例。

        1 引言

  中斷是外部事件通知操作系統的最常用手段。中斷處理機制是計算機多任務環境運行的基礎,是系統實時性的保證[1]。

  VxWorks是美國Wind River公司于1983年設計開發的一種嵌入式實時操作系統。內核wind在任務調度、中斷處理及網絡處理等方面與其它嵌入式實時操作系統相比具有一定的優勢。特別是其提供的微秒級的中斷處理為VxWorks在嵌入式實時操作系統領域的旗艦地位奠定了基礎。

  Motorola公司推出的MPC860是目前在網絡與通信領域應用非常廣泛的一款微處理器芯片。高速的PowerPC內核,連同集成的網絡與通信外圍設備,為用戶提供了一個建立高端通信系統的全新系統解決方案。因其體系結構與通用的x86體系結構有很大的不同,理解其中斷處理機制及編寫相應的中斷處理程序成為系統移植與應用中的難點。

  2 VxWorks下的中斷處理機制

  2.1 中斷處理的實時性設計

  VxWorks采用中斷處理與普通任務分別在不同的棧中處理的中斷處理機制[2]。中斷處理程序運行于一種特殊的上下文環境中,沒有任務控制塊(Task Control Block, TCB),這使得中斷的產生只會引發一些關鍵寄存器的存儲而不會導致任務上下文的切換,從而減小了中斷延遲。

  VxWorks下的中斷服務程序(ISR, Interrupt Service Routine)只完成在最小時間內通告中斷的發生,而將其它的非實時處理盡量通過中斷與任務間的通信機制放在被引發的任務上下文中來完成,類似于Linux中的底半處理機制,這樣既可以避開中斷服務程序編寫的種種限制,又進一步縮小了中斷延遲。

  VxWorks在內核Wind中普遍采用被高度優化的信號量而不是關中斷來實現互斥訪問,這也對縮小中斷延遲有一定的貢獻。

  2.2 方便的中斷編程接口

  為了讓用戶方便的使用C語言編寫中斷服務程序來實現對中斷的控制,VxWorks在體系結構無關例程庫intLib和體系結構相關例程庫intArchLib中提供了系統接口函數[3]。對于應用程序員一般只需了解intLib庫即可,而BSP(Board Support Packet,板級支持包)程序員則還需要了解intArchLib庫。對例程庫的詳細描述請參見參考文獻[3]。

  接口函數中最常用的是在intLib庫中提供的中斷連接函數intConnect()。其函數原型為

  STATUS intConnect

 ?。?/p>

  VOIDFUNCPTR * vector,/*需要連接的外部中斷向量*/

  VOIDFUNCPTR routine,/*中斷發生時調用的中斷服務程序*/

  int parameter /*傳遞給中斷服務程序的參數*/

 ?。?/p>

  該函數將指定的中斷服務程序routine與指定的外部事件中斷向量vector相關聯。當指定的外部中斷事件發生時,該函數以指定的參數parameter為參數,調用中斷服務程序,完成相應的中斷服務。

  3 MPC860的中斷處理機制

  MPC860[4]有三個主要組成部分:嵌入式PowerPC內核(Core)、系統接口單元(SIU,System Interface Unit)和通信處理模塊(CPM, Communications Processor Module)。MPC860屬于雙處理器體系結構。嵌入式PowerPC內核是主處理單元,包括高速緩存(CACHE)和內存管理單元(MMU),它是一個RISC芯片,通常開發編譯后的程序指令都是由它執行。通信處理模塊內部也集成了一個RISC微處理器,對各種常用的通信模塊進行管理。由于CPM 分擔了嵌入式PowerPC內核的外圍工作任務,這種雙處理器體系結構功耗低于傳統體系結構的處理器。系統接口單元主要提供內外總線的接口,以及一些其它功能如SIU中斷的管理等。

  3.1 MPC860的中斷體系結構

  MPC860的中斷體系結構有三個模塊:PowerPC內核、SIU中斷控制器(SIU Interrupt Controller)和CPM中斷控制器(CPM Interrupt Controller)。如圖1所示。

  CPM中斷控制器對通信處理模塊的各個中斷進行管理,它接收12個外部中斷源和17個內部中斷源的中斷請求,經過屏蔽和判優處理后,把中斷請求送往SIU中斷控制器。CPM中斷控制器為每個中斷源分配了一個中斷向量號,并且分配了不同的優先級,還可以編程設定哪個中斷源為最高優先級。所有的CPM中斷在SIU中斷控制器中產生的中斷向量號都是一樣的。

圖1  MPC860中斷體系結構

  SIU中斷控制器負責管理8個外部中斷源(IRQ0~7)和8個內部中斷源(Level0~7),其中IRQ0一般用作不可屏蔽中斷,通過NMI向PowerPC內核請求中斷,其余15個通過外部中斷引腳IREQ請求中斷。對于8個內部中斷源,包括時間基準(TB)、周期性的中斷定時器(PIT)、實時時鐘(RTC)、PCMCIA以及CPM等,用戶可以通過對寄存器的操作,把它們設定為Level0~7中的任何一級。SIU中斷控制器已經設定了這16個中斷源之間的優先級,其中IRQ0的優先級最高,Level0其次,IRQ1再次,依此類推,Level7的優先級最低。

  PowerPC內核接收到中斷請求信號后,保存內核中斷現場,即將程序計數器保存到SRR0,機器狀態寄存器(MSR,Machine State Register)保存到SRR1,并改變MSR相關的信息,然后按異常向量表轉入外部中斷偏移地址處(0x500)執行最大長度為256個字節的SIU中斷服務程序,完成中斷服務。

  3.2 中斷處理流程

  MPC860的中斷處理流程如圖2所示。內核在收到中斷請求,保存中斷現場后執行SIU中斷服務程序。首先保存用戶中斷現場,保存關鍵寄存器到中斷堆棧,并設置堆棧入口,然后讀取產生SIU中斷的中斷向量號,根據中斷向量號判斷中斷源,再跳轉到各個中斷源相應的服務程序中執行。讀到的中斷向量號如果對應的是CPM,要轉入CPM中斷服務程序中執行。在CPM中斷服務程序中,首先內核將CPM中斷向量寄存器(CIVR,CPM Interrupt Vector Register)的IV位置1,然后讀取CPM中斷向量號,再根據中斷向量號調用對應的中斷服務程序。這樣,所有的CPM中斷源,在進入中斷處理程序之前,都經過了SIU中斷控制器和CPM中斷控制器兩級處理。另外,由于MPC860是RISC處理器,它有許多通用寄存器,在中斷服務程序中應該把影響到的關鍵寄存器壓入到堆棧中,在退出中斷服務程序之前再恢復。

圖2  MPC860的中斷處理流程

  4 中斷處理應用編程

  實際中斷處理應用編程主要包括兩部分工作:一是編寫中斷初始化程序,進行初始化和中斷連接;二是編寫中斷服務程序完成中斷服務功能。

  4.1 編寫中斷初始化程序

  中斷初始化程序的首要工作是初始化中斷寄存器,包括打開SIU中斷屏蔽寄存器(SIMASK,SIU Interrupt Mask)對應的屏蔽位,使能外部中斷。如果是SIU的外部中斷,應該初始化SIU中斷邊沿/電平寄存器(SIEL,SIU Interrupt Edge/Level Register),以設定中斷是下降沿觸發還是低電平觸發。如果使用了CPM中斷,還應該初始化CPM中斷配置寄存器(CICR,CPM Interrupt Configuration Register)和CPM中斷屏蔽寄存器(CIMR,CPM Interrupt Mask Register),以設定CPM在SIU中斷控制器中的中斷優先級,以及其內部的最高優先級中斷源。對于子塊可屏蔽中斷源,還應該打開對應的事件屏蔽寄存器。

  中斷初始化程序還必須把SIU中斷服務程序放到正確的位置。在VxWorks環境下調用intConnect()函數即將中斷服務程序與外部中斷源連接起來。

  4.2 編寫中斷服務程序

  由于中斷服務程序不是在規則的任務上下文中運行(它沒有任務控制塊,中斷處理程序共享一個堆棧等),中斷服務程序必須遵守一個基本約束:它必須不能調用可能直接或間接導致阻塞的函數。例如,ISR不能獲取信號量,但可以釋放信號量;ISR不能直接或間接調用內存操作函數malloc()和free();ISR不能通過VxWorks驅動來執行I/O操作,但VxWorks的管道驅動程序是一個例外;ISR也不能使用printf()進行打印,VxWorks專門為ISR打印信息設計了一個記錄功能,允許向系統輸出平臺打印文本信息。具體能被中斷服務程序調用的函數請參見參考文獻[5]。

  由于中斷服務通常涉及到任務級代碼,并且中斷服務程序受到種種限制,VxWorks支持在中斷級運行的中斷服務程序直接與一般任務進行通信。其通信機制有共享數據結構、信號量、消息隊列、管道、信號等。其中,信號量是VxWorks提高中斷服務程序與任務的合作性能的最好機制。理想情況下,一個中斷服務程序僅僅調用semGive()函數釋放一個信號量,發起一個任務來完成必要的處理[6]。

  5 中斷處理應用實例

  下面給出VxWorks下MPC860的中斷處理的應用實例。我們在某項目開發中利用中斷通知MPC860讀取外圍器件FIFO的數據。相關的硬件連接如圖3所示。

圖3 中斷處理應用實例的硬件連接

     其中,FIFO采用IDT公司的IDT72V3650芯片,FPGA采用ALTERA公司APEX20K系列的EP20K1500E器件。FIFO芯片提供了五個空滿狀態標志位,可根據不同的實際需求方便的通過FPGA編程向MPC860的IRQ2和IRQ1分別發送開始讀信號和停止讀信號,從而在時鐘的驅動下讀取FIFO數據。

  中斷應用程序的主要實現函數的代碼及注釋如下:

  /***初始化,中斷連接***/

  void tRdFifoInit(void)

  {

 ?。猄IEL(RegBase)|=0x28000000; /*設置外部中斷源IRQ1、IRQ2下降沿觸發*/

  startSem=semBCreate(SEM_Q_FIFO,SEM_EMPTY);

  /*創建二進制信號量,以便實現中斷與任務的通信*/

  intConnect(IV_IRQ1,(VOIDFUNCPTR)stopRdISR,NULL);

  intConnect(IV_IRQ2,(VOIDFUNCPTR)startRdISR,NULL);

  /*分別將外部中斷源與中斷服務程序相連接*/

  intEnable(IVEC_TO_INUM(IV_IRQ1)); intEnable(IVEC_TO_INUM(IV_IRQ2));

  /*分別使能外部中斷*/

 ?。?/p>

  /***開始讀FIFO中斷服務程序***/

  void startRdISR(void)

 ?。?/p>

  semGive(startSem);

  /*釋放信號量*/

  RdFlag=1;

  /*設置讀FIFO數據標志*/

 ?。猄IPEND(RegBase)=0x08000000;

  /*清除外部中斷源IRQ2的狀態位*/

 ?。?/p>

  /***停止讀FIFO中斷服務程序***/

  void stopRdISR(void)

 ?。?/p>

  RdFlag=0;

  /*禁止讀FIFO數據標志*/

 ?。猄IPEND(RegBase)=0x20000000;

  /*清除外部中斷源IRQ1的狀態位*/

  }

  /***按照中斷通知讀取FIFO數據***/

  void tRdFifo(void)

 ?。?/p>

  while(1)

 ?。?/p>

  semTake(startSem,WAIT_FOREVER);

  /*獲取信號量*/

  while(RdFlag)

 ?。?/p>

  …/*讀取FIFO數據*/

  }

 ?。?/p>

  }

     6 結束語

  嵌入式實時操作系統VxWorks提供的中斷處理機制中斷延遲小、用戶編程方便,被廣泛應用于實際工程中。MPC860的中斷體系結構是理解如PowerPC系列芯片等雙處理器體系結構的中斷處理機制的難點。本文在詳細分析兩者中斷處理機制的基礎上介紹了具體的開發實例。該實例已在TornadoⅡ 2.0.2版本上調試通過,并成功應用于某型網絡設備開發中。

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          99精品免费视频| 欧美日韩亚洲国产精品| 欧美日韩国产一级| 欧美人在线观看| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲一区在线直播| 欧美韩日一区| 久久一综合视频| 欧美日韩国产成人在线免费| 欧美一区二区在线看| 欧美亚洲成人精品| 久久精品日韩| 国产精品三区www17con| 亚洲自拍偷拍色片视频| 欧美日韩亚洲免费| 久久青草久久| 国产欧美日韩精品专区| 国产精品都在这里| 欧美日韩精品免费观看视频| 亚洲天堂免费在线观看视频| 亚洲手机成人高清视频| 一区二区三区国产在线| 亚洲美女电影在线| 欧美国产日韩二区| 91久久一区二区| 国产精品久久久久久av下载红粉| 麻豆成人在线观看| 亚洲伦理自拍| 国产亚洲午夜高清国产拍精品| 国产综合在线看| 欧美日韩国产丝袜另类| 亚洲精品久久久久久久久久久久久| 久久综合狠狠综合久久激情| 久久手机免费观看| 欧美激情视频免费观看| 国产精品久久久久7777婷婷| 亚洲欧洲日产国产网站| 欧美精品久久99久久在免费线| 欧美国产欧美亚洲国产日韩mv天天看完整| 国产精品mv在线观看| 欧美成人亚洲成人日韩成人| 激情视频一区二区三区| 玖玖视频精品| 国内一区二区三区在线视频| 国产精品美女久久福利网站| 依依成人综合视频| 亚洲无人区一区| 伊人影院久久| 欧美一区二区在线播放| 国产精品亚洲美女av网站| 国产日韩av一区二区| 欧美在线观看视频一区二区| 亚洲精品在线电影| 国产一区二区三区四区在线观看| 久久久噜噜噜久久中文字免| 国内精品国产成人| 亚洲国产日韩欧美在线图片| 国产精品网站在线观看| 亚洲国产精品欧美一二99| 裸体一区二区| 欧美亚洲网站| 在线观看欧美激情| 亚洲一区日本| 欧美一区二区免费| 欧美成人高清视频| 国产精品稀缺呦系列在线| 欧美高清视频| 亚洲精品影视在线观看| 亚洲图片欧美午夜| 欧美激情综合亚洲一二区| 亚洲午夜国产一区99re久久| 久久久噜噜噜久久狠狠50岁| 在线观看日韩| 国产日韩欧美a| 亚洲人成在线观看网站高清| 免费观看欧美在线视频的网站| 免费观看30秒视频久久| 在线视频精品一区| 男女精品网站| 亚洲欧美日韩爽爽影院| 国产乱码精品一区二区三| 国产精品久久久久久久久动漫| 亚洲娇小video精品| 99视频有精品| 美国三级日本三级久久99| 在线视频欧美一区| 欧美性做爰猛烈叫床潮| 亚洲精品极品| 久久亚洲综合色一区二区三区| 欧美日韩国产一级片| 午夜免费电影一区在线观看| 在线看欧美日韩| 国模套图日韩精品一区二区| 国内偷自视频区视频综合| 中日韩美女免费视频网址在线观看| 国产亚洲日本欧美韩国| 麻豆久久久9性大片| 久久夜色精品国产欧美乱| 欧美在线视频播放| 欧美日产国产成人免费图片| 久久久综合精品| 亚洲盗摄视频| 亚洲欧美中文另类| 国产精品福利网站| 欧美国产综合一区二区| 欧美另类视频在线| 日韩亚洲欧美成人一区| 久久精品99无色码中文字幕| 六月婷婷一区| 性欧美1819性猛交| 欧美精品午夜视频| 亚洲一区二区三区中文字幕| 国产精品美女久久福利网站| 亚洲国产日韩精品| 一区二区高清在线| 美脚丝袜一区二区三区在线观看| 99国产精品久久久| 久久精品视频va| 欧美日本网站| 一本一本a久久| 一区精品在线播放| 欧美视频不卡中文| 亚洲毛片视频| 欧美在线欧美在线| 免费成人黄色av| 蜜桃av一区二区三区| 模特精品在线| 亚洲午夜未删减在线观看| 国产日韩欧美三区| 欧美日韩一级视频| 国产午夜精品理论片a级大结局| 亚洲欧美日韩在线综合| 亚洲一区二区三区中文字幕| 亚洲欧美日本伦理| 欧美伦理在线观看| 亚洲欧美日韩人成在线播放| 韩国欧美国产1区| 亚洲精品欧美在线| 在线中文字幕一区| 亚洲欧美日韩中文在线制服| 亚洲二区在线| 亚洲毛片在线看| 欧美国产日韩一二三区| 久久精品亚洲国产奇米99| 国产欧美欧美| 亚洲成人在线网站| 欧美精品久久久久久久久久| 国产欧美在线播放| 极品裸体白嫩激情啪啪国产精品| 国产午夜精品在线| 亚洲午夜电影网| 亚洲人成啪啪网站| 91久久久久久| 欧美在线视频一区二区三区| 国产一区二区欧美| 欧美三级欧美一级| 亚洲伊人一本大道中文字幕| 国内综合精品午夜久久资源| 久久蜜桃香蕉精品一区二区三区| 欧美**人妖| 国产精品视频久久久| 亚洲视频高清| 乱人伦精品视频在线观看| 亚洲一区欧美| 国产精品嫩草久久久久| 国产精品二区三区四区| 亚洲福利视频网站| 国产午夜精品在线| 久久久激情视频| 伊人久久婷婷色综合98网| 国自产拍偷拍福利精品免费一| 欧美日韩一区在线观看视频| 国产丝袜一区二区三区| 欧美精品成人一区二区在线观看| 国产精品男gay被猛男狂揉视频| 红桃视频欧美| 欧美色欧美亚洲另类二区| 欧美成人午夜剧场免费观看| 国产精品人人做人人爽人人添| 欧美在线你懂的| 国产精品系列在线播放| 亚洲私人影院| 中国成人黄色视屏| 国产日韩欧美精品一区| 国产在线成人| 欧美在线观看视频| 欧美成人精品| 国产亚洲综合在线| 欧美电影在线免费观看网站| 欧美二区在线观看| 亚洲黄色av一区| 国产一区二区三区黄| 欧美精品亚洲精品| 中国日韩欧美久久久久久久久| 亚洲成人影音| 欧美精品18videos性欧美| 亚洲成人在线网站| 裸体丰满少妇做受久久99精品| 国产日韩一区二区三区| 亚洲一二区在线| 久久精品视频va| 欧美人与禽性xxxxx杂性| 亚洲一区二区三区四区中文| 亚洲一区视频| 国产精品久久久久影院色老大| 国产美女在线精品免费观看| 99精品热视频只有精品10| 久久成人av少妇免费| 在线观看日韩国产| 在线观看日韩av| 亚洲欧美精品suv| 一本久久a久久精品亚洲| 欧美日本高清一区| 欧美激情网友自拍| 国产精品美女久久久浪潮软件| 日韩天堂在线观看| 激情另类综合| 国产精品第十页| 亚洲一区三区视频在线观看| 国产一区免费视频| 国产中文一区二区三区| 一本色道久久综合精品竹菊| 久久另类ts人妖一区二区| 韩国视频理论视频久久| 亚洲视频一区二区在线观看| 小黄鸭精品aⅴ导航网站入口| 欧美日韩一级片在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 黄色成人av| 欧美一级欧美一级在线播放| 欧美色123| 免费短视频成人日韩| 欧美国产免费| 欧美午夜免费影院| 你懂的视频一区二区| 亚洲欧美国产va在线影院| 久久精品123| 国产精品午夜春色av| 精久久久久久| 欧美日韩中国免费专区在线看| 国产精品乱人伦一区二区| 欧美理论电影在线观看| 欧美日韩亚洲另类| 国产日韩欧美高清免费| 久久精品视频网| 久久视频在线看| 亚洲精品自在久久| 亚洲欧美中文另类| 午夜一区二区三区在线观看| 欧美一级精品大片| 国产区欧美区日韩区| 国产真实乱子伦精品视频| 亚洲国产精品一区二区尤物区| 国产精品美女久久久免费| 欧美日韩国产一区精品一区| 国产精品国产自产拍高清av王其| 欧美视频在线看| 中文一区字幕| 亚洲影音一区| 欧美一区二区免费观在线| 一区二区冒白浆视频| 欧美一区二区三区免费视频| 在线看无码的免费网站| 亚洲第一色中文字幕| 美女主播精品视频一二三四| 韩曰欧美视频免费观看| 国产日韩欧美在线视频观看| 欧美不卡一卡二卡免费版| 国产精品裸体一区二区三区| 国产精品毛片高清在线完整版| 欧美午夜精彩| 一本一本久久a久久精品综合妖精| 欧美高清视频| 欧美激情精品久久久六区热门| 美女脱光内衣内裤视频久久网站| 一本久久a久久免费精品不卡| 亚洲人成网站色ww在线| 国产精品日日摸夜夜添夜夜av| 欧美日韩一区二区三区在线视频| 国内精品美女av在线播放| 在线视频精品一| 亚洲欧洲一区| 欧美成人精精品一区二区频| 亚洲国产91精品在线观看| 欧美一区在线直播| 亚洲日本国产| 999在线观看精品免费不卡网站| 国产女人水真多18毛片18精品视频| 亚洲国产裸拍裸体视频在线观看乱了| 性欧美超级视频| 亚洲电影第1页| 亚洲在线视频观看| 欧美一级精品大片| 亚洲国产精品ⅴa在线观看| 久久精品亚洲乱码伦伦中文| 国产伦精品一区二区三区在线观看| 日韩视频在线观看免费| 香蕉av777xxx色综合一区| 久久久99久久精品女同性| 亚洲黄色av| 一区二区三区欧美亚洲| 久久成人精品电影| 久久午夜精品一区二区| 国产色视频一区| 欧美肥婆bbw| 久久精品视频在线播放| 亚洲承认在线| 亚洲永久视频| 在线看片欧美| 在线日韩av永久免费观看| 欧美精品一区三区在线观看| 欧美乱妇高清无乱码| 久久大香伊蕉在人线观看热2| 欧美激情va永久在线播放| 欧美在线观看网站| 亚洲精品午夜精品| 欧美午夜精品一区二区三区| 伊人春色精品| 香蕉成人啪国产精品视频综合网| 欧美人牲a欧美精品| 欧美成人中文字幕| 国产在线一区二区三区四区| 美女任你摸久久| 亚洲黄色毛片| 国内成人精品2018免费看| 久久精品亚洲一区二区| 免费毛片一区二区三区久久久| 亚洲精品久久久久中文字幕欢迎你|