六月丁香伊人婷婷色琪琪-免费一区二区三区黄色片-亚洲欧美中文字幕专区-国产自在自线午夜精品

網(wǎng)站首頁(yè)

HOME

關(guān)于我們

ABOUT US

產(chǎn)品展示

PRODUCT

新聞中心

NEWS

成功案例

CASE

下載中心

DOWNLOAD

人才招聘

RECRUIT

在線留言

MESSAGE

聯(lián)系我們

CONTACT US

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

    嚴(yán)禁復(fù)制 陜ICP備08100257號(hào) 建站/推廣/維護(hù)/安全:西安利友科技

    麻豆精品视频一二三区| 91后入中出内射在线| 99久久免费看国产精品| 日本不卡在线一区二区三区| 亚洲欧美国产精品一区二区| 日韩一区二区三区免费av| 国产精品免费精品一区二区| 免费一区二区三区少妇| 国产又粗又猛又大爽又黄| 亚洲永久一区二区三区在线| 国产欧美另类激情久久久| 久久国产精品熟女一区二区三区| 欧美日韩最近中国黄片| 国产精品成人又粗又长又爽| 成人欧美一区二区三区视频| 日本女优一区二区三区免费| 91人妻久久精品一区二区三区| 视频一区中文字幕日韩| 亚洲最大福利在线观看| 免费啪视频免费欧美亚洲| 国产成人av在线免播放观看av| 国产又长又粗又爽免费视频| 精品熟女少妇av免费久久野外| 欧美偷拍一区二区三区四区| 欧美一级黄片欧美精品| 久久亚洲精品中文字幕| 激情视频在线视频在线视频| 久久re6热在线视频| 夫妻激情视频一区二区三区| 精品丝袜一区二区三区性色| 婷婷伊人综合中文字幕| 亚洲国产中文字幕在线观看| 亚洲综合香蕉在线视频| 欧美一区日韩一区日韩一区| 儿媳妇的诱惑中文字幕| 国产成人精品视频一二区| 国产一区二区三区四区免费| 国产欧美日韩不卡在线视频| 在线观看欧美视频一区| 国产毛片对白精品看片| 亚洲熟妇熟女久久精品 |