• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      VxWorks下龍芯3A中斷控制技術(shù)的研究

      2017-07-25 20:47:18徐騫
      現(xiàn)代電子技術(shù) 2017年14期

      徐騫

      摘 要: 中斷控制是嵌入式操作系統(tǒng)VxWorks正常運行的基礎(chǔ),是其具有高實時性的保障。針對VxWorks系統(tǒng)下中斷控制驅(qū)動開發(fā)難度大、應(yīng)用廣等特點,首次提出了VxWorks系統(tǒng)中斷控制驅(qū)動分層模型?;谠撃P吞岢隽薞xWorks下中斷控制驅(qū)動軟件的設(shè)計方法,并基于該方法實現(xiàn)了VxWorks下國產(chǎn)龍芯3A處理器中斷控制驅(qū)動軟件的開發(fā)。最后提出一種優(yōu)化龍芯3A中斷控制性能的方法,大大縮短了中斷響應(yīng)時間,提高了系統(tǒng)的性能。

      關(guān)鍵詞: 中斷控制; VxWorks; 龍芯3A; 驅(qū)動軟件

      中圖分類號: TN876?34; TP311.1 文獻標(biāo)識碼: A 文章編號: 1004?373X(2017)14?0036?04

      Abstract: Interrupt control is the base of normal running of the embedded operating system VxWorks and is a safeguard of high real?time performance. A drive hierarchical model of interrupt control on VxWorks is proposed aiming at the characteristics that the drive development of interrupt control on the embedded operating system VxWorks has great difficulty and its wide application. According to this model, a design method of interrupt control drive software based on VxWorks is put forward. The interrupt control drive software of Loongson 3A have was developed successfully with the method. A method to optimize the Loongson 3A interrupt control performance is presented. It greatly shortens the interrupt response time, and improves the performance of the system.

      Keywords: interrupt control; VxWorks; Loongson 3A; drive software

      VxWorks操作系統(tǒng)是風(fēng)河公司推出的一種嵌入式實時操作系統(tǒng), 以其高性能、高可靠性、高實時性等特點成為實時操作系統(tǒng)中最具特色的系統(tǒng)之一。其廣泛地應(yīng)用在通信、軍事、航空、航天等高端技術(shù)及實時性、擴展性要求極高的領(lǐng)域中[1]。龍芯系列處理器芯片是龍芯中科技術(shù)有限公司研發(fā)的具有自主知識產(chǎn)權(quán)的處理器芯片,產(chǎn)品包括龍芯1號、龍芯2號和龍芯3號三個系列[2]。龍芯3A處理器是龍芯3號處理器的第一款產(chǎn)品,主要面向高性能計算機、服務(wù)器和高端桌面應(yīng)用,是一款實現(xiàn)64位MIPS Ⅲ指令集的高性能四核處理器芯片,片內(nèi)集成了HT控制器、PCI/PCIX等接口,最高工作主頻[3]可以達到1 GHz。VxWorks作為一個實時嵌入式操作系統(tǒng),通常采用中斷的方式來滿足系統(tǒng)實時性的要求。因此,中斷控制驅(qū)動的實現(xiàn)對于VxWorks操作系統(tǒng)的開發(fā)是至關(guān)重要的[4]。本文在研究VxWorks系統(tǒng)中斷控制技術(shù)的基礎(chǔ)之上,描述了VxWorks下龍芯3A中斷控制驅(qū)動的設(shè)計方法和實現(xiàn)過程,并對其中斷控制性能進行了優(yōu)化。

      1 龍芯3A的中斷控制

      龍芯3A的中斷通路示意圖如圖1所示。南橋的中斷控制器在接收到外部設(shè)備的中斷申請后,發(fā)出中斷請求,經(jīng)過PCIE根控制器轉(zhuǎn)化后發(fā)送到HT總線上,然后被HT控制器得知,HT控制器根據(jù)接收到的中斷信息來設(shè)置自己的中斷狀態(tài)寄存器,之后按照既定的配置發(fā)出中斷信號至CPU的中斷路由配置模塊,最后按照中斷路由模塊的設(shè)置將中斷信號送到某個CPU核上[5]。

      2 VxWorks下的中斷控制

      2.1 中斷控制驅(qū)動分層模型

      VxWorks下中斷控制有一個層次的劃分,一些中斷控制器的輸入是其他中斷控制器的輸出,因此可以將中斷控制驅(qū)動抽象為三層,具體情況如圖2所示。

      圖2中,第一層為CPU指定的中斷控制驅(qū)動,與CPU的體系架構(gòu)密切相關(guān),主要包括CPU一級與中斷相關(guān)的配置,如中斷路由等;第二層中斷控制器直接與第一層CPU中斷路由模塊相連,并作為其中斷輸入,最常見的如8259中斷控制器[5];第三層中斷控制作為第二層的中斷輸入,一般與外部設(shè)備密切相關(guān),主要實現(xiàn)了中斷服務(wù)程序的掛接和中斷的響應(yīng)處理,如傳統(tǒng)的PCI設(shè)備中斷控制就屬于該層[6]。

      2.2 中斷控制驅(qū)動設(shè)計方法

      基于VxWorks下中斷控制驅(qū)動分層模型,本文提出了VxWorks下中斷控制驅(qū)動的設(shè)計方法,主要包括中斷路由配置、初始化中斷控制器、掛接中斷服務(wù)程序和中斷響應(yīng)處理四個部分,具體流程如圖3所示。

      3 龍芯3A中斷控制驅(qū)動的實現(xiàn)

      根據(jù)VxWorks下中斷控制驅(qū)動的設(shè)計方法,可以將龍芯3A中斷控制驅(qū)動的實現(xiàn)主要分為四個步驟,配置中斷路由、初始化中斷控制器、掛接中斷程序以及中斷響應(yīng)處理。

      3.1 配置中斷路由

      龍芯3A下通過配置中斷路由模塊來確定中斷信號最終分配到哪個CPU核上[7?8],中斷路由模塊示意圖如圖4所示。

      圖4中,中斷路由配置模塊有32個外部中斷源,以統(tǒng)一方式進行管理。龍芯3A集成了4個處理器核,任意一個中斷源都可以通過軟件配置選擇期望中斷的目標(biāo)處理器核,進一步中斷源可以選擇路由到處理器核4個中斷INT0~INT3中的任意一個,即圖4所示的CORE0~CORE3的IP0~IP3。在32個中斷源中,最重要的是與HT總線相關(guān)的中斷源,龍芯3A下絕大部分外部中斷都是通過HT中斷引腳輸入至CPU,通過設(shè)置相關(guān)的中斷路由寄存器可以對這些中斷源進行路由配置,部分相關(guān)代碼如下:

      STATUS sysIntRouteSet()

      { /*將HT0相關(guān)中斷路由至CPU CORE0 INT1*/

      MIPS_SB64 _IO_base_regs_addr(HT0_INT0_ADDR,0x21);

      MIPS_SB64 _IO_base_regs_addr(HT0_INT1_ADDR,0x21);

      /*將HT1相關(guān)中斷路由至CPU CORE0 INT1*/

      MIPS_SB64 _IO_base_regs_addr(HT1_INT0_ADDR,0x21);

      MIPS_SB64 _IO_base_regs_addr(HT1_INT1_ADDR,0x21);

      …}

      3.2 初始化中斷控制器

      龍芯3A下,中斷控制器位于南橋上,默認配置為8259模式,初始化中斷控制器主要包括設(shè)置中斷控制器和使能中斷控制器兩個部分。

      3.2.1 設(shè)置中斷控制器

      龍芯3A中斷控制器可用的中斷輸入有8個,INTA#~

      INTH#,輸出的中斷號為irq0~irq15,每個中斷輸入與輸出中斷號的映射關(guān)系可以通過設(shè)置相關(guān)寄存器來完成,如圖5所示。

      圖5中,可以先往0xC00寫入一個值表示配置哪個中斷輸入,然后寫0xC01表示將中斷輸入映射至哪個irq號。例如要把INTC#對應(yīng)的中斷號設(shè)置為irq6,則操作為:先往0xC00寫入2,再往0xC01寫入1即可。

      3.2.2 使能中斷控制器

      中斷配置寄存器都是以位的形式對相應(yīng)的中斷線進行控制。中斷控制器使能的配置主要有三個寄存器:Intenset,Intenclr和Inten。Intenset設(shè)置中斷使能,Intenset寄存器寫1的位對應(yīng)的中斷被使能;Intenclr清除中斷使能,Intenclr寄存器寫1的位對應(yīng)的中斷被清除;Inten寄存器讀取當(dāng)前各中斷使能的情況。

      3.3 掛接中斷服務(wù)程序

      VxWorks系統(tǒng)下,需要實現(xiàn)類函數(shù)func{vxbIntCtlrConnect}為硬件配置指定的中斷并搭接相應(yīng)的中斷服務(wù)程序以及中斷輸入,該函數(shù)主要通過調(diào)用系統(tǒng)函數(shù)intCtrlISRAdd()完成相關(guān)工作[9]。龍芯3A中斷控制驅(qū)動中實現(xiàn)的類函數(shù)名為vxbMipsSbIntCtlrConnect,其部分代碼如下:

      LOCAL STATUS vxbMipsSbIntCtlrConnect()

      { …

      /* 獲取中斷輸入并確認其有效 */

      if(ERROR == intCtlrPinFind(pDev,index,pIntCtlr,&isrHandle))

      return (ERROR);

      /*為指定的中斷分配中斷服務(wù)程序和參數(shù)*/

      if (intCtlrISRAdd(&pVxbPMipsSbIntCtlrDrvCtrl?>isrHandle, inputPin,pIsr, pArg) != OK)

      return (ERROR);

      … }

      3.4 中斷響應(yīng)處理

      龍芯3A處理中斷的流程,從外部中斷請求到內(nèi)核軟件對中斷的處理,其過程都是一樣的,如圖6所示。

      中斷發(fā)生時,CPU會設(shè)置Cause寄存器的Excode域及相關(guān)的IP位[10]。進而進入軟件處理過程,軟件通過查詢Excode域來確定是哪一種類型的異常,并選擇使用何種異常處理例程。如果是外部硬件中斷,就會進入相應(yīng)的中斷分發(fā)函數(shù)。中斷分發(fā)函數(shù)再根據(jù)Cause寄存器的IP位來進行一級中斷分發(fā),然后再根據(jù)中斷號的位域來進行二次分發(fā),最后執(zhí)行具體的中斷操作處理程序[11]。

      4 驅(qū)動測試與優(yōu)化

      4.1 驅(qū)動測試

      基于龍芯3A的硬件平臺,對中斷控制驅(qū)動進行測試,能夠成功運行VxWorks系統(tǒng),如圖7所示。

      4.2 驅(qū)動優(yōu)化

      在驅(qū)動開發(fā)的設(shè)置中斷控制器環(huán)節(jié),默認配置情況下,龍芯3A平臺的設(shè)備中斷輸入與中斷號的映射關(guān)系如表1所示。

      從表1中可以看出,中斷號irq6對應(yīng)的中斷輸入過于集中,即掛接在中斷輸入INTC上的設(shè)備過多,這樣會導(dǎo)致系統(tǒng)中斷響應(yīng)的時間過長,從而影響系統(tǒng)的性能。可以在驅(qū)動軟件設(shè)置控制器的環(huán)節(jié)對其進行優(yōu)化,將其中的USB設(shè)備包括OHCI和EHCI進行分流,將這些設(shè)備映射到其他中斷號上。修改后的軟件經(jīng)過測試,系統(tǒng)的中斷響應(yīng)時間大大縮短,性能顯著提升,測試結(jié)果如表2所示。

      5 結(jié) 語

      本文提出一種VxWorks系統(tǒng)中斷控制驅(qū)動分層模型,基于該模型給出了VxWorks下中斷控制驅(qū)動軟件的設(shè)計方法,并通過該方法實現(xiàn)了VxWorks下國產(chǎn)龍芯3A處理器中斷控制驅(qū)動軟件的開發(fā)。另外,本文還提出了一種優(yōu)化VxWorks下龍芯3A中斷控制性能的方法,通過該方法可以大大縮短系統(tǒng)中斷響應(yīng)時間,提高系統(tǒng)的性能。目前,VxWorks下龍芯3A中斷控制驅(qū)動軟件已成功應(yīng)用于某通信系統(tǒng)項目中,在應(yīng)用的過程中,驅(qū)動程序工作穩(wěn)定,性能可靠,滿足實際應(yīng)用的需求。

      參考文獻

      [1] 陳懷民,王哲,程鵬飛,等.VxWorks下設(shè)備驅(qū)動程序開發(fā)技術(shù)研究[J].現(xiàn)代電子技術(shù),2015,38(10):38?41.

      [2] HU Weiwu,ZHANG Fuxin,LI Zusong. Microarchitecture of the Godson?2 processor [J]. Journal of computer science and technology,2005, 20(2): 243?249.

      [3] 中科院計算技術(shù)研究所.龍芯3A處理器數(shù)據(jù)手冊[M].北京:龍芯中科技術(shù)服務(wù)中心有限公司,2010.

      [4] 王迪.基于X86體系結(jié)構(gòu)VxWorksSMP調(diào)度和中斷機制研究與優(yōu)化[D].長沙:國防科技大學(xué),2009.

      [5] 李祖松,許先超,胡偉武,等.龍芯2號處理器的同時多線程設(shè)計[J].計算機學(xué)報,2009,32(11):2265?2273.

      [6] 徐立松,于淼,李佩玥,等.基于VxWorks的VME從板驅(qū)動設(shè)計與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(6):79?82.

      [7] 金浩,韓江洪,李陽銘.基于ARM的嵌入式系統(tǒng)中斷處理機制研究[J].現(xiàn)代電子技術(shù),2005,28(22):1?3.

      [8] 周啟平,張揚.VxWorks下設(shè)備驅(qū)動程序及BSP開發(fā)指南[M].北京:中國電力出版社,2004.

      [9] 付月生,王麗.基于VxBus的驅(qū)動程序架構(gòu)分析[J].計算技術(shù)與自動化,2012,31(2):98?102.

      [10] Wind River. VxWorks device driver developer′s guide Vlolume2 [M]. US: Wind River, 2008.

      [11] Wind River. VxWorks architecture supplement, 6.7 [M]. US: Wind River, 2008.

      盘锦市| 泰兴市| 乌鲁木齐县| 蒲城县| 锦州市| 米泉市| 黑水县| 台湾省| 明星| 平湖市| 河间市| 郴州市| 泸西县| 太保市| 共和县| 江阴市| 葫芦岛市| 三江| 仁寿县| 舒城县| 宜丰县| 绍兴市| 登封市| 江源县| 喀喇沁旗| 桂平市| 丘北县| 玉田县| 大厂| 七台河市| 嵊泗县| 双江| 青冈县| 乐亭县| 微山县| 集安市| 登封市| 永城市| 滦平县| 得荣县| 惠东县|