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

        ?

        MPC8548平臺下的VxWorks BSP開發(fā)

        2013-06-26 11:37:56任修齊
        裝備制造技術(shù) 2013年6期
        關(guān)鍵詞:驅(qū)動程序鏡像中斷

        任修齊

        (桂林電子科技大學(xué) 電子工程與自動化學(xué)院,廣西 桂林541004)

        VxWorks是美國WindRiver公司于1983年設(shè)計(jì)開發(fā)的一款嵌入式實(shí)時(shí)操作系統(tǒng)(RTOS),其具有高性能的內(nèi)核(Wind Kernel)、持續(xù)發(fā)展能力以及友好的用戶開發(fā)環(huán)境,在嵌入式實(shí)時(shí)操作系統(tǒng)領(lǐng)域一直占據(jù)著高端位置。當(dāng)前實(shí)時(shí)嵌入式開發(fā)環(huán)境的關(guān)鍵組成部分一般采用VxWorks??紤]到VxWorks的通用性,WindRiver公司將操作系統(tǒng)與硬件之間的一層獨(dú)立開來,命名為BSP(board support package)。BSP能夠使操作系統(tǒng)相對于特定的硬件平臺具有獨(dú)立性,其對上層屏蔽、封裝具體的硬件細(xì)節(jié),為系統(tǒng)調(diào)用以及應(yīng)用軟件提供統(tǒng)一的接口[1]。

        面對一個(gè)特定的硬件平臺,需要在其支持簡單外設(shè)時(shí)正常運(yùn)行起來,這里涉及到的系統(tǒng)引導(dǎo)和驅(qū)動開發(fā)都是BSP的核心內(nèi)容。因此BSP開發(fā)是進(jìn)行嵌入式系統(tǒng)研發(fā)時(shí)需要完成的第一個(gè)任務(wù)。BSP與特定硬件關(guān)系密切,不同架構(gòu)的CPU對應(yīng)的BSP絕大部分不同,即使同一款CPU,在外設(shè)細(xì)微差異的情況下,BSP也會有較大的不同,這是BSP開發(fā)的復(fù)雜性所在[2]。本文以嵌入式微處理器MPC8548硬件平臺為例,采用“整體移植,局部修改”的開發(fā)方法,利用WindRiver公司為PowePc CPU提供的BSP模板,詳細(xì)介紹了VxWorks BSP開發(fā)過程。

        1 BSP介紹

        1.1 BSP的概念

        BSP通常是指特定的硬件平臺下的一個(gè)程序集合,包括啟動代碼和部分硬件設(shè)備驅(qū)動程序。在Vx-Works系統(tǒng)中,BSP簡單描述為介于底層硬件環(huán)境和VxWorks之間的一個(gè)軟件接口。

        如圖1[2]BSP和PC機(jī)主板上的BIOS有些類似,但有一些區(qū)別。由于PC產(chǎn)業(yè)的高度成熟,BIOS的設(shè)計(jì)已經(jīng)充分標(biāo)準(zhǔn)化,BIOS主要是負(fù)責(zé)在PC機(jī)主板啟動時(shí)檢測、初始化系統(tǒng)設(shè)備,并沒有包含一些基本外設(shè)的驅(qū)動。BSP的概念只是針對嵌入式操作系統(tǒng)而提出的,其實(shí)現(xiàn)有較大的靈活性。在啟動的開始部分BSP和BIOS所做的工作類似,而后的大部分是不同的,BSP還包含和平臺有關(guān)的基本驅(qū)動(串口、網(wǎng)口等)。另外BSP是和操作系統(tǒng)“捆綁”在一起運(yùn)行于主板上的。

        圖1 RTOS BSP和PC BIOS的比較

        以下從BSP職責(zé)、組成、執(zhí)行過程三個(gè)方面分別介紹[3~4]。

        1.2 BSP的職責(zé)

        1.2.1 硬件環(huán)境的初始化

        處理器和硬件環(huán)境的不同決定著VxWorks引導(dǎo)順序的差異,初始化硬件的步驟一般分為:

        (1)在主存儲器的特定位置放置一段代碼(跳轉(zhuǎn)指令),當(dāng)上電復(fù)位后處理器將立即執(zhí)行這段代碼;

        (2)根據(jù)HRCW(硬件復(fù)位配置字),將處理器設(shè)置為某個(gè)具體的狀態(tài);

        (3)初始化存儲器并對存儲器進(jìn)行劃分;

        (4)關(guān)閉中斷;

        (5)將控制權(quán)轉(zhuǎn)交給鏡像的引導(dǎo)代碼;

        (6)裝載需要的VxWorks段到RAM中;

        (7)在開始初始化VxWorks內(nèi)核之前,確保以CPU為主的硬件處于狀態(tài)靜止。

        1.2.2 硬件驅(qū)動程序的集成

        為支持操作系統(tǒng)訪問硬件外設(shè),BSP必須支持設(shè)備驅(qū)動程序相關(guān)的配置管理。主要指以下幾個(gè)方面:

        (1)在BSP里面支持部分驅(qū)動程序,其中包括驅(qū)動程序所調(diào)用的中斷服務(wù)程序;驅(qū)動程序代碼涉及到的結(jié)構(gòu)體以及宏等;

        (2)BSP需支持硬件驅(qū)動程序?qū)崿F(xiàn)可移植性。比如允許網(wǎng)絡(luò)設(shè)備驅(qū)動程序在不同的硬件環(huán)境之間移植;

        (3)設(shè)備的管理和配置,比如:將產(chǎn)品的開發(fā)和配置分開。

        1.2.3 軟件(與硬件相關(guān))的集成

        一個(gè)好的BSP不僅功能齊全,還需要考慮如下問題:

        (1)提供代碼編譯時(shí)的適應(yīng)性。比如:使用預(yù)處理宏,用戶可以根據(jù)自己的需要來定制BSP系統(tǒng)。例如:

        #define INCLUDE_ATA/*包含ATA硬盤驅(qū)動程序*/

        #define INCLUDE_FD/*包含軟盤驅(qū)動程序*/

        (2)提供執(zhí)行時(shí)的可移植性。比如:提供編譯對象模塊的可移植性;使用指針訪問程序。

        1.3 BSP的組成

        BSP主要由源文件、head文件、自動化編譯文件、派生文件組成,其實(shí)現(xiàn)的主干部分為源文件。以下主要介紹源文件。

        1.3.1 BSP相關(guān)文件

        這些文件位于.. argetconfigall目錄,它們并不是特定BSP的一部分,而是所有BSP的公共部分。該目錄主要由下面幾個(gè)文件組成:

        (1)bootConfig.c。其包含完整的引導(dǎo)ROM外殼任務(wù)、一個(gè)網(wǎng)絡(luò)設(shè)備初始化表(NETIF),其主要對引導(dǎo)型ROM鏡像起初始化和控制作用。該文件定義了usrInit()函數(shù)和usrRoot()函數(shù)。

        (2)bootInit.c。該文件包含引導(dǎo)ROM鏡像第二階段的初始化代碼,包括了函數(shù)romStart(),該函數(shù)的作用是重定位ROM鏡像和壓縮必要的代碼。

        (3)usrConfig.c。其包含VxWorks鏡像的主要初始化代碼。它的初始化功能較為完整,包括了.. argetsrcconfigusrExtra.c文件以及其他提供子系統(tǒng)配置和初始化的文件。

        (4)version.c。其提供了VxWorks版本號、構(gòu)造鏡像時(shí)的日期和時(shí)間,這些信息會在執(zhí)行VxWorks鏡像時(shí)顯示。

        (5)configAll.h。其設(shè)置了所有VxWorks鏡像的通用設(shè)置。

        1.3.2 BSP實(shí)現(xiàn)文件

        這些文件位于.. argetconfigspname目錄,包含了系統(tǒng)或硬件相關(guān)的BSP文件。其中的函數(shù)都需要依據(jù)硬件平臺進(jìn)行編寫和調(diào)試。主要由下面幾個(gè)文件組成:

        (1)rominit.s。該文件包含引導(dǎo)ROM和基于ROM的VxWorks鏡像的入口初始化匯編代碼。函數(shù)romInit()負(fù)責(zé)實(shí)現(xiàn)入口,該函數(shù)執(zhí)行初始化CPU、初始化內(nèi)存、初始化堆棧指針等。

        (2)sysLib.c。該文件包含目標(biāo)機(jī)體系結(jié)構(gòu)、與系統(tǒng)有關(guān)的C程序。這些程序?qū)崿F(xiàn)了上層與硬件的接口,由于這些接口,VxWorks和應(yīng)用程序的構(gòu)造與硬件無關(guān)。對硬件平臺所有外部器件初始化函數(shù)sysHwInit()和中斷掛載函數(shù)sysHwInit2()也在該文件中實(shí)現(xiàn)。

        (3)sysSerial.c。這是一個(gè)可選文件,包含所有的SIO設(shè)備串行I/O驅(qū)動程序的安裝和初始化,包含串口初始化函數(shù)sysSerialHwInit()、sysSerialHwInit2()。

        (4)systemClk.c。其包含系統(tǒng)時(shí)鐘處理函數(shù)sysClkConnect()、sysClkRateSet()和sysClkEnable()。

        (5)IntrInit.c。其包含中斷控制器初始化函數(shù)IntrInit()。

        (6)config.h。其包含了全部頭文件與涉及CPU的特殊宏。

        (7)makefile。該文件控制使用命令行方式構(gòu)造鏡像。

        1.4 BSP執(zhí)行過程

        上一節(jié)中介紹了BSP的文件組成以及所包含的函數(shù),執(zhí)行這些函數(shù),硬件平臺實(shí)現(xiàn)了從上電到Vx-Works啟動完成。下面以ROM型VxWorks鏡像啟動為例介紹BSP函數(shù)的執(zhí)行過程。

        系統(tǒng)上電啟動后,首先執(zhí)行固化在ROM中的romInit()函數(shù),其功能主要是禁止CPU中斷,配置SDRAM控制器,設(shè)置初始棧指針,然后執(zhí)行romStart()函數(shù)將ROM中VxWorks鏡像拷貝到RAM中執(zhí)行,接著在RAM中首先執(zhí)行usrInit()函數(shù)。usrInit()調(diào)用sysHwInit()函數(shù)初始化外部硬件設(shè)備,調(diào)用usrKernelInit()函數(shù)初始化并啟動內(nèi)核,調(diào)用usrRoot()函數(shù)連接系統(tǒng)時(shí)鐘、初始化并設(shè)置I/O系統(tǒng)和安裝所有外部設(shè)備驅(qū)動程序。至此系統(tǒng)啟動完成,BSP執(zhí)行結(jié)束。

        圖2 BSP執(zhí)行過程中的核心函數(shù)調(diào)用

        在啟動過程中,與具體硬件平臺相關(guān)的函數(shù)有romInit()、sysHwInit()以及usrRoot()調(diào)用的系統(tǒng)時(shí)鐘函數(shù)。其中,sysHwInit()函數(shù)調(diào)用所有外部硬件設(shè)備的初始化函數(shù)。例如:串口初始化函數(shù)sysSerialHwInit()、中斷控制器初始化函數(shù)IntrInit()、時(shí)鐘函數(shù)。時(shí)鐘函數(shù)包括:時(shí)鐘驅(qū)動掛載函數(shù)sysClkConnect()、時(shí)鐘速率設(shè)置函數(shù)sysClkRateSet()和時(shí)鐘使能函數(shù)sysClkEnable()。其中,sysClkConnect()函數(shù)還調(diào)用sysHwInit2()函數(shù)安裝所有外部設(shè)備的中斷處理程序,例如:串口中斷掛載程序sysSerialHwInit2()。啟動完成后所有外部設(shè)備驅(qū)動開始工作。

        2 BSP開發(fā)

        2.1 硬件平臺介紹

        PowerPc處理器是Freescale、IBM和蘋果電腦的合作結(jié)晶。作為一個(gè)處理器,PowerPc在指令集、指令執(zhí)行和處理器內(nèi)核的設(shè)計(jì)方面具有很強(qiáng)的優(yōu)勢[5]。MPC8548是基于Freescale(飛思卡爾)的PowerPC架構(gòu)的PowerQuiccⅢ處理器,其強(qiáng)大的處理能力特別適合于高速低時(shí)延的處理。主要參數(shù)如下[6]:

        路面基層檢測合格及模板安裝完成后,進(jìn)行鋼筋網(wǎng)安裝。先將橫筋按設(shè)計(jì)尺寸布置于底層,再將縱筋布置橫筋上方,在此過程中要注意鋼筋在板厚方向的高度,預(yù)留足夠的保護(hù)層厚度。鋼筋布置完成后進(jìn)行鋼筋連接,縱向鋼筋接頭采用電弧單面焊接,搭接長度為16cm,焊接接頭處應(yīng)錯(cuò)開布置,接頭連線與路面行車方向成45°夾角,縱向鋼筋與橫向鋼筋交叉處采用鋼絲繩綁扎。采用φ16鋼筋彎拉制做成“Ω”形置于橫向鋼筋下作為鋼筋支架,并采用電焊連接,橫向布置間隔約為150cm,縱向布置間隔約為120cm。

        最高頻率:1.5 GHz;支持內(nèi)存:最高2 G Byte DDR2 SDRAM;Flash:最高512 Kbyte+64 MByte×2+1 GByte;以太網(wǎng)口:前面板端2個(gè)千兆RJ45口;串口:前面板監(jiān)控串口;PCIexpress:AMC金手指端支持PCIe x4;電源:支持單板外部輸入單獨(dú)12 V/2 A電源和AMC金手指端供電。

        采用的硬件平臺是圍繞MPC8548處理器設(shè)計(jì)的通信板。如圖3,硬件平臺的外設(shè)有:512 MByte的SDRAM,1 G×16 Bit NAND Flash Memory,RS-232串口,10/100 Mbit/s網(wǎng)口和JTAG調(diào)試端口。

        圖3 硬件平臺結(jié)構(gòu)

        2.2 BSP函數(shù)實(shí)現(xiàn)

        2.2.1 rominit()函數(shù)

        該函數(shù)在romInit.s中實(shí)現(xiàn),其主要功能是:配置HRCW;配置內(nèi)存系統(tǒng);初始化堆棧指針[7]。

        (1)配置HRCW。本平臺CPU使用的HRCW為0x0AA356B7,CPU讀取HRCW后將自身設(shè)置為特定狀態(tài)。MPC8548處理器使用指向FLASH的CS0,上電啟動后CS0有效且讀/寫位寬是16 bit,MPC8548從FLASH的地址0x00、0x08、0x10和0x18共計(jì)讀取32 bit的HRCW,配置其自身的工作模式。然后在執(zhí)行一段跳轉(zhuǎn)指令后MPC8548將程序計(jì)數(shù)器指向FLASH地址0x100(復(fù)位異常向量)處執(zhí)行rominit()函數(shù)。因此在rominit.s文件的開始部分通過匯編指令.fill將硬件復(fù)位字寫到0x00、0x08、0x10和0x18處,剩余空間直到0x100處寫0,具體如下:

        .fill 8,1,0x0A

        .fill 8,1,0xA3

        .fill 8,1,0xB7

        .fill 224,1,0

        rominit:

        (2)配置內(nèi)存系統(tǒng)。當(dāng)執(zhí)行到romInit()函數(shù)時(shí),romInit()在屏蔽外部中斷,關(guān)閉高速緩存后開始配置連接FLASH和SDRAM內(nèi)存的控制器,確定它們的內(nèi)存地址(分配給FLASH的基地址為0xF0000000)。此時(shí)將FLASH映射到地址為0xFC000000的空間,如果不執(zhí)行一段跳轉(zhuǎn)指令,CPU將按照地址0x0從FLASH中讀取指令,造成系統(tǒng)崩潰。

        解決方法如下:在romInit函數(shù)內(nèi)部定義一個(gè)符號start,讓跳轉(zhuǎn)指令跳到這個(gè)符號的位置執(zhí)行,跳轉(zhuǎn)地址=0xF0000000+start-0x100。此時(shí)CPU才能以0xFC00000為基地址,從偏移地址(start-0x100)讀取指令。

        接下來只需完成CS0對應(yīng)的寄存器配置,以確定FLASH和SDRAM地址空間劃分。

        2.2.2 sysLib.c文件

        sysLib.c是BSP初始化的核心代碼,提供了Vx-Works和應(yīng)用程序之間的板級聯(lián)系。動態(tài)頁表和靜態(tài)頁表是兩種主要的內(nèi)存映射模式,這里著重介紹動態(tài)頁表的配置。

        為提高系統(tǒng)的實(shí)時(shí)性,硬件平臺將開啟MMU功能。BSP在sysLib.c文件中定義了一個(gè)結(jié)構(gòu)體數(shù)組sysPhysMemDesc[]來配置MMU的動態(tài)頁表。sys-PhysMemDesc[]數(shù)組中的每個(gè)結(jié)構(gòu)體對應(yīng)著物理內(nèi)存中一個(gè)塊單元,結(jié)構(gòu)體定義了物理地址、物理地址映射的虛擬地址(一般情況下與物理地址相同)、該塊內(nèi)存初始化狀態(tài)信息、掩碼信息等。其可包含的映射空間有內(nèi)存、Flash、ROM、I/O設(shè)備等,可以根據(jù)系統(tǒng)的需求自行進(jìn)行配置。部分代碼如下[8]:

        PHYS_MEM_DESCsysPhysMemDesc[]=

        {

        {(void*)(ROM_BASE_ADRS+0xF0000000),(void*)(ROM_BASE_ADRS),

        ROUND_UP(ROM_SIZE_TOTAL*2,PAGE_SIZE),VM_STATE_MASK_VALID|

        VM_STATE_MASK_WRITABLE|VM_STATE_MASK_CACHEABLE,VM_STATE_VALID|

        VM_STATE_WRITABLE_NOT|VM_STATE_CACHEABLE_NOT},

        };

        上面的代碼是對ROM_BASE_ADRS的內(nèi)存映射,ROM_BASE_ADRS+0Xf0000000是要映射的虛擬地址,ROM_BASE_ADRS是硬件設(shè)計(jì)時(shí)定義的實(shí)際物理地址,ROUND_UP(ROM_SIZE_TOTAL*2,PAGE_SIZE)是映射長度,VM_STATE_MASK_VALID|VM_STATE_MASK_WRITABLE|VM_STATE_MASK_CACHEABLE是初始化的地址狀態(tài),VM_STATE_VALID|VM_STATE_WRITABLE_NOT|VM_STATE_CACHEABLE_NOT是實(shí)際初始化的地址狀態(tài)。

        sysLib.c中包含了與硬件初始化密切相關(guān)的函數(shù)sysHwInit()和函數(shù)sysHwInit2()[9]。

        2.2.3 sysHwInit()函數(shù)

        sysHwInit()函數(shù)的功能是初始化系統(tǒng)硬件,該函數(shù)包含在sysLib.c文件中。根據(jù)本硬件平臺開發(fā)需求,需要編寫中斷控制器初始化函數(shù)IntrInit()和串口控制器初始化函數(shù)sysSerialHwInit()。

        (1)IntrInit()函數(shù)。該函數(shù)位于IntrInit.c文件。根據(jù)MPC8548中斷控制器的工作原理需要實(shí)現(xiàn)以下3個(gè)功能:

        一是,將中斷分離程序掛接到外部異常向量上。PowerPC處理器所有外部中斷共享同一個(gè)外部異常向量0x500,中斷分離程序的作用是識別中斷源,然后獲得中斷向量并調(diào)用中斷服務(wù)程序ISR。

        二是,安裝鉤子函數(shù)。系統(tǒng)提供了3個(gè)鉤子函數(shù):中斷連接函數(shù)_func_intConnectRtn、中斷使能函數(shù)_func_intEnableRtn和中斷禁止函數(shù)_func_intDisableRtn。需根據(jù)中斷控制器工作原理編寫具有上述功能的3個(gè)函數(shù),然后指向?qū)?yīng)的鉤子函數(shù)。

        三是,禁止所有中斷。

        (2)sysSerialHwInit()函數(shù)。該函數(shù)在sysSerial.c文件中實(shí)現(xiàn),負(fù)責(zé)處理器引腳配置和串口控制器配置。MPC8548處理器外部引腳是復(fù)用的,需要分為3步來執(zhí)行初始化:將串口控制器對應(yīng)的引腳配置為串口使用;配置串口工作模式及速率;為串口驅(qū)動分配收/發(fā)緩沖。

        2.2.4 sysHwInit2()函數(shù)

        該函數(shù)位于sysLib.c文件,其負(fù)責(zé)連接系統(tǒng)中斷,初始化其它必要的配置[10]。在初步開發(fā)時(shí),平臺外部設(shè)備只使用串口模塊,sysHwInit2()函數(shù)只需要調(diào)用串口中斷掛載函數(shù)sysSerialHwInit2(),該函數(shù)在sysSerial.c文件中實(shí)現(xiàn),實(shí)現(xiàn)方法是:根據(jù)所使用串口的中斷號,調(diào)用系統(tǒng)函數(shù)intConnect()將中斷處理程序注冊到系統(tǒng)中斷向量表中。

        3 調(diào)試

        3.1 ICE(In-Circuit Emulator)調(diào)試法

        BSP開發(fā)過程中最常用的一種調(diào)試方法是ICE調(diào)試法,如圖4所示。其過程是仿真頭插在用戶板的CPU位置上,然后在仿真器RAM中或目標(biāo)機(jī)RAM中下載好被調(diào)試的VxWorks鏡像。ICE調(diào)試法的原理為:在具體硬件平臺上運(yùn)行仿真器的CPU來調(diào)試軟件。

        圖4 IDE調(diào)試法

        3.2 調(diào)試過程中遇到的幾個(gè)問題

        rominit.s中有少量的初始化操作,這些操作是為載入VxWorks鏡像服務(wù)的,在能夠保證正常載入鏡像的情況下要使rominit.s中的初始化操作盡量的精簡。實(shí)際上絕大部分初始化任務(wù)要由sysHwInit()函數(shù)來完成。

        函數(shù)malloc()不能在調(diào)試階段調(diào)用。這是由于malloc()屬于緩沖區(qū)函數(shù),在內(nèi)存分配的初始化還未完成時(shí)調(diào)用函數(shù)malloc()將導(dǎo)致系統(tǒng)崩潰。前文提到的intConnect()不能夠在sysHwInit()中被調(diào)用。

        4 結(jié)束語

        文中介紹了VxWorks BSP的組成和功能,并以MPC8548為核心的硬件平臺為例詳細(xì)介紹了BSP的開發(fā)過程。雖然針對不同的硬件平臺,BSP需要根據(jù)具體的硬件細(xì)節(jié)進(jìn)行具體的設(shè)計(jì),但是各類硬件平臺之間還是有一定的共性,故對VxWorks BSP的開發(fā)者有一定的借鑒作用。同時(shí),“整體移植,局部修改”的開發(fā)方法對開發(fā)效率有明顯提高。

        [1]陳智育,溫彥軍,陳 琪.VxWorks程序開發(fā)實(shí)踐[M].北京:人民郵電出版社,2004.

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

        [3]Wind River.VxWorks kernel programmer's guide 6.4[EB/OL].http//www-ad.fnal.gov/controls/micro_p/manuals/vx-works_kernel_programmers_guide_6.4.pdf.2012-12-15.

        [4]Wind River.VxWorks architecture supplement 6.4[EB/OL].http://www-ad.fna1.gov/controls/micro~/manu-als/vxworks-architecture supplemen_6.4.pdf.2012-12-10.

        [5]王 齊.Linux PowerPc詳解-核心篇[M].北京:機(jī)械工業(yè)出版社,2007.

        [6]Freescale.MPC8548E PowerQUICCTMⅢIntegrated Processor Family Reference Manual[EB/OL].http://cache.freescale.com/files/32bit/doc/ref_manual/MPC8548ERM.pdf.2012-12-8.

        [7]王彥剛,呂遵明,萬留進(jìn).VxWorks系統(tǒng)的BSP設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2011,20(12):91-94.

        [8]李 丹.E500 MMU架構(gòu)研究及VxWorks下的優(yōu)化方案[J].計(jì)算機(jī)工程與應(yīng)用,2010,48(30):56-61.

        [9]Wind River.VxWorks architecture supplement 6.4[EB/OL].http://www-ad.fna1.gov/controls/micro~/manuals/vxworks-architecture_supplement_6.4.pdf.2012-12-8.

        [10]張 忠,樊留群.VxWorks在S3C2410上的BSP設(shè)計(jì)[J].微型電腦應(yīng)用,2005,21(10):16-19.

        猜你喜歡
        驅(qū)動程序鏡像中斷
        鏡像
        鏡像
        小康(2018年23期)2018-08-23 06:18:52
        跟蹤導(dǎo)練(二)(5)
        千里移防,衛(wèi)勤保障不中斷
        解放軍健康(2017年5期)2017-08-01 06:27:44
        鏡像
        小康(2015年4期)2015-03-31 14:57:40
        鏡像
        小康(2015年6期)2015-03-26 14:44:27
        AT89C51與中斷有關(guān)的寄存器功能表解
        FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
        驅(qū)動程序更新與推薦
        驅(qū)動程序更新與推薦
        精品少妇爆乳无码av无码专区| 国产一区二区三区男人吃奶| 精品激情成人影院在线播放| 777精品久无码人妻蜜桃| 色94色欧美sute亚洲线路二| 永久免费毛片在线播放| 日本综合视频一区二区| 无码人妻一区二区三区兔费| 精品性高朝久久久久久久| 亚洲成a人片在线观看高清| 日韩在线不卡一区三区av| 无码国产精品久久一区免费| 天堂√最新版中文在线天堂| 国产日产亚洲系列av| 中文字幕一区二区三区四区| 7m精品福利视频导航| 激情综合欧美| 亚洲一区二区三区成人在线| 日韩精品视频久久一区二区 | 狠狠色婷婷久久一区二区三区| 999国产精品亚洲77777| 日本女优中文字幕四季视频网站| 激情综合五月开心婷婷| 无码一区二区三区在线| 四虎成人精品无码永久在线| 少妇性l交大片免费快色| 女人18片毛片60分钟| 亚洲精品久久久久久动漫| 午夜无码亚| 亚洲熟女一区二区三区250p| 久久久久久亚洲av无码蜜芽| 亚洲熟妇色xxxxx欧美老妇| 女同另类一区二区三区| 性做久久久久久免费观看| 厨房玩丰满人妻hd完整版视频| 亚洲国产一区久久yourpan| 亚洲一区二区三区蜜桃| 国产成人精品一区二区不卡| 日韩亚洲中文图片小说| 极品少妇高潮在线观看| 特黄大片又粗又大又暴|