亚洲人成网站18禁止天堂-国产精品一区在线观看网站-欧美精品在线播放第一页-中文字幕亚洲综合小综合

網(wǎng)站首頁

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

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

    乡宁县| 宜君县| 富源县| 渑池县| 渑池县| 北宁市| 荃湾区| 西畴县| 新建县| 滦平县| 新安县| 邢台市| 宁明县| 马公市| 沭阳县| 五指山市| 友谊县| 定日县| 新巴尔虎右旗| 吉安县| 屯昌县| 龙里县| 白河县| 江源县| 武安市| 石楼县| 花莲市| 泾阳县| 桃园市| 望谟县| 邛崃市| 如皋市| 大石桥市| 榆树市| 长白| 定安县| 乐陵市| 虞城县| 亚东县| 方正县| 兴仁县|