国产精品美女久久久免费,国产69堂一区二区三区在线观看,亚洲精品国产精品,亚洲成熟丰满熟妇高潮xxxxx

網站首頁

HOME

關于我們

ABOUT US

產品展示

PRODUCT

新聞中心

NEWS

成功案例

CASE

下載中心

DOWNLOAD

人才招聘

RECRUIT

在線留言

MESSAGE

聯系我們

CONTACT US

    技術文章
    聯系我們
    西安航普電子有限責任公司
    電話:029-81870107
    郵箱:hangpudianzi@163.com
    網址:www.baoyucn.com
    公司地址:西安市電子四路西京三號2號樓17層
     
     
    技術文章
    龍芯3A平臺Vxworks移植的研究和實現
    更新時間:2017-09-07 13:16:07    點擊:1677次
    龍芯3A平臺Vxworks移植的研究和實現
    王 雷,樊曉椏,王黨輝
    (西北工業大學計算機學院,陜西西安710129)
    摘 要:龍芯3A處理器具有高性能低功耗的優點,在高性能計算、個人桌面應用、工業控制、高性能嵌入式等領域
    都有廣闊的應用前景.目前龍芯系列平臺大都是基于Linux系統,但在工業控制、高性能嵌入式等領域,高實時性
    和高可靠性的VxWorks才是比較理想的選擇.在分析了VxWorks移植的主要內容基礎上,詳細研究了龍芯3A的
    VxWorks移植方法.針對具體工業應用,設計了一種基于龍芯3A的工控平臺,并實現了對該平臺的VxWorks移
    植.經過在龍芯3A開發板上的驗證是可行的.
    關鍵詞:龍芯3A;VxWorks系統;板級支持包BSP;系統移植
    中圖分類號:TP316     文獻標識碼:A     文章編號:1000-7180(2012)02-0086-05
    Research?。幔睿洹。桑恚穑欤澹恚澹睿簟。铮妗。郑祝铮颍耄蟆。校铮颍簦椋睿纭。拢幔螅澹洹。铮?/span>
    Loongson3A?。龋幔颍洌鳎幔颍濉。校欤幔簦妫铮颍?/span>
    WANG?。蹋澹椋疲粒巍。兀椋幔铮?,WANG Dang-hui
    (School?。铮妗。茫铮恚穑酰簦澹颉。樱悖椋澹睿悖?,Northwestern?。校铮欤簦澹悖瑁睿椋悖幔臁。眨睿椋觯澹颍螅椋簦兀椤洌幔睢。罚保埃保玻梗茫瑁椋睿幔?/span>
    Abstract:Loongson3Aprocessor?。瑁幔蟆。簦瑁濉。幔洌觯幔睿簦幔纾澹蟆。铮妗。瑁椋纾琛。穑澹颍妫铮颍恚幔睿悖濉。幔睿洹。欤铮鳌。穑铮鳎澹颉。悖铮睿螅酰恚穑簦椋铮?,which has
    broad prospects?。椋睢。瑁椋纾琛。穑澹颍妫铮颍恚幔睿悖濉。悖铮恚穑酰簦椋睿纾穑澹颍螅铮睿幔臁。洌澹螅耄簦铮稹。幔穑穑欤椋悖幔簦椋铮睿?,industrial?。悖铮睿簦颍铮?,and?。瑁椋纾?/span>
    performance embedded fields.At?。穑颍澹螅澹睿?,Loongson?。螅澹颍椋澹蟆。穑欤幔簦妫铮颍怼。椋蟆。恚铮螅簦欤。猓幔螅澹洹。铮睢。蹋椋睿酰拢酰簟。椋睢。椋睿洌酰螅簦颍椋幔?/span>
    control?。幔睿洹。瑁椋纾琛。穑澹颍妫铮颍恚幔睿悖濉。澹恚猓澹洌洌澹洹。妫椋澹欤洌螅郑祝铮颍耄蟆。椋蟆。簦瑁濉。椋洌澹幔臁。悖瑁铮椋悖?,which?。椋蟆。瑁椋纾琛。颍澹幔臁。簦椋恚濉。幔睿洹。瑁椋纾?/span>
    reliability.Based on the?。幔睿幔欤螅椋蟆。铮妗。簦瑁濉。耄澹。悖铮睿簦澹睿簦蟆。铮妗。郑祝铮颍耄蟆。穑铮颍簦椋睿纾簦瑁椋蟆。穑幔穑澹颉。颍澹螅澹幔颍悖瑁澹洹。簦瑁濉。郑祝铮颍耄?/span>
    porting?。幔穑穑颍铮幔悖琛。铮妗。蹋铮铮睿纾螅铮睿常粒粒悖悖铮颍洌椋睿纭。簦铩。簦瑁濉。螅穑澹悖椋妫椋恪。椋睿洌酰螅簦颍椋幔臁。幔穑穑欤椋悖幔簦椋铮?,designed?。帷。耄椋睿洹。铮妗。蹋铮铮睿纾螅铮睿常?/span>
    industrial?。悖铮睿簦颍铮臁。瑁幔颍洌鳎幔颍濉。穑欤幔簦妫铮颍恚幔睿洹。椋恚穑欤澹恚澹睿簦澹洹。郑祝铮颍耄蟆。穑铮颍簦椋睿纭。铮睢。簦瑁椋蟆。穑欤幔簦妫铮颍恚桑簟。椋蟆。妫澹幔螅椋猓欤濉。猓。觯澹颍椋妫椋澹?/span>
    on?。蹋铮铮睿纾螅铮睿常粒洌澹觯澹欤铮穑恚澹睿簟。猓铮幔颍洌?/span>
    Key?。鳎铮颍洌螅海蹋铮铮睿纾螅铮睿常?;VxWorks;board?。螅酰穑穑铮颍簟。穑幔悖耄澹簟。拢樱?;system porting
    1 引言
    龍芯系列處理器是中國科學院計算所自主開發
    的國產處理器系列,龍芯3A是其最新一代的64位
    多核處理器.龍芯3A 基于RISC架構,兼容MIPS
    指令,原生4核設計,采用65nm工藝,晶體管數目
    4.25億個,最高工作主頻1GHz,單顆龍芯3A的最
    大功耗為15W[1].龍芯3A 在包括服務器、高性能
    計算、個人桌面應用、工業控制、數字信號處理、高端
    嵌入式應用等產品中都具有廣闊的市場應用前景.
    現有的龍芯平臺大都基于Linux操作系統,但
    是在工業控制、高性能嵌入式等領域,對實時性、定
    制性的要求很高,因此VxWorks系統才是比較理
    想的選擇.
    本文主要分析了VxWorks移植的主要內容,
    研究了龍芯3A的VxWorks移植方法,實現了一種
    用于工業控制領域的龍芯3A 平臺的設計,并對其
    進行了VxWorks移植.
     第2期王雷,等:龍芯3A平臺Vxworks移植的研究和實現
    2?。郑祝铮颍耄笠浦卜治?/span>
    2.1?。郑祝铮颍耄笠浦驳闹饕獌热?/span>
    VxWorks主要由三大部分組成:板級支持包
    BSP、微內核Wind及輸入輸出系統,如圖1所示.板
    級支持包BSP在硬件與微內核Wind之間提供了統
    一的接口,包括硬件初始化、中斷處理、時鐘管理、內
    存地址映射、實時內核載入等.將VxWorks移植到
    龍芯3A平臺上,主要就是完成龍芯3A平臺的板級
    支持包BSP的開發.
    圖1 VxWorks結構組成[2]
    開發BSP 一般有兩種方式:一是使用Wind
    River官方支持或者第三方支持的BSP;二是建立
    自己的BSP以支持特定硬件.對于龍芯3A來說,由
    于這方面的支持度較少,加上可能某些硬件設備比
    較特殊,因此通常需要自己建立龍芯3A 專用的
    BSP.
    通常情況下BSP開發的流程是,先實現一個最
    小化的Vxworks內核,向其中添加定時器、串口設
    備、中斷控制器等基本驅動程序,使得Vxworks系
    統基本可用,然后在此基礎上添加其他設備,最終滿
    足目標需求.本文進行龍芯3A 平臺的BSP開發也
    是基于該流程.
    2.2 板級支持包BSP的組成
    通常情況下,BSP的組成文件主要包含在以下
    四個目錄里面[2].
    (1)InstallDir\target\config\all
    該目錄下的文件包括bootConfig.c、bootInit.
    c、usrConfig.c、configAll.h等.這些文件主要是定
    義了所有VxWorks 的默認公共配置以及
    BootROM 的初始化代碼.這些文件作為VxWorks
    體系結構產品的一部分而給出,是所有BSP的公共
    部分,一般無需修改.
    (2)InstallDir\target\config\comps\VxWorks
    該目錄下的文件是VxWorks事實內核的基本
    組建描述文件(CDF文件).一般也無需修改.
    (3)InstallDir\target\config\comps\src
    該目錄下的文件是與內核基本組件相關的配置
    文件.
    (4)InstallDir\target\config\bspname
    該目錄下主要包括了Makefile、config.h、romInit.
    s、sysALib.s、sysLib.c、sysSerial.c、bspname.
    h等文件.這些文件是與具體系統或者硬件相
    關的BSP文件,主要是目標板上的外設的驅動文
    件、以及設備和VxWorks系統接口文件.本文移植
    工作的重點就是該目錄.
    其中,config.h文件包含了具體CPU板的所有
    包含文件和定義,主要包括BSP版本ID信息、緩存
    和MMU配置、RAM 和ROM 的地址和大小、默認
    引導行參數、網絡設備和中斷向量、外部總線地址映
    射等;romInit.s包含了用于初始化的匯編語言源代
    碼;sysALib.s 包含了VxWorks映像的入口點_
    sysInit;sysSerial.c包含了所有串口設備驅動器的
    設置和初始化.Makefile文件用于編譯創建映像文
    件.VxWorks使用GNU make工具來重新編譯和
    連接模塊,Makefile包含了整個BSP編譯、鏈接、生
    成二進制文件的過程.bspname.h主要是具體硬件
    平臺的參數配置頭文件,文件名稱可以自定義.該文
    件包括具體硬件平臺所有硬件的參數,如CPU 寄
    存器、系統中斷號、端口地址、接口配置等.
    2.3?。郑祝铮颍耄笥诚穹诸?/span>
    開發完成的BSP經過編譯鏈接,可以生成的
    VxWorks映像有兩類:一種是可加載的VxWorks
    映像;一種是可引導的VxWorks映像.前者需要固
    化在Flash中的BootROM 加載到RAM 中運行,一
    般在調試階段通過串口或者網絡下載到目標機中運
    行.后者是BootROM 和VxWorks融合在一起的映
    像,通常是調試開發完成后的最終產品.
    3 龍芯3A平臺的VxWorks移植
    3.1 龍芯3A平臺設計
    本文所涉及的龍芯3A 平臺用于工業控制領
    域,主要功能是分析采集到的數據,并根據分析結果
    對外發出控制命令,同時將采集到的數據和處理結
    果實時備份.該平臺主要硬件由龍芯3A 處理器、
    87
    微電子學與計算機2012年
    DDR2內存、BootROM、Flash盤、FPGA組成,如圖
    2所示.通電后,BootROM 初始化并啟動整個系統;
    龍芯3A 通過自帶的UART口接收外部傳感器采
    集的數據,對接收到的數據進行分析處理,并通過另
    外的UART發出控制命令;Flash盤通過FPGA與
    龍芯3A的PCI總線連接,保存采集到原始數據和
    處理后的數據.其中FPGA 主要完成時序轉換、讀
    寫控制等功能.
    圖2 龍芯3A平臺結構
    3.2 建立龍芯3A平臺的BSP工程
    實現龍芯3A平臺的BSP開發,首先需要新建
    一個BSP工程.首先打開Tornado,新建一個工程
    Loongson3A.由于沒有現成可用的BSP,可以根據
    用戶的硬件配置選擇一個近似的BSP 模板,如
    rbtx4938_mips64等等,然后在此基礎上添加需要
    的語句和文件,刪除無用的語句和文件,最終形成自
    己的BSP工程.
    3.3 龍芯3A平臺BootROM 設計
    在龍芯3A 平臺上電之初,由于RAM 未初始
    化處于不確定狀態,系統初始化引導程序只能存放
    在非易失性的介質,例如Flash芯片中,構成啟動
    ROM.
    對于龍芯3A 平臺來說,使用較多的初始化引
    導程序有兩種.一種是龍芯系列專用工具PMON,
    一種是VxWorks的開發工具Tornado 自帶的
    BootROM.兩者各有優缺點,PMON 設計與調試較
    為復雜,但是功能比BootROM 強大;BootROM 簡
    單易用,但功能上不如PMON.由于Tornado自帶
    的BootROM 與VxWorks聯系緊密,而且可以制作
    可加載的VxWorks映像和可引導的VxWorks映
    像,同時本文的硬件環境較簡單,因此用它作為初始
    化引導程序.
    3.3.1?。拢铮铮簦遥希?硬件連接
    龍芯3A與BootROM 之間是通過LPC總線連
    接.LPC中的LPC Boot地址空間是龍芯3A系統啟
    動時處理器最先訪問的地址空間,其物理地址范圍
    0x1fc00000-0x1fd00000.對于龍芯3A來說,如果系
    統設置成從PCI地址空間啟動,則第一條指令的
    PCI物理地址必須是0x1fc00000,否則系統將從
    LPC總線的ROM 空間0地址處開始取指[1].
    龍芯3A的LPC啟動Flash支持4Mbit和8
    Mbit兩種規格,通過LPC總線上的L_8MBits信
    號進行選擇.為了能夠存儲BootROM 及VxWorks
    映像,Flash芯片的型號選擇了SST49LF080A[3].
    SST49LF080A是專門用于存儲系統固件的LPC接
    口的閃存芯片,存儲空間大小為8Mbit(1Mbit×
    8).SST49LF080A符合1.0版LPC接口規范,支持
    兩種操作模式,一種是LPC模式(LPC),一種是并
    行編程模式(PP).LPC 模式通過LAD[3∶0]和
    LFRAME#進行系統內操作,PP模式通過A[10∶
    0]和DQ[7∶0]實現編程操作.本文中,通過將
    MODE信號設定為邏輯低,使用LPC模式實現系
    統正常啟動,如圖3所示.需要注意的是,作為啟動
    設備,ID[3∶0]必須為0000.
    圖3 龍芯3A與BootROM 連接方式
    3.3.2 加載VxWorks內核
    為了能夠在龍芯3A 平臺上啟動VxWorks,需
    要自定義一些啟動信息.在BSP開發包的config.h
    文件中包含了DEFAULT_BOOT_LINE的定義,
    包括確定啟動裝置的參數,主機和目標機IP地址,
    要裝載的VxWorks映像的路徑和名稱等.
    龍芯3A集成了2個UART,在BSP開發的調
    試階段,可以使用串口下載VxWorks映像并啟動,
    修改為如下形式:
    #define?。模牛疲粒眨蹋裕撸拢希希裕撸蹋桑危牛?/span>
    “tsfs(0,0)host:VxWorks?。瑁剑保叮梗玻担矗玻叮罚?/span>
    =169.254.2.68 u=Loongson3A pw=Loongson3Atn=
    target”
    其中啟動設備bootDev為tsfs,表示使用目標
    機代理文件系統連接,利用Tornado的目標服務器
    88
     第2期王雷,等:龍芯3A平臺Vxworks移植的研究和實現
    指定串口下載VxWorks映像.h和e分別表示主機
    IP和目標機IP,u和pw分別表示用戶名和密碼.若
    龍芯3A 平臺上有網絡設備,還可以指定bootDev
    為網卡型號通過網絡方式下載.
    最后當調試完成,形成最終產品時,可以制作可
    引導的VxWorks映像,此時BootROM 與VxWorks
    映像融為一體,直接燒寫在Flash固件中即可啟動
    VxWorks,無需再通過串口、網絡等方式下載.
    3.4 龍芯3A平臺的BSP開發
    3.4.1?。拢樱虚_發與設置
    BSP中的config.h文件涵蓋了龍芯3A的所有
    包含文件和定義,需要首先對其修改.修改config.h
    文件如下:
    #define?。遥希停撸拢粒樱牛撸粒模遥印。埃猓妫悖埃埃埃埃?/span>
    #define?。遥希停撸裕牛兀裕撸粒模遥印。埃猓妫悖埃埃埃埃?/span>
    #define?。遥希停撸樱桑冢拧。埃埃埃保埃埃埃埃?/span>
    #define?。遥粒停撸龋桑牵龋撸粒模遥印。埃猓妫洌埃埃埃埃?/span>
    #define?。桑危茫蹋眨模牛撸樱牛遥桑粒?/span>
    #define?。危眨停撸裕裕佟。?/span>
    #define?。茫希危樱希蹋牛撸拢粒眨模撸遥粒裕拧。保保担玻埃?/span>
    其中,ROM_BASE _ADRS表示ROM 的基地
    址,龍芯3A 平臺BootROM 的起始物理地址是
    0x1fc00000,轉化為邏輯地址為0xbfc00000.ROM_
    TEXT_ADRS表示初始化啟動代碼存放在ROM
    中的起始地址,同樣為0xbfc00000.ROM_SIZE表
    示ROM 的大小,本文使用的SST49LF080A 芯片
    存儲空間大小為8Mbit,因此為0x00100000.RAM_
    HIGH_ADRS表示復制BootROM 到RAM 所使用
    的目標地址,本文設定為0xbfd00000.RAM_LOW_
    ADRS表示RAM 中的VxWorks運行的起始地址,
    可根據自己的內存大小設置.NUM_TTY表示串口
    數量,本文中龍芯3A 平臺需要兩個使用UART
    口.CONSOLE_BAUD_RATE表示波特率.
    接著需要修改龍芯3A 平臺的頭文件Loongson3A.
    h,根據設計參數,修改其中的寄存器配置定
    義、系統中斷號、端口地址、接口配置等.
    此外還要修改Makefile文件,如CPU 類型號,
    選擇編譯工具,附加編譯選項等:
    CPU=MIPS64
    TOOL=diab
    TARGET_DIR=Loongson3A
    注意要保證Makefile和config.h中ROM 和
    RAM 宏定義中地址一致,此外還要除去一些無關
    模塊的引用等.
    3.4.2 驅動程序開發與配置
    在將VxWorks移植到龍芯3A平臺的過程中,
    很重要的一步就是設備驅動程序開發和配置.對于
    普通通用設備,可以直接添加BSP提供的普通驅動
    程序,BSP工具包在target/src/drv目錄下提供了
    大量普通驅動程序的源代碼.在編譯階段,sysLib.c
    可從target/src/drv中復制這些普通程序.如果對
    于特殊非通用設備,必須創建一個BSP專用的驅動
    程序,存放在BSP專用目錄下.
    龍芯3A平臺的啟動過程中,需要對串口設備
    初始化.普通多模式串行驅動程序存放在target/
    src/drv/sio目錄下.此目錄中包括了很多常見的串
    口設備的驅動源文件,如i8250Sio.c(intel8250)和
    ns16550Sio.c(NS 16550)等等,同時還包含了templateSio.
    c模板文件.龍芯3A 中的UART串口設
    備兼容NS?。保叮担担?,因此可以直接使用ns16550Sio.c
    作為串口驅動.如果需要添加特殊串口設備時,需要
    先在模版templateSio.c上創建驅動程序,然后修改
    BSP的sysLib.c或sysSerial.c文件,以使它們包括
    所需的驅動程序.由于本文龍芯3A 平臺的所用硬
    件均為普通的常用設備,可同樣按照上述方式添加
    與配置.
    3.5?。疲欤幔螅栉募到y的建立
    由于本文的龍芯3A 平臺使用了Flash盤作為
    數據存儲設備,出于使用壽命和簡化控制操作的考
    慮,為該Flash盤建立文件系統.
    TrueFFS是M-Systems公司開發的一種Flash
    文件實現方式,它屏蔽了底層存儲介質的差異,可以
    為各種Flash存儲設備提供統一的塊設備接口[4].
    TrueFFS與VxWorsk兼容,支持x86、PowerPC、
    MIPS等CPU 架構,并且具有可重用、線程安全的
    特點,非常適合工業控制、嵌入式等領域的龍芯3A
    平臺使用.
    在硬件上,龍芯3A 平臺使用的Flash芯片是
    SST39LF160.SST39LF160是一種多功能Flash芯
    片,存儲空間大小為16Mbit(1Mbit×16).
    3.5.1 BSP相關配置
    要讓VxWorks 支持TrueFFS,必須在Vx-
    Works映像中添加相關配置和文件.
    首先要config.h中定義TrueFFS,修改config.
    h如下:
    #define?。桑危茫蹋眨模牛撸模希樱疲?/span>
    #define INCLUDE_TFFS
    #define INCLUDE_TFFS_DOSFS
    89
    微電子學與計算機2012年
    #define?。桑危茫蹋眨模牛撸裕疲疲樱撸樱龋希?/span>
    龍芯3A 硬件平臺的BSP目錄下還需要包含
    sysTffs.c文件,將TrueFFS所有層連接在一起與
    VxcWorks綁定.修改sysTffs.c文件如下:
    #define INCLUDE_MTD_SST39VF160
    #define?。桑危茫蹋眨模牛撸裕蹋撸疲裕?/span>
    #define?。疲蹋粒樱龋撸拢粒樱牛撸粒模遥印。埃埃妫洌埃埃埃埃?/span>
    #define?。疲蹋粒樱龋撸樱桑冢拧。埃埃埃玻埃埃埃埃?/span>
    其中,INCLUDE_MTD_SST39VF160代表了
    SST39VF160的MTD驅動,其他不相關的MID驅
    動頭文件都可以注釋掉.
    由于龍芯3A 平臺具備虛擬內存管理功能,所
    以sysLib.c中的內存管理單元MMU 需要添加
    Flash相關定義,否則可能會導致Flash訪問失?。?/span>
    因此對于本文的龍芯3A 平臺來說,要在sysLib.c
    中的sysPhysMemDesc[]中添加上面Flash的基地
    址和大小等信息.
    接下來修改tffsConfig.c,在該文件開頭添加聲
    明:
    #ifdef INCLUDE_MTD_SST39VF160
    FLStatus?。樱樱裕常梗郑疲保叮?_ MTD _Identify
    (FLFlash?。觯铮欤?/span>
    #endif
    并在MTDidentifyRoutinemtdTable[]中添加
    以下內容:
    #ifdef?。桑危茫蹋眨模牛撸停裕模撸樱樱裕常梗郑疲保叮?/span>
    SST39VF160_MTD_Identify
    #endif
    最后在編譯時,將SST39LF160相關MTD驅
    動添加到Makefile中去:
    MACH_EXTRA=SST39LF160_Mtd.o
    3.5.2 驅動程序編寫
    SST39LF160驅動程序主要是完成Flash的識
    別、寫入和擦除操作,對應的函數聲明分別為:
    FlStatus?。樱樱裕常梗郑疲保叮?_ MTD _Identify
    (FLFlash vol);
    static?。疲欤樱簦幔簦酰蟆。樱樱裕常梗郑疲保叮埃停裕模牛颍幔螅?/span>
    (FLFlash vol,int blockNo,int?。猓欤铮悖耄裕铮牛颍幔螅澹?;
    static FlStatus?。樱樱裕常梗郑疲保叮埃停裕模祝颍椋簦?/span>
    (FLFlash?。觯铮欤茫幔颍洌粒洌洌颍澹螅蟆。幔洌洌颍澹螅?,const?。觯铮椋?/span>
    FAR1buffer,int?。欤澹睿纾簦?,int modes);
    根據這些函數的聲明,編寫對應的函數,完成驅
    動程序并添加到工程中即可.
    3.6 開發板驗證
    龍芯3A-RS780E[5]開發板是龍芯公司為龍芯
    3A量身定制的開發板.它集成了豐富的通用接口,
    方便用戶搭建基于龍芯3A 的硬件快速演示平臺;
    同時可以滿足用戶在開發板上進行性能評估和軟件
    開發移植的需要.
    本文所研究的內容在龍芯3A-RS780E開發板
    上進行了驗證.利用該開發板搭建了本文所設計的
    龍芯3A工控平臺,經過移植VxWorks可以成功運
    行,驗證了本文移植方法的可行性.
    4 結束語
    針對不同的用途和需求,龍芯3A 的硬件平臺
    配置也各不相同,但VxWorks移植的方法是類似
    的.本文詳細研究了龍芯3A平臺下的VxWorks移
    植方法,并在龍芯3A開發板上驗證了其可行性,一
    定程度上可以拓展龍芯系列在工業控制、高性能嵌
    入式等領域的應用范圍。
    上一篇: 多屏觸控地面站
    下一篇: 基于ARM和VxWorks的CPCI工控平臺的設計
    ?
    版權所有 ? 西安航普電子有限責任公司 未經許可

    嚴禁復制 陜ICP備08100257號 建站/推廣/維護/安全:西安利友科技