• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于ARM的Nand Flash啟動(dòng)分析與移植

    2012-11-30 04:57:42蔡利平任家富張敬倫
    關(guān)鍵詞:源文件開(kāi)發(fā)板代碼

    蔡利平,任家富,童 銳,張敬倫

    (成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都610059)

    0 引 言

    嵌入式系統(tǒng)開(kāi)發(fā)在當(dāng)今日新月異的科技時(shí)代獨(dú)樹(shù)一幟,生活中大量的智能電子設(shè)備就是嵌入式應(yīng)用的一個(gè)縮影,比如PDA、機(jī)頂盒和智能手機(jī)等。然而,在嵌入式軟件的開(kāi)發(fā)中,嵌入式引導(dǎo)程序 (Bootloader)的設(shè)計(jì)、開(kāi)發(fā)與嵌入式系統(tǒng)的硬件息息相關(guān),這個(gè)特性決定了不可能用一個(gè)通用程序作為眾多嵌入式系統(tǒng)的引導(dǎo)程序。在這樣的背景下,針對(duì)不同的開(kāi)發(fā)環(huán)境設(shè)計(jì)不同的嵌入式系統(tǒng)引導(dǎo)程序成為首要問(wèn)題,本文根據(jù)實(shí)際的情況,詳細(xì)的分析了嵌入式引導(dǎo)程序的引導(dǎo)、啟動(dòng)原理,同時(shí)結(jié)合S3C2410開(kāi)發(fā)板和 U-Boot-1.1.6引導(dǎo)程序,分析從 Nand Flash啟動(dòng)的具體流程,修改并完成了 U-Boot從Nand Flash啟動(dòng)的移植。

    1 Bootloader介紹

    嵌入式軟件從應(yīng)用角度可以劃分為4個(gè)層次:引導(dǎo)程序 (Bootloader)、內(nèi)核、文件系統(tǒng)以及嵌入式應(yīng)用軟件(如GUI)。Bootloader是嵌入式系統(tǒng)中第一個(gè)被運(yùn)行的程序,其功能是初始化部分硬件、為隨后加載的系統(tǒng)內(nèi)核準(zhǔn)備相關(guān)的系統(tǒng)參數(shù) (機(jī)器類型ID和啟動(dòng)參數(shù)標(biāo)記列表在RAM中的地址)、加載內(nèi)核到內(nèi)存并將系統(tǒng)的控制權(quán)移交給內(nèi)核?,F(xiàn)在支持ARM體系結(jié)構(gòu)的bootloader很多,比如Vivi、RedBoot、BLOB以及U-Boot等。不同的Bootloader在支持的體系結(jié)構(gòu)和種類上有所不同,本文主要是針對(duì)U-Boot進(jìn)行分析與移植。U-Boot是德國(guó)DENX研究中心開(kāi)發(fā)設(shè)計(jì)的,其對(duì)現(xiàn)在市場(chǎng)上主流的操作系統(tǒng)、CPU都能提供良好的支持,功能相當(dāng)?shù)膹?qiáng)大。U-Boot的文件組織方式與Linux內(nèi)核相同,將功能或者特性相同的源文件放在一起,方便對(duì)源文件的管理與閱讀。根據(jù)文件的不同作用,本人將U-Boot中所有的源文件相對(duì)的劃分為下面的3個(gè)層次。如圖1所示。

    之所以這樣分層,是因?yàn)椋荷蠈影模痗pu和/board文件決定了系統(tǒng)所使用的ARM芯片類型以及與開(kāi)發(fā)板相同或者相近的板級(jí)體系結(jié)構(gòu),如S3C2410開(kāi)發(fā)板,相近的文件就 是/cpu/arm920t和/board/smdk2410,而/lib_xxx文件主要包含的是庫(kù)文件,屬于必不可少的部分;中間層文件include/configs/xxx.h中定義了眾多的宏,其中定義的配置宏和參數(shù)宏在代碼的編譯過(guò)程中將決定哪些代碼段將被包含,哪些代碼段將不被包含,控制Bootloader所實(shí)現(xiàn)的功能,起一個(gè)承上啟下的作用;底層主要包含了相關(guān)的驅(qū)動(dòng)程序以及一些通用函數(shù)和接口函數(shù)。

    在嵌入式系統(tǒng)中,根據(jù)引導(dǎo)系統(tǒng)存儲(chǔ)的位置,引導(dǎo)系統(tǒng)啟動(dòng)主要分為有兩種方式:Nor Flash引導(dǎo)和Nand Flash引導(dǎo)。這兩種引導(dǎo)方式不管是從硬件連接還是從軟件設(shè)計(jì)都有本質(zhì)的不同,現(xiàn)在主流的引導(dǎo)程序基本上都支持從Nor Flash的啟動(dòng)引導(dǎo),軟件技術(shù)的實(shí)現(xiàn)相對(duì)比較成熟;但是對(duì)Nand Flash的啟動(dòng)支持還不是很完善,要能夠從Nand Flash啟動(dòng),需要引導(dǎo)程序和開(kāi)發(fā)板都支持從Nand Flash啟動(dòng)。本文使用的U-Boot-1.1.6并不支持從Nand Flash啟動(dòng)的,而開(kāi)發(fā)板S3C2410的硬件特性支持從Nand Flash啟動(dòng)。本文將通過(guò)分析U-Boot的啟動(dòng)流程,最終實(shí)現(xiàn)U-Boot從Nand Flash的啟動(dòng)與移植。

    2 U-Boot Nand Flash啟動(dòng)分析與移植

    2.1 Nand flash與Nor flash的U-Boot引導(dǎo)分析

    Bootloader的啟動(dòng)一般可以分為兩個(gè)階段。第一階段主要是對(duì)部分硬件 (關(guān)閉看門狗、關(guān)中斷、設(shè)置時(shí)鐘和初始化存儲(chǔ)設(shè)備等)的初始化、拷貝引導(dǎo)程序U-Boot自己全部的代碼到SDRAM中以及為第二階段的執(zhí)行準(zhǔn)備硬件環(huán)境 (清除BSS段、設(shè)置堆棧等),用匯編代碼實(shí)現(xiàn)。第二階段繼續(xù)完成對(duì)外圍硬件設(shè)備的檢測(cè)與初始化,為內(nèi)核引導(dǎo)提供硬件環(huán)境和引導(dǎo)參數(shù)。U-Boot在第二階段對(duì)Nor Flash和對(duì)Nand Flash的支持是相同的,因此,支持Nand Flash啟動(dòng)的代碼修改主要集中在U-Boot啟動(dòng)的第一階段。為了得出U-Boot從Nor Flash引導(dǎo)與從Nand Flash引導(dǎo)的不同之處,這里結(jié)合韓國(guó)Mize公司的Vivi bootloader,Vivi最初主要是針對(duì)S3C2410X處理器的,支持從Nand Flash啟動(dòng)的引導(dǎo),通過(guò)分析,第一階段的引導(dǎo)流程如圖2所示。

    圖2中方向①、②指明了Nand Flash與Nor Flash在引導(dǎo)程序第一階段的不同之處,在程序中體現(xiàn)在/cpu/arm920t/start.S源文件的重定位代碼段,源文件start.S也是U-Boot程序的入口文件,具體比較如圖3所示。

    U-Boot從Nor Flash啟動(dòng)的引導(dǎo)系統(tǒng),只需要根據(jù)具體硬件的配置,更改少量的配置選項(xiàng)即可完成引導(dǎo)工作。通過(guò)上面的分析,為了實(shí)現(xiàn)Nand Flash引導(dǎo)啟動(dòng)需要修改U-Boot代碼完成以下幾個(gè)方面的問(wèn)題:

    (1)保證U-Boot的前4k代碼不僅能夠初始化相關(guān)的硬件,還要能夠?qū)⒋鎯?chǔ)在Nand Flash中的所有U-Boot代碼拷貝到SDRAM中,這也是第一階段的主要任務(wù);

    (2)在配置文件/include/configs/xxx.h中添加相關(guān)的宏,確定啟動(dòng)是從Nand Flash中進(jìn)行,以及確定U-Boot代碼在SDRAM中的起始位置、設(shè)置堆棧大?。?/p>

    (3)最后需要實(shí)現(xiàn)對(duì)Nand Flash讀寫操作的命令支持,能夠使U-Boot在控制終端使用Nand Flash命令對(duì)Nand Flash進(jìn)行相關(guān)的操作。

    圖3 Nor Flash引導(dǎo)和Nand Flash引導(dǎo)的比較

    2.2 Nand flash引導(dǎo)啟動(dòng)的實(shí)現(xiàn)

    系統(tǒng)引導(dǎo)啟動(dòng)方式 (Nor Flash or Nand Flash引導(dǎo))是由引腳OM [1:0]來(lái)確定的,如果OM [1:0]為0x0,則是從Nand Flash引導(dǎo);如果OM [1:0]的值為0x1,0x2則是從Nor Flash引導(dǎo),這可以通過(guò)跳線來(lái)設(shè)置,有的開(kāi)發(fā)板直接使用Nand Flash硬件連接。系統(tǒng)如果從Nand Flash啟動(dòng),由于Nand Flash接口的特殊性,系統(tǒng)上電后會(huì)自動(dòng)將Nand Flash前4k的代碼復(fù)制到S3C2410內(nèi)部集成的SRAM中,然后跳到這個(gè)SRAM緩沖區(qū)中0x0開(kāi)始執(zhí)行,這部分代碼需要完成硬件的初始化并將U-Boot代碼拷貝到SDRAM中后,然后跳轉(zhuǎn)到SDRAM中執(zhí)行。這里首先修改 源文件 uboot/board/s3c2410/start.S,在其中添加對(duì)Nand Flash的初始化代碼,然后完成 U-Boot的拷貝:

    coyp_myself_uboot:

    (Nand Flash的初始化代碼)

    ……

    ldr r0,=UBOOT_RAM_BASE

    //這是將U-Boot代碼拷貝到SDRAM中的起始地址

    mov r1,#0x0

    //這是U-Boot在Nand Flash中的起始地址,即0x0

    mov r2,#0x20000

    //這是U-Boot代碼的長(zhǎng)度

    bl nandTOsdram

    //完成U-Boot到SDRAM拷貝的C函數(shù)

    ……

    跳轉(zhuǎn)到源文件nand_copy.c中的拷貝函數(shù)nandTOsdram中。這里的寄存器r0,r1,r2依次作為nandTOsdram的第一、第二和第三個(gè)參數(shù)。在/board/s3c2410/下添加文件nand_copy.c,主要代碼如下:

    ……

    int nandTOsdram (unsigned char*buf,unsigned long start_addr,int size){

    int i,j;

    if((start_addr & NAND_BLOCK_M(jìn)ASK)‖ (size&NAND_BLOCK_M(jìn)ASK)){

    return-1; /*invalid alignment*/

    /*chip Enable*/

    NFCONF &= ~0x800;

    for(i=0;i<10;i++);

    for(i=start_addr;i< (start_addr+size);){

    /*READ0*/

    NFCMD=0;

    /* Write Address*/

    NFADDR =i &0xff;

    NFADDR= (i>>9)&0xff;

    NFADDR= (i>>17)&0xff;

    NFADDR= (i>>25)&0xff;

    wait_idle ();

    for(j=0;j< NAND_SECTOR_SIZE;j++,i++){

    *buf= (NFDATA &0xff);

    buf++;

    /*chip Disable*/

    NFCONF|=0x800; /*chip disable*/

    return 0;

    通過(guò)在/cpu/arm920t/start.s中添加的Nand Flash初始化代碼以及C源文件nand_copy.c解決了U-Boot從Nand Flash啟動(dòng)的第一個(gè)問(wèn)題。

    配置文件/include/configs/xxx.h控制整個(gè)開(kāi)發(fā)板的編譯選項(xiàng),主要包括兩類:以CONFIG_開(kāi)頭的文件用于選擇CPU、SOC、開(kāi)發(fā)板類型等,作為系統(tǒng)框架設(shè)計(jì)的一個(gè)選項(xiàng);還有一類是以CFG_開(kāi)頭的宏,作為系統(tǒng)的參數(shù)出現(xiàn),如設(shè)置緩沖池的大小、提示符等。為了獲得U-Boot Nand Flash啟動(dòng)的支持,需要在配置文件中添加以下幾個(gè)宏:

    #define CONFIG_S3C2410_NAND_BOOT 1//控制編譯從Nand Flash啟動(dòng)的代碼

    #define STACK_BASE 0x33f00000//定義堆棧在SDRAM中的位置以及長(zhǎng)度

    #define STACK_SIZE 0x8000

    #define UBOOT_RAM_BASE 0x33f80000//U-Boot代碼在SDRAM中的起始位置

    #define NAND_CTL_BASE 0x4e000000//Nand Flash各個(gè)控制器的地址的定義

    #define bINT_CTL (Nb) __REG (INT_CTL_BASE+ (Nb))

    *offset*/

    #define oNFCONF 0x00

    #define oNFCMD 0x04

    #define oNFADDR 0x08

    #define oNFDATA 0x0c

    #define oNFSTAT 0x10

    #define oNFECC 0x14

    經(jīng)過(guò)上述兩步的修改,U-Boot已經(jīng)實(shí)現(xiàn)了從Nand Flash的啟動(dòng),但是在控制終端并不能通過(guò)U-Boot的命令來(lái)對(duì)Nand Flash進(jìn)行讀寫操作。

    U-Boot對(duì)Nand Flash的讀寫操作命令并沒(méi)有給予完整的支持。要先在配置文件中打開(kāi)Nand Flash命令的控制宏:

    #define CONFIG_COMMANDS\

    (CONFIG_CMD_DFL | \

    CFG_CMD_CACHE | \

    CFG_CMD_NAND | 去掉之前的注釋符號(hào),使的CFG_CMD_NAND可用

    *CFG_CMD_EEPROM|*/\

    /*CFG_CMD_I2C |*/\

    ……)

    同時(shí),由于U-Boot默認(rèn)的代碼不能識(shí)別本文開(kāi)發(fā)板上的Nand Flash K9F1208U0A芯片型號(hào),還需要在文件/include/linux/mtd/nand_ids.h中的結(jié)構(gòu)體添加如下代碼,以識(shí)別芯片型號(hào):

    static struct nand_flash_dev nand_flash_ids[]= {

    ……

    {"Samsung K9F1208U0A",NAND _M(jìn)FR _SAMSUNG,0x76,26,0,3,0x4000,0},}

    對(duì) Nand Flash的讀寫操作在 U-Boot-1.1.6中有新舊兩套代碼,/driver/nand是新代碼文件,/driver/nand_legacy是舊代碼文件,如果在配置文件中定義了宏CFG_NAND_LEGACY,則通過(guò)舊代碼部分獲得對(duì)Nand Flash的支持,否則使用新代碼支持Nand Flash的底層操作,本文使用的是新代碼部分。在代碼中還需要實(shí)現(xiàn)函數(shù)board_nand_init()的定義,實(shí)現(xiàn)對(duì)Nand Flash的底層操作,這個(gè)函數(shù)在文件/driver/nand/nand.c中只進(jìn)行了聲明:

    ……

    extern void board_nand_init (struct nand_chip *nand);

    ……

    沒(méi)有定義的具體代碼,添加源文件nflash.c并在此源文件中實(shí)現(xiàn)board_nand_init函數(shù),函數(shù)的調(diào)用過(guò)程如圖4所示。

    圖4 board_nand_init函數(shù)的調(diào)用過(guò)程

    對(duì)Nand Flash底層函數(shù)的管理都是通過(guò)結(jié)構(gòu)體struct nand_chip實(shí)現(xiàn)的,在board_nand_init函數(shù)中就是要實(shí)現(xiàn)這個(gè)結(jié)構(gòu)體中各個(gè)底層函數(shù),但是并不用實(shí)現(xiàn)結(jié)構(gòu)體的每一個(gè)成員變量,這里必須要實(shí)現(xiàn)的結(jié)構(gòu)體成員有:

    讀寫信號(hào)nand->IO_ADDR_R= (void*)&s3c2410_mynand->NFDATA,nand->IO_ADDR_W= (void*)&s3c2410_mynand->NFDATA;控制信號(hào)函數(shù)nand->hwcontrol=s3c2410_nand_control_signal;芯片狀態(tài)函數(shù)nand->dev_ready=s3c2410_nand_if_busy;片選信號(hào)函數(shù) nand->select_chip=s3c2410_nand_select_chip以及位寬options的設(shè)置。到這里就完成了U-Boot從Nand Flash啟動(dòng)的代碼修改,也實(shí)現(xiàn)了在終端對(duì)Nand Flash命令的支持。

    2.3 驗(yàn)證支持Nand Flash啟動(dòng)的U-Boot及還需要注意的問(wèn)題

    在U-Boot的頂層目錄執(zhí)行命令:

    make distclean

    make s3c2410_config

    make CROSS_COMPILE=arm-linux-

    生成目標(biāo)文件uboot.bin,將其通過(guò)并口燒寫到Nand Flash中,然后重啟,控制終端顯示如下:

    U-Boot 1.1.6(Nov 20 2010-15:32:38)

    U-Boot code:33F80000->33F9A768BSS:->33F9EF18

    DRAM: 64 MB

    NAND: 64 MB

    In: serial

    Out: serial

    Err: serial

    CAI_s3c2410#

    到這里就成功的完成了U-Boot的修改與移植。這里還有幾個(gè)問(wèn)題需要注意:為了能夠在控制終端顯示U-Boot在SDRAM中段的分布,需要將文件/lib_arm/board.c中的debug("U-Boot code:%08lX-> %08lX BSS:-> %08lX\n",_armboot_start,_bss_start,_bss_end)換成printf("U-Boot code:%08lX-> %08lX BSS:-> %08lX\n",_armboot_start,_bss_start,_bss_end);本開(kāi)發(fā)板上沒(méi)有nor flash,因此要在配置文件中注釋掉flash的定義,并且注釋掉/common/cmd_bootm.c中關(guān)于imls命令的程序段和/common/cmd_flash.c中的程序段。

    3 結(jié)束語(yǔ)

    結(jié)合硬、軟件開(kāi)發(fā)的嵌入式系統(tǒng),分析、設(shè)計(jì)其啟動(dòng)流程是開(kāi)發(fā)過(guò)程中第一個(gè)需要解決的問(wèn)題。U-Boot引導(dǎo)程序以清晰明了的流程,詳細(xì)的描述了怎么實(shí)現(xiàn)引導(dǎo)的具體過(guò)程。本文同時(shí)結(jié)合了Vivi的啟動(dòng)流程分析,實(shí)現(xiàn)了支持Nand Flash啟動(dòng)引導(dǎo)的U-Boot,詳細(xì)的介紹怎么實(shí)現(xiàn)這個(gè)程序的修改過(guò)程。通過(guò)對(duì)U-Boot啟動(dòng)的分析能夠深刻的理解到軟件是怎么實(shí)現(xiàn)對(duì)硬件的操作,綜合的應(yīng)用了所學(xué)的知識(shí),為開(kāi)發(fā)嵌入式系統(tǒng)獲得直接經(jīng)驗(yàn)。

    [1]DU Chunlei.The architecture of ARM and program [M].Beijing:Tsinghua University Press,2009:58-223 (in Chinese).[杜春雷.ARM體系結(jié)構(gòu)與編程 [M].北京:清華大學(xué)出版社,2009:58-223.]

    [2]LAI Yushu.ARM MPU and applications[M].Beijing:Publishing House of Electronics Industry,2007:75-150 (in Chinese).[賴于樹(shù).ARM微處理器與應(yīng)用開(kāi)發(fā) [M].北京:電子工業(yè)出版社,2007:75-150.]

    [3]WANG Minghu.The exploitation induction of ARM embedded Linux[M].Beijing:Publishing House of Electric Power China,2008:55-102 (in Chinese).[汪明虎.ARM嵌入式Linux應(yīng)用開(kāi)發(fā)入門 [M].北京:中國(guó)電力出版社,2008:55-102.]

    [4]WEI Dongshan.The app exploitation entirety manual of embedded Linux[M].Beijing:The Press of People Postal and Electricity,2008:240-292(in Chinese).[韋東山.嵌入式Linux應(yīng)用開(kāi)發(fā)完全手冊(cè) [M].北京:人民郵電出版社,2008:240-292.]

    [5]SUN Qiong.The application exploitation details of embedded Linux[M].Beijing:The Press of People Postal and Electricity,2006:116-121(in Chinese).[孫瓊.嵌入式Linux應(yīng)用程序開(kāi)發(fā)詳解[M].北京:人民郵電出版社,2006:116-121.]

    [6]Stephen Prate.C primer plus [M].Beijing:Posts &Telecom Press,2010:354-376 (in Chinese).[Stephen Prate.C primer plus[M].北京:人民郵電出版社,2010:354-376.]

    [7]DU Haixing.The analysis and transplant of embedded Bootloader based ARM [J].Microcomputer Information,2010,26 (10-2):58-59(in Chinese).[杜海星.基于ARM的嵌入式Bootloader分析與移植 [J].微計(jì)算機(jī)信息,2010,26 (10-2):58-59.]

    [8]ZHAN Rongkai.The startup secret of embedded Bootloader[EB/OL].http://www.ibm.com/developerworks/cn/linux/l-btloader/,2010 (in Chinese).[詹榮開(kāi).嵌入式 Bootloader啟 動(dòng) 內(nèi) 幕 [EB/OL].http://www.ibm.com/developerworks/cn/linux/l-btloader/,2010.]

    [9]Tekkaman Ninja.Transplant U-Boot 1.2.0 to Weichuang 2410-S (S3C2410A) [EB/OL].http://blog.chinaunix.net/u1/34474/showart.php?id= 363269,2010 (in Chinese).[Tekkaman Ninja.移植 U-Boot.1.2.0到博創(chuàng)2410-S(S3C2410A) [EB/OL].http://blog.chinaunix.net/u1/34474/showart.php?id=363269,2010.]

    [10]QIU Xuehong.The truth of microcomputer and interface technic[M].Xi’an:Xi’dian University Press,2007:66-134(in Chinese).[裘雪紅.微型計(jì)算機(jī)原理及接口技術(shù) [M].西安:西安電子科技大學(xué)出版社,2007:66-134.]

    [11]ZHANG Shi.The tutorial of ARM embedded system [M].Beijing:China Machine Press,2008:35-66 (in Chinese).[張石.ARM嵌入式系統(tǒng)教科書 [M].北京:機(jī)械工業(yè)出版社,2008:35-66.]

    [12]WU Shili.The resolve and practice of embedded Linux App exploitation [M].Beijing:China Machine Press,2008:135-146 (in Chinese).[吳士力.嵌入式LINUX應(yīng)用開(kāi)發(fā)全程解析與實(shí)戰(zhàn)[M].北京:機(jī)械工業(yè)出版社,2008:135-146.]

    [13]Qing Ting Dian Shui.The startup process of U-Boot[EB/OL].http://wenku.baidu.com/view/4428024ae45c3b3567ec8b4d.html,2010(in Chinese).[蜻蜓點(diǎn)水.U-Boot啟動(dòng)過(guò)程 [EB/OL].http://wenku.baidu.com/view/4428024ae45c3b3567ec8b 4d.html,2010.]

    [14]CHU Shi Feng Mang.The manual of transplanting U-Boot to S3C2410 [EB/OL].http://wenku.baidu.com/view/1c2cb28da 0116c175f0e48f3.html,2010 (in Chinese).[初試鋒芒.UBOOT移植S3C2440完全手冊(cè) [EB/OL].http://wenku.baidu.com/view/1c2cb28da0116c175f0e48f3.html,2010.]

    [15]lien5.The Nand Flash drive analysis based on S3C2410 [EB/OL].http://hi.baidu.com/52hack/blog/item/675119df980b401b62279809.html,2010 (in Chinese).[lien5.對(duì)S3C2410平臺(tái)上 Nand Flash的驅(qū) 動(dòng) 分 析 [EB/OL].http://hi.baidu.com/52hack/blog/item/675119df980b401b62279809.html,2010.]

    猜你喜歡
    源文件開(kāi)發(fā)板代碼
    網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問(wèn)題分析中的應(yīng)用
    基于源文件可疑度的軟件缺陷定位方法研究
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    創(chuàng)世代碼
    Microchip最新推出兩款PIC32 Curiosity開(kāi)發(fā)板
    淺析單片機(jī)開(kāi)發(fā)板的設(shè)計(jì)與制作
    電子制作(2017年22期)2017-02-02 07:10:14
    LKJ基礎(chǔ)數(shù)據(jù)源文件自動(dòng)編制系統(tǒng)的研究
    Mouser為您呈上開(kāi)發(fā)關(guān)鍵之STMicroelectronics Nucleo開(kāi)發(fā)板
    亚洲免费av在线视频| 老司机靠b影院| 80岁老熟妇乱子伦牲交| 日韩欧美免费精品| 久久这里只有精品19| 欧美久久黑人一区二区| 国产精品1区2区在线观看. | 黄片播放在线免费| 动漫黄色视频在线观看| 黄片小视频在线播放| 国产在线免费精品| 亚洲性夜色夜夜综合| 国产一区二区三区综合在线观看| 欧美黄色片欧美黄色片| 中文字幕人妻丝袜制服| 最黄视频免费看| 欧美中文综合在线视频| 久久久精品国产亚洲av高清涩受| 国产精品秋霞免费鲁丝片| 99久久精品国产亚洲精品| 母亲3免费完整高清在线观看| 一级片免费观看大全| 捣出白浆h1v1| 久久久水蜜桃国产精品网| 久久人人97超碰香蕉20202| www.自偷自拍.com| 亚洲全国av大片| 少妇猛男粗大的猛烈进出视频| 91国产中文字幕| 这个男人来自地球电影免费观看| 亚洲国产欧美一区二区综合| avwww免费| 在线 av 中文字幕| av天堂久久9| 午夜成年电影在线免费观看| 2018国产大陆天天弄谢| 日韩中文字幕视频在线看片| 爱豆传媒免费全集在线观看| 人妻久久中文字幕网| 久久久精品国产亚洲av高清涩受| 首页视频小说图片口味搜索| 日韩中文字幕视频在线看片| 欧美一级毛片孕妇| 成人影院久久| 成人影院久久| 亚洲精品久久午夜乱码| 午夜免费鲁丝| 精品一区二区三区av网在线观看 | 18禁黄网站禁片午夜丰满| av福利片在线| 两人在一起打扑克的视频| 久久99一区二区三区| 午夜福利在线观看吧| 最近中文字幕2019免费版| 精品人妻熟女毛片av久久网站| 嫩草影视91久久| 久久久久久久国产电影| 欧美国产精品va在线观看不卡| 99久久99久久久精品蜜桃| 欧美国产精品一级二级三级| 亚洲欧美清纯卡通| 黑人巨大精品欧美一区二区蜜桃| 亚洲精品成人av观看孕妇| 欧美国产精品一级二级三级| 国产伦人伦偷精品视频| 色精品久久人妻99蜜桃| 人妻一区二区av| 性高湖久久久久久久久免费观看| 日韩三级视频一区二区三区| 十八禁网站网址无遮挡| 性高湖久久久久久久久免费观看| 一个人免费在线观看的高清视频 | 精品国产一区二区久久| 99精品久久久久人妻精品| 久久精品亚洲av国产电影网| 汤姆久久久久久久影院中文字幕| 操美女的视频在线观看| 久久久久国内视频| 青草久久国产| 高清在线国产一区| 免费在线观看视频国产中文字幕亚洲 | 飞空精品影院首页| av视频免费观看在线观看| 大陆偷拍与自拍| 美女主播在线视频| 国产高清videossex| 亚洲午夜精品一区,二区,三区| 在线 av 中文字幕| 国产亚洲av片在线观看秒播厂| 性高湖久久久久久久久免费观看| 五月开心婷婷网| 最新的欧美精品一区二区| 亚洲天堂av无毛| 亚洲av电影在线观看一区二区三区| 色老头精品视频在线观看| 久久久久久久国产电影| av在线老鸭窝| 午夜福利免费观看在线| 一区二区三区精品91| 亚洲第一欧美日韩一区二区三区 | 欧美日韩成人在线一区二区| 丝袜人妻中文字幕| 日韩有码中文字幕| av又黄又爽大尺度在线免费看| 成人影院久久| 人妻人人澡人人爽人人| 国产精品欧美亚洲77777| 日韩制服丝袜自拍偷拍| 精品人妻在线不人妻| 欧美xxⅹ黑人| 日本wwww免费看| 亚洲欧美日韩高清在线视频 | 久久久久网色| 亚洲精品一区蜜桃| 高清视频免费观看一区二区| 天天操日日干夜夜撸| 亚洲成国产人片在线观看| 免费一级毛片在线播放高清视频 | 手机成人av网站| 乱人伦中国视频| 成年动漫av网址| 亚洲精品中文字幕在线视频| 久久人人97超碰香蕉20202| 他把我摸到了高潮在线观看 | 久久精品国产亚洲av高清一级| 成人手机av| 精品一区二区三区av网在线观看 | 免费一级毛片在线播放高清视频 | 精品少妇一区二区三区视频日本电影| 女人被躁到高潮嗷嗷叫费观| 男女无遮挡免费网站观看| 丝袜美腿诱惑在线| 国产成人精品无人区| 最黄视频免费看| 日本av手机在线免费观看| 一本大道久久a久久精品| 国产视频一区二区在线看| 国产主播在线观看一区二区| 成人免费观看视频高清| 亚洲色图 男人天堂 中文字幕| av网站在线播放免费| 丁香六月欧美| 麻豆乱淫一区二区| 国产一区有黄有色的免费视频| 欧美老熟妇乱子伦牲交| 宅男免费午夜| 国产精品九九99| 国产成人精品无人区| 国产色视频综合| 少妇的丰满在线观看| 丰满迷人的少妇在线观看| 女性被躁到高潮视频| 成年av动漫网址| 国产又色又爽无遮挡免| 欧美日韩亚洲综合一区二区三区_| 国产欧美日韩一区二区精品| 一级片'在线观看视频| 99国产精品99久久久久| 麻豆乱淫一区二区| 在线永久观看黄色视频| 男女免费视频国产| 国产精品亚洲av一区麻豆| 黄色怎么调成土黄色| 9191精品国产免费久久| 每晚都被弄得嗷嗷叫到高潮| 日韩欧美一区视频在线观看| 人人妻人人爽人人添夜夜欢视频| 90打野战视频偷拍视频| 欧美精品一区二区大全| 18禁黄网站禁片午夜丰满| 丰满迷人的少妇在线观看| 曰老女人黄片| 精品亚洲成国产av| 国产精品九九99| 免费观看a级毛片全部| av天堂久久9| a 毛片基地| 一个人免费看片子| videosex国产| 十八禁人妻一区二区| 精品久久蜜臀av无| 99久久综合免费| 999久久久精品免费观看国产| 日韩电影二区| 久久九九热精品免费| 久久99热这里只频精品6学生| 国产日韩欧美视频二区| 各种免费的搞黄视频| 人人妻人人添人人爽欧美一区卜| 国产亚洲一区二区精品| 另类亚洲欧美激情| 日韩大码丰满熟妇| 少妇的丰满在线观看| 少妇猛男粗大的猛烈进出视频| 蜜桃国产av成人99| 亚洲成人国产一区在线观看| 亚洲av欧美aⅴ国产| 亚洲免费av在线视频| 久久精品国产综合久久久| 999久久久国产精品视频| 日韩,欧美,国产一区二区三区| 亚洲五月婷婷丁香| 国产亚洲午夜精品一区二区久久| 免费日韩欧美在线观看| 国产在线观看jvid| 狠狠狠狠99中文字幕| 18禁裸乳无遮挡动漫免费视频| 侵犯人妻中文字幕一二三四区| 国产一区二区激情短视频 | 国产野战对白在线观看| 国产成人影院久久av| xxxhd国产人妻xxx| 久久精品aⅴ一区二区三区四区| 大型av网站在线播放| 久久久久视频综合| 欧美精品啪啪一区二区三区 | 18在线观看网站| 成人三级做爰电影| 精品少妇一区二区三区视频日本电影| 捣出白浆h1v1| 国产精品亚洲av一区麻豆| 欧美人与性动交α欧美软件| 欧美+亚洲+日韩+国产| 人人妻人人澡人人爽人人夜夜| av福利片在线| 精品高清国产在线一区| 两个人免费观看高清视频| 热99re8久久精品国产| 又紧又爽又黄一区二区| 俄罗斯特黄特色一大片| 日日爽夜夜爽网站| 国产精品二区激情视频| 久久久久精品国产欧美久久久 | 免费高清在线观看视频在线观看| 欧美国产精品va在线观看不卡| 在线天堂中文资源库| 大片电影免费在线观看免费| av天堂在线播放| 又大又爽又粗| 下体分泌物呈黄色| 中文字幕另类日韩欧美亚洲嫩草| 热re99久久国产66热| 1024香蕉在线观看| 日韩中文字幕视频在线看片| 国产精品影院久久| 国产欧美日韩综合在线一区二区| 超碰97精品在线观看| 午夜福利免费观看在线| 狠狠婷婷综合久久久久久88av| 国产亚洲精品第一综合不卡| 香蕉丝袜av| 中文字幕人妻熟女乱码| 国产99久久九九免费精品| 日韩一区二区三区影片| 国产精品国产av在线观看| 久久久久久久久久久久大奶| 亚洲精品国产一区二区精华液| 丝袜脚勾引网站| 亚洲成人国产一区在线观看| 嫁个100分男人电影在线观看| 9色porny在线观看| 韩国高清视频一区二区三区| 精品少妇黑人巨大在线播放| 波多野结衣一区麻豆| 一级毛片精品| 嫩草影视91久久| 肉色欧美久久久久久久蜜桃| 老司机福利观看| 国产精品1区2区在线观看. | 多毛熟女@视频| 精品亚洲成a人片在线观看| 两性夫妻黄色片| 欧美激情久久久久久爽电影 | 极品少妇高潮喷水抽搐| 精品熟女少妇八av免费久了| 麻豆乱淫一区二区| 满18在线观看网站| 又黄又粗又硬又大视频| 国产男女超爽视频在线观看| 真人做人爱边吃奶动态| 亚洲久久久国产精品| www.精华液| 国产野战对白在线观看| 性少妇av在线| av天堂在线播放| 免费观看a级毛片全部| 一级a爱视频在线免费观看| 黄色视频,在线免费观看| 一区二区三区四区激情视频| 欧美老熟妇乱子伦牲交| 中文字幕最新亚洲高清| 少妇被粗大的猛进出69影院| 国产精品免费大片| av欧美777| 一本—道久久a久久精品蜜桃钙片| 每晚都被弄得嗷嗷叫到高潮| 男人操女人黄网站| 国产日韩欧美视频二区| 久久精品成人免费网站| 九色亚洲精品在线播放| 满18在线观看网站| 亚洲专区字幕在线| 中文字幕另类日韩欧美亚洲嫩草| 热re99久久国产66热| 国产一区二区三区综合在线观看| 黄色怎么调成土黄色| 热99久久久久精品小说推荐| 欧美国产精品一级二级三级| 精品人妻在线不人妻| 亚洲第一欧美日韩一区二区三区 | 日韩欧美一区二区三区在线观看 | 国产精品久久久久久人妻精品电影 | 亚洲欧美清纯卡通| 欧美日韩亚洲综合一区二区三区_| 国产成人免费无遮挡视频| 一本一本久久a久久精品综合妖精| 丰满人妻熟妇乱又伦精品不卡| 欧美精品高潮呻吟av久久| 菩萨蛮人人尽说江南好唐韦庄| 纯流量卡能插随身wifi吗| 国产精品成人在线| 久久久精品区二区三区| 黄片大片在线免费观看| 动漫黄色视频在线观看| 两性夫妻黄色片| 国产精品国产三级国产专区5o| 电影成人av| a级毛片黄视频| 国产伦人伦偷精品视频| 热99国产精品久久久久久7| 久久中文字幕一级| 高清欧美精品videossex| 国产精品自产拍在线观看55亚洲 | 黄色怎么调成土黄色| 久久亚洲国产成人精品v| 午夜成年电影在线免费观看| 少妇被粗大的猛进出69影院| 搡老乐熟女国产| 80岁老熟妇乱子伦牲交| 亚洲欧洲精品一区二区精品久久久| 男女无遮挡免费网站观看| 亚洲国产欧美在线一区| 国产精品香港三级国产av潘金莲| 国产亚洲午夜精品一区二区久久| 久久毛片免费看一区二区三区| 夫妻午夜视频| 久久毛片免费看一区二区三区| 午夜久久久在线观看| 美女中出高潮动态图| 中文精品一卡2卡3卡4更新| videos熟女内射| 国产成人免费观看mmmm| 国产在线观看jvid| 免费久久久久久久精品成人欧美视频| 欧美av亚洲av综合av国产av| 日韩中文字幕视频在线看片| avwww免费| 美女扒开内裤让男人捅视频| 日韩欧美一区视频在线观看| 欧美精品av麻豆av| 男女床上黄色一级片免费看| 日日夜夜操网爽| www.av在线官网国产| 日日夜夜操网爽| 黄色视频不卡| 精品卡一卡二卡四卡免费| 90打野战视频偷拍视频| 亚洲精品国产av成人精品| 精品国产乱码久久久久久男人| 国产免费一区二区三区四区乱码| 免费观看人在逋| 午夜福利影视在线免费观看| 亚洲一码二码三码区别大吗| 国产精品99久久99久久久不卡| 电影成人av| 少妇 在线观看| 中国美女看黄片| 亚洲专区国产一区二区| 黄片大片在线免费观看| 飞空精品影院首页| 日本wwww免费看| 人人妻,人人澡人人爽秒播| 国产成人一区二区三区免费视频网站| 十八禁高潮呻吟视频| 亚洲国产av影院在线观看| 黑人巨大精品欧美一区二区蜜桃| 亚洲色图 男人天堂 中文字幕| 欧美激情久久久久久爽电影 | 国产精品一区二区精品视频观看| 亚洲精品国产精品久久久不卡| 2018国产大陆天天弄谢| 亚洲精品国产av蜜桃| 色精品久久人妻99蜜桃| 国产成人精品久久二区二区免费| 午夜福利乱码中文字幕| 国产一区二区在线观看av| 亚洲专区国产一区二区| 叶爱在线成人免费视频播放| 男女国产视频网站| 极品少妇高潮喷水抽搐| 久久九九热精品免费| 美国免费a级毛片| 1024香蕉在线观看| 国产97色在线日韩免费| 丝袜在线中文字幕| 一级,二级,三级黄色视频| 国产免费一区二区三区四区乱码| www.999成人在线观看| 精品一区二区三区av网在线观看 | 中文字幕另类日韩欧美亚洲嫩草| 曰老女人黄片| 一区二区三区精品91| 一级a爱视频在线免费观看| 亚洲七黄色美女视频| 热re99久久国产66热| www.999成人在线观看| 国产日韩一区二区三区精品不卡| avwww免费| 老司机福利观看| 日韩制服丝袜自拍偷拍| 大香蕉久久成人网| 日韩免费高清中文字幕av| 国产在线视频一区二区| 一级毛片电影观看| 亚洲成人免费av在线播放| 日本av免费视频播放| 欧美日韩av久久| 叶爱在线成人免费视频播放| av国产精品久久久久影院| 1024香蕉在线观看| 91麻豆av在线| av天堂在线播放| 美女主播在线视频| 久久人人爽人人片av| 国产成人精品久久二区二区91| 99久久综合免费| 国产在线视频一区二区| 亚洲情色 制服丝袜| 日韩欧美一区视频在线观看| 老司机午夜福利在线观看视频 | 一区二区三区激情视频| 国产国语露脸激情在线看| 国产亚洲av片在线观看秒播厂| 久久久国产一区二区| 亚洲欧美清纯卡通| 91字幕亚洲| 一进一出抽搐动态| 国产又爽黄色视频| 亚洲欧洲精品一区二区精品久久久| 人人妻人人爽人人添夜夜欢视频| 亚洲中文日韩欧美视频| 国产成人精品久久二区二区91| 黑人巨大精品欧美一区二区mp4| 日本av免费视频播放| 久久精品国产a三级三级三级| 日韩中文字幕视频在线看片| 亚洲成人国产一区在线观看| 99国产精品99久久久久| 亚洲一码二码三码区别大吗| 97精品久久久久久久久久精品| 亚洲熟女精品中文字幕| 精品亚洲成国产av| 伦理电影免费视频| 五月开心婷婷网| 高清欧美精品videossex| 亚洲精华国产精华精| 999精品在线视频| 国产成人一区二区三区免费视频网站| 男人添女人高潮全过程视频| 天堂8中文在线网| 色94色欧美一区二区| 五月天丁香电影| 一区二区三区精品91| 自线自在国产av| 国产男人的电影天堂91| 亚洲成av片中文字幕在线观看| 王馨瑶露胸无遮挡在线观看| 精品福利永久在线观看| 欧美亚洲日本最大视频资源| 18禁裸乳无遮挡动漫免费视频| 国产精品国产av在线观看| 国产av国产精品国产| 少妇裸体淫交视频免费看高清 | 男女免费视频国产| 啦啦啦啦在线视频资源| 日本撒尿小便嘘嘘汇集6| 欧美黑人精品巨大| 国精品久久久久久国模美| 中文字幕另类日韩欧美亚洲嫩草| 欧美成人午夜精品| 热99re8久久精品国产| 精品一区二区三卡| 久久久久久久精品精品| 欧美激情高清一区二区三区| 亚洲熟女毛片儿| 国产国语露脸激情在线看| 精品一区二区三卡| 久久99热这里只频精品6学生| 精品国产乱码久久久久久男人| 少妇 在线观看| 一进一出抽搐动态| h视频一区二区三区| 啦啦啦中文免费视频观看日本| 中文字幕另类日韩欧美亚洲嫩草| 亚洲中文字幕日韩| av片东京热男人的天堂| 1024香蕉在线观看| 丰满少妇做爰视频| 最新的欧美精品一区二区| 亚洲国产成人一精品久久久| 一进一出抽搐动态| 韩国精品一区二区三区| 亚洲免费av在线视频| 日韩视频在线欧美| svipshipincom国产片| 人妻 亚洲 视频| 丰满迷人的少妇在线观看| www.999成人在线观看| 一级毛片精品| 精品国产一区二区三区久久久樱花| 亚洲专区字幕在线| 国产成人精品无人区| 久久人人爽人人片av| 久久久国产成人免费| www.自偷自拍.com| 色婷婷av一区二区三区视频| 波多野结衣av一区二区av| 亚洲国产欧美在线一区| 欧美97在线视频| 成人三级做爰电影| 日韩欧美一区视频在线观看| 伦理电影免费视频| 精品少妇黑人巨大在线播放| 免费日韩欧美在线观看| 亚洲一卡2卡3卡4卡5卡精品中文| 搡老岳熟女国产| 黄色怎么调成土黄色| 亚洲精品中文字幕一二三四区 | 亚洲精品美女久久久久99蜜臀| av电影中文网址| 久久性视频一级片| 亚洲第一av免费看| 免费在线观看日本一区| 国产免费福利视频在线观看| 国产成人欧美| 欧美日韩亚洲国产一区二区在线观看 | 少妇猛男粗大的猛烈进出视频| 亚洲黑人精品在线| 狠狠精品人妻久久久久久综合| 2018国产大陆天天弄谢| 女性生殖器流出的白浆| 亚洲精品一卡2卡三卡4卡5卡 | 亚洲精品中文字幕在线视频| 色综合欧美亚洲国产小说| 黄色视频不卡| 狂野欧美激情性bbbbbb| 亚洲av男天堂| 中文字幕人妻丝袜一区二区| 亚洲va日本ⅴa欧美va伊人久久 | 高清av免费在线| 无限看片的www在线观看| 国产在线免费精品| 亚洲欧美一区二区三区久久| 最近中文字幕2019免费版| 国产老妇伦熟女老妇高清| a级毛片在线看网站| 精品国产超薄肉色丝袜足j| 精品国产乱码久久久久久小说| 在线观看一区二区三区激情| 亚洲av电影在线观看一区二区三区| 视频区欧美日本亚洲| 美国免费a级毛片| 精品免费久久久久久久清纯 | 亚洲国产欧美一区二区综合| 久久久精品区二区三区| 精品一区二区三区四区五区乱码| 国产又爽黄色视频| 中国国产av一级| 国产免费现黄频在线看| 成年人午夜在线观看视频| 日韩大码丰满熟妇| 三上悠亚av全集在线观看| av片东京热男人的天堂| 一区二区日韩欧美中文字幕| 国产精品一区二区免费欧美 | 国产成人a∨麻豆精品| 叶爱在线成人免费视频播放| 99国产精品99久久久久| 久久女婷五月综合色啪小说| 男人爽女人下面视频在线观看| 欧美人与性动交α欧美精品济南到| 少妇精品久久久久久久| 欧美日韩亚洲国产一区二区在线观看 | 国产有黄有色有爽视频| 老熟妇乱子伦视频在线观看 | 久久国产精品人妻蜜桃| 亚洲国产日韩一区二区| 在线观看舔阴道视频| 欧美精品一区二区大全| 韩国高清视频一区二区三区| 一进一出抽搐动态| 欧美在线黄色| 午夜成年电影在线免费观看| 亚洲精品粉嫩美女一区| 搡老熟女国产l中国老女人| 久久久久久久久久久久大奶| 免费在线观看影片大全网站| 一区在线观看完整版| 国产成人系列免费观看| 国产精品一区二区免费欧美 | 99久久99久久久精品蜜桃| 亚洲精华国产精华精| 嫩草影视91久久| 午夜成年电影在线免费观看| 99国产精品免费福利视频|