亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于龍芯2F平臺下Vxworks移植的研究與實現(xiàn)

        2014-08-15 20:59:21郭勇等
        科技視界 2014年18期

        郭勇等

        【摘 要】本文簡單介紹了VxWorks實時操作系統(tǒng)和龍芯2F處理器,對基于龍芯2F平臺的VxWorks系統(tǒng)移植進行了分析,并詳細介紹了移植內(nèi)容,包括文件的配置、中斷管理、PCI庫的實現(xiàn)和驅(qū)動程序等方面詳細。

        【關鍵詞】龍芯2F;VxWorks;BSP;系統(tǒng)移植

        0 引言

        VxWorks是美國WindRiver公司推出的一種嵌入式實時操作系統(tǒng),以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術(shù)及實時性要求極高的領域中。

        龍芯系列處理器是中國科學院計算所自主開發(fā)的國產(chǎn)處理器系,龍芯2F微處理器是64位MIPS 指令集的通用RISC處理器,其最高工作頻率為1GHZ[1],具有高性能、低功耗等特點。現(xiàn)有的龍芯平臺大都基于Linux操作系統(tǒng),但是在工業(yè)控制、高性能嵌入式等領域,對實時性、定制性的要求很高,因此VxWorks系統(tǒng)才是比較理想的選擇。

        本文首先明確移植的基本思路,然后分別從中斷分級管理性維護、地址空間的訪問擴展、PCI設備的讀寫機制和驅(qū)動程序開發(fā)與配置的建立等幾個方面來展開相關的工作。

        1 BVxWorks移植分析

        1.1 VxWorks移植的主要內(nèi)容

        VxWorks主要由三部分組成:BSP、微內(nèi)核及I/O系統(tǒng),BSP( Board Support Package)是板級支持包,是介于主板硬件和操作系統(tǒng)之間的一層,包括硬件初始化、中斷處理、時鐘管理、MMU等功能.在龍芯2F平臺上移植VxWorks,主要就是完成板級支持包BSP的開發(fā).

        1.2 VxWorks啟動流程分析與移植思路

        與X86的BIOS不同,龍芯2開發(fā)板的BIOS采用了PMON,可以通過網(wǎng)絡或硬盤直接加載ELF格式的VxWorks映像文件到內(nèi)存中運行。對可下載型的VxWorks映像文件,說明如下[2]。

        SysInit()為VxWorks映像的入口函數(shù),它由匯編語言編寫。SysInit()通過對CPU內(nèi)部各種控制與狀態(tài)寄存器的設置來使得CPU具有確定的工作方式和穩(wěn)定的狀態(tài)等,然后跳到c語言函數(shù)usrInit()。

        usrInit()函數(shù)主要進行外圍硬件初始化,為下載VxWorks內(nèi)核映像做初始準備,主要包括cache庫初始化、系統(tǒng)中斷向量初始化、目標板硬件初始化等,最后調(diào)用kernelInit()。

        kernelInit()為由風河vxWorks庫文件封裝的,功能為提取kernel并運行,使得后期的初始化能夠以kernel下運行的任務來完成。該任務名為tRootTask,它執(zhí)行的方式類似于usrRoot。

        針對龍芯2F開發(fā)板,usrInit()調(diào)用的cacheLibInit()、sysHwInit()、sysHwInit2()等函數(shù)是與硬一些主要的硬件初始化函數(shù)。一部分處理器由于有第三方支持的BSP,可以使用戶方便的使用。而對于龍芯2F,由于其為國產(chǎn)處理器,則通常需要自己建立龍芯2F 專用的BSP。

        通常情況下BSP開發(fā)的流程是,先實現(xiàn)一個最小化的VxWorks內(nèi)核,向其中添加定時器、串口設備、中斷控制器等基本驅(qū)動程序,使得VxWorks系統(tǒng)基本可用,然后在此基礎上添加其他設備,最終滿足目標需求.本文進行龍芯2F平臺的BSP開發(fā)也是基于該流程。

        2 龍芯2F平臺的VxWorks移植

        2.1 Config.h與MakeFile文件的配置

        為了使Pmon能夠直接加載VxWorks,需要在BSP 包的MakeFile與Config.h件中修改VxWorks映像文件的入口地址,使其在Pmon支持的加載地址范圍內(nèi)。Config.h文件還涵蓋了龍芯2F的所有包含文件和定義,需要對其修改.修改Config.h文件如下:

        #define ROM_BASE_ADRS 0xbfc00000

        #define ROM_TEST_ADRS 0xbfc00000

        #define ROM_SIZE 0x00100000

        #define ROM_HIGH_ADRS 0x bfd00000

        #define ROM_LOW_ADRS 0x 00100000

        中,ROM_BASE_ADRS表示ROM的基地址,ROM_TEST_ADRS表示初始化啟動代碼存放在ROM中的起始地址,ROM_SIZE表示ROM 的大小,若存儲空間大小為8Mbit,則應該定義為為0x00100000.ROM_HIGH_ADRS表示復制BooTROM 到RAM 所使用的目標地址,ROM_LOW_ADRS表示RAM中的VxWorks運行的起始地址。

        此外還要修改MakeFile文件,如CPU類型號,選擇編譯工具,附加編譯選項等。應注意要保證MakeFile和ConFig.h中ROM和RAM宏定義中地址一致等。

        2.2 中斷管理

        龍芯處理器在它的Cause寄存器中有8個獨立的中斷位,分別對應IP1-IP8,當中斷發(fā)生觸發(fā)異常,異常處理函數(shù)讀取Cause寄存器的EXCODE域為0,判斷異常為中斷產(chǎn)生,然后讀取Cause寄存器IP位判斷中斷來自哪個引腳[3-4]。

        VxWorks通過intPrioTable[]來管理MIPS的一級中斷,intPrioTable[]表項數(shù)據(jù)類型為PRIO_TABLE,根椐本課題實際應用,intPrioTable[]數(shù)組設計如下。

        PRIO_TABLE intPrioTable[] =

        {

        {CAUSE_SW1, (ULONG) IV_SWTRAP0_VEC, 0x000100, 0},

        {CAUSE_SW2, (ULONG) IV_SWTRAP1_VEC, 0x000200, 0},

        {CAUSE_IP3, (ULONG) sysFeiInt, 0x000400, 1},

        {CAUSE_IP4, (ULONG) sysSerialprint, 0x000800, 36},

        {CAUSE_IP5, (ULONG) NULL, 0x001000, 0},

        {CAUSE_IP6, (ULONG) NULL, 0x002000, 0},

        {CAUSE_IP7, (ULONG) sysNetInt, 0x004000, 40},

        {CAUSE_IP8, (ULONG) IV_TIMER_VEC, 0x008000, 0},

        };

        2.3 PCI庫的實現(xiàn)

        在Vxworks的硬件初始化函數(shù)sysHwInit()中對PCI庫進行初始化。對于龍芯2而言,PCI采用配置機制0,讀寫函數(shù)具體由sysPciConfigRead()和sysPciConfigWrite()來實現(xiàn),通過PCI總線號,PCI設備號,PCI功能號,按傳入的字節(jié)寬度,實現(xiàn)對PCI配置空間的寄存器地址進行讀寫操作。PCI庫初始化如下:

        pci Config LibInit (PCI_MECHANISM_0, ULONG) sysPciConfigRead, ULONG)sysPciConfigWrite,NONE);sysPciConfigRead()和sysPciConfigWrite()基本實現(xiàn)見[4]。Vxworks中實現(xiàn)PCI資源(I/O端口地址、PCI Memory地址、中斷號)的自動分配可以通過sysPciAutoConfig ()接口來實現(xiàn)。

        2.4 串口驅(qū)動程序開發(fā)

        龍芯2F平臺的啟動過程中,需要對串口設備初始化.普通多模式串行驅(qū)動程序存放在target/src/drv/sio目錄下.此目錄中包括了很多常見的串口設備的驅(qū)動源文件,如i8250SIO.c和nsl16550sio.c等等,同時還包含了templateSio.c模板文件.龍芯2F中的UART串口設備兼容NS 16550,因此可以直接使用nsl16550sio.c作為串口驅(qū)動.如果需要添加特殊串口設備時,需要先在模版templateSio.c上創(chuàng)建驅(qū)動程序,然后修改BSP的syslib.c或sysSerial.c文件,以使它們包括所需的驅(qū)動程序.由于本文龍芯2F平臺的所用硬件均為普通的常用設備,可同樣按照上述方式添加與配置.

        3 結(jié)束語

        針對不同的用途和需求,龍芯2F的硬件平臺配置也各不相同,但Vxworks移植的方法是類似的.本文詳細研究了龍芯2F平臺下的Vxworks移植方法,并在龍芯2F開發(fā)板上驗證了其可行性,一定程度上可以拓展龍芯系列在高性能嵌入式等領域的應用范圍。

        【參考文獻】

        [1]龍心.中國科學院計算技術(shù)研究所.2F處理器用戶手冊[Z].2008.

        [2]王金剛,譯.Wind River.VxWorks BSP開發(fā)人員指南[M].北京:清華大學出版社,2003.

        [3]Wind River Ststem,Inc,VxWorks BSP Developers Guide [Z] ,2008.

        [4]趙傳良,張福新,陶品,等,譯.Dominic Sweetman MIPS處理器設計透視[M]. 北京:北京航空航天大學出版社,2005.

        [責任編輯:薛俊歌]

        {CAUSE_SW2, (ULONG) IV_SWTRAP1_VEC, 0x000200, 0},

        {CAUSE_IP3, (ULONG) sysFeiInt, 0x000400, 1},

        {CAUSE_IP4, (ULONG) sysSerialprint, 0x000800, 36},

        {CAUSE_IP5, (ULONG) NULL, 0x001000, 0},

        {CAUSE_IP6, (ULONG) NULL, 0x002000, 0},

        {CAUSE_IP7, (ULONG) sysNetInt, 0x004000, 40},

        {CAUSE_IP8, (ULONG) IV_TIMER_VEC, 0x008000, 0},

        };

        2.3 PCI庫的實現(xiàn)

        在Vxworks的硬件初始化函數(shù)sysHwInit()中對PCI庫進行初始化。對于龍芯2而言,PCI采用配置機制0,讀寫函數(shù)具體由sysPciConfigRead()和sysPciConfigWrite()來實現(xiàn),通過PCI總線號,PCI設備號,PCI功能號,按傳入的字節(jié)寬度,實現(xiàn)對PCI配置空間的寄存器地址進行讀寫操作。PCI庫初始化如下:

        pci Config LibInit (PCI_MECHANISM_0, ULONG) sysPciConfigRead, ULONG)sysPciConfigWrite,NONE);sysPciConfigRead()和sysPciConfigWrite()基本實現(xiàn)見[4]。Vxworks中實現(xiàn)PCI資源(I/O端口地址、PCI Memory地址、中斷號)的自動分配可以通過sysPciAutoConfig ()接口來實現(xiàn)。

        2.4 串口驅(qū)動程序開發(fā)

        龍芯2F平臺的啟動過程中,需要對串口設備初始化.普通多模式串行驅(qū)動程序存放在target/src/drv/sio目錄下.此目錄中包括了很多常見的串口設備的驅(qū)動源文件,如i8250SIO.c和nsl16550sio.c等等,同時還包含了templateSio.c模板文件.龍芯2F中的UART串口設備兼容NS 16550,因此可以直接使用nsl16550sio.c作為串口驅(qū)動.如果需要添加特殊串口設備時,需要先在模版templateSio.c上創(chuàng)建驅(qū)動程序,然后修改BSP的syslib.c或sysSerial.c文件,以使它們包括所需的驅(qū)動程序.由于本文龍芯2F平臺的所用硬件均為普通的常用設備,可同樣按照上述方式添加與配置.

        3 結(jié)束語

        針對不同的用途和需求,龍芯2F的硬件平臺配置也各不相同,但Vxworks移植的方法是類似的.本文詳細研究了龍芯2F平臺下的Vxworks移植方法,并在龍芯2F開發(fā)板上驗證了其可行性,一定程度上可以拓展龍芯系列在高性能嵌入式等領域的應用范圍。

        【參考文獻】

        [1]龍心.中國科學院計算技術(shù)研究所.2F處理器用戶手冊[Z].2008.

        [2]王金剛,譯.Wind River.VxWorks BSP開發(fā)人員指南[M].北京:清華大學出版社,2003.

        [3]Wind River Ststem,Inc,VxWorks BSP Developers Guide [Z] ,2008.

        [4]趙傳良,張福新,陶品,等,譯.Dominic Sweetman MIPS處理器設計透視[M]. 北京:北京航空航天大學出版社,2005.

        [責任編輯:薛俊歌]

        {CAUSE_SW2, (ULONG) IV_SWTRAP1_VEC, 0x000200, 0},

        {CAUSE_IP3, (ULONG) sysFeiInt, 0x000400, 1},

        {CAUSE_IP4, (ULONG) sysSerialprint, 0x000800, 36},

        {CAUSE_IP5, (ULONG) NULL, 0x001000, 0},

        {CAUSE_IP6, (ULONG) NULL, 0x002000, 0},

        {CAUSE_IP7, (ULONG) sysNetInt, 0x004000, 40},

        {CAUSE_IP8, (ULONG) IV_TIMER_VEC, 0x008000, 0},

        };

        2.3 PCI庫的實現(xiàn)

        在Vxworks的硬件初始化函數(shù)sysHwInit()中對PCI庫進行初始化。對于龍芯2而言,PCI采用配置機制0,讀寫函數(shù)具體由sysPciConfigRead()和sysPciConfigWrite()來實現(xiàn),通過PCI總線號,PCI設備號,PCI功能號,按傳入的字節(jié)寬度,實現(xiàn)對PCI配置空間的寄存器地址進行讀寫操作。PCI庫初始化如下:

        pci Config LibInit (PCI_MECHANISM_0, ULONG) sysPciConfigRead, ULONG)sysPciConfigWrite,NONE);sysPciConfigRead()和sysPciConfigWrite()基本實現(xiàn)見[4]。Vxworks中實現(xiàn)PCI資源(I/O端口地址、PCI Memory地址、中斷號)的自動分配可以通過sysPciAutoConfig ()接口來實現(xiàn)。

        2.4 串口驅(qū)動程序開發(fā)

        龍芯2F平臺的啟動過程中,需要對串口設備初始化.普通多模式串行驅(qū)動程序存放在target/src/drv/sio目錄下.此目錄中包括了很多常見的串口設備的驅(qū)動源文件,如i8250SIO.c和nsl16550sio.c等等,同時還包含了templateSio.c模板文件.龍芯2F中的UART串口設備兼容NS 16550,因此可以直接使用nsl16550sio.c作為串口驅(qū)動.如果需要添加特殊串口設備時,需要先在模版templateSio.c上創(chuàng)建驅(qū)動程序,然后修改BSP的syslib.c或sysSerial.c文件,以使它們包括所需的驅(qū)動程序.由于本文龍芯2F平臺的所用硬件均為普通的常用設備,可同樣按照上述方式添加與配置.

        3 結(jié)束語

        針對不同的用途和需求,龍芯2F的硬件平臺配置也各不相同,但Vxworks移植的方法是類似的.本文詳細研究了龍芯2F平臺下的Vxworks移植方法,并在龍芯2F開發(fā)板上驗證了其可行性,一定程度上可以拓展龍芯系列在高性能嵌入式等領域的應用范圍。

        【參考文獻】

        [1]龍心.中國科學院計算技術(shù)研究所.2F處理器用戶手冊[Z].2008.

        [2]王金剛,譯.Wind River.VxWorks BSP開發(fā)人員指南[M].北京:清華大學出版社,2003.

        [3]Wind River Ststem,Inc,VxWorks BSP Developers Guide [Z] ,2008.

        [4]趙傳良,張福新,陶品,等,譯.Dominic Sweetman MIPS處理器設計透視[M]. 北京:北京航空航天大學出版社,2005.

        [責任編輯:薛俊歌]

        丰满人妻妇伦又伦精品国产| 亚洲精品在线一区二区| av免费不卡一区二区| 999国产精品999久久久久久| 97色伦综合在线欧美视频| 白嫩少妇激情无码| 97人妻无码免费专区| 邻居少妇太爽在线观看| 青青草在线免费视频播放| 免费无码高潮流白浆视频| 欧美v亚洲v日韩v最新在线| 亚洲中文字幕巨乳人妻| 亚洲av男人免费久久| 日本一区二区三区视频免费观看| 日本丰满熟妇videossex一| 最近中文字幕mv在线资源| 国内精品久久久久国产盗摄| 国产黄色一级到三级视频| 日本人妻伦理在线播放 | 91桃色在线播放国产| 色熟妇人妻久久中文字幕 | 亚洲国产精彩中文乱码av| 67194熟妇在线永久免费观看 | 国产午夜精品一区二区三区嫩草| 亚洲av之男人的天堂| 成在线人免费视频播放| 日本不卡视频一区二区| 男女猛烈无遮挡免费视频| 失禁大喷潮在线播放| 久久久精品2019免费观看| 亚洲av熟女少妇一区二区三区| 亚洲 欧美 综合 在线 精品| 永久免费观看国产裸体美女| 亚洲欧美日韩精品久久亚洲区色播| 视频一区二区免费在线观看| 日本中文一区二区在线观看| 99久久国产综合精品五月天| 国产综合第一夜| 熟女不卡精品久久av| 精品一区二区三区在线视频| 全免费a级毛片免费看网站|