• <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ā)板
    国产成人a∨麻豆精品| 一级毛片我不卡| 美女脱内裤让男人舔精品视频| 天堂av国产一区二区熟女人妻| 亚洲最大成人手机在线| 国产亚洲91精品色在线| 国产乱人视频| 日韩,欧美,国产一区二区三区| 真实男女啪啪啪动态图| 狂野欧美白嫩少妇大欣赏| 九色成人免费人妻av| 国产一区二区三区av在线| 黄色一级大片看看| 中文在线观看免费www的网站| 男人和女人高潮做爰伦理| 啦啦啦中文免费视频观看日本| 亚洲怡红院男人天堂| 成人毛片60女人毛片免费| 国产探花在线观看一区二区| 成人亚洲精品av一区二区| 在线 av 中文字幕| 美女xxoo啪啪120秒动态图| 国产成人免费观看mmmm| 国产黄频视频在线观看| 日韩人妻高清精品专区| 丝瓜视频免费看黄片| 国产亚洲精品久久久com| 日韩成人av中文字幕在线观看| 我的女老师完整版在线观看| 亚洲精品aⅴ在线观看| 老师上课跳d突然被开到最大视频| 亚洲国产色片| 亚洲精品影视一区二区三区av| 18禁在线播放成人免费| 国产成人精品婷婷| 男的添女的下面高潮视频| 天堂av国产一区二区熟女人妻| 天堂影院成人在线观看| 亚洲欧洲日产国产| av免费在线看不卡| 色吧在线观看| 国产亚洲91精品色在线| 国产综合精华液| 亚洲精品国产av成人精品| 嫩草影院入口| 床上黄色一级片| 爱豆传媒免费全集在线观看| 青青草视频在线视频观看| 日韩欧美三级三区| 亚洲国产av新网站| 日韩伦理黄色片| 日日啪夜夜撸| 中文天堂在线官网| a级一级毛片免费在线观看| 午夜精品国产一区二区电影 | 久99久视频精品免费| 毛片一级片免费看久久久久| 淫秽高清视频在线观看| 国产av不卡久久| av又黄又爽大尺度在线免费看| 少妇被粗大猛烈的视频| av在线老鸭窝| 免费在线观看成人毛片| 国产亚洲精品久久久com| 日韩一本色道免费dvd| 国产探花极品一区二区| 午夜视频国产福利| 如何舔出高潮| 最近2019中文字幕mv第一页| 精品一区二区三区视频在线| 自拍偷自拍亚洲精品老妇| 亚洲第一区二区三区不卡| 伦理电影大哥的女人| 亚洲美女搞黄在线观看| 亚洲欧美一区二区三区国产| 国产视频首页在线观看| freevideosex欧美| 日韩欧美 国产精品| 国产又色又爽无遮挡免| 水蜜桃什么品种好| 国精品久久久久久国模美| 精品久久国产蜜桃| 日韩伦理黄色片| 人人妻人人澡欧美一区二区| 肉色欧美久久久久久久蜜桃 | 丰满少妇做爰视频| 日韩强制内射视频| 91av网一区二区| 麻豆成人av视频| 啦啦啦韩国在线观看视频| 老女人水多毛片| 午夜福利视频1000在线观看| 亚洲欧美日韩卡通动漫| 欧美日韩视频高清一区二区三区二| 午夜日本视频在线| av福利片在线观看| 国产精品99久久久久久久久| 亚洲国产精品国产精品| 成人性生交大片免费视频hd| 成人无遮挡网站| 国产成人a∨麻豆精品| 青青草视频在线视频观看| 国产亚洲最大av| 99热网站在线观看| 久久久久久久久久久丰满| 国产精品一区www在线观看| 久久国内精品自在自线图片| 国模一区二区三区四区视频| 少妇人妻精品综合一区二区| 久久综合国产亚洲精品| 日韩欧美三级三区| 国产成人a∨麻豆精品| 国产69精品久久久久777片| 国产精品久久久久久久久免| 精品久久久久久久久久久久久| 夜夜爽夜夜爽视频| 免费看光身美女| 亚洲在线自拍视频| 久久久a久久爽久久v久久| av黄色大香蕉| 精品99又大又爽又粗少妇毛片| 久久精品国产亚洲网站| 国产成人a∨麻豆精品| 深爱激情五月婷婷| 一夜夜www| 91精品伊人久久大香线蕉| 日韩强制内射视频| 搡老乐熟女国产| 亚洲av福利一区| 国产一区二区亚洲精品在线观看| 亚洲欧洲日产国产| 亚洲欧洲日产国产| 舔av片在线| 午夜福利视频精品| 男女视频在线观看网站免费| 狂野欧美白嫩少妇大欣赏| 最近的中文字幕免费完整| 麻豆成人午夜福利视频| 男插女下体视频免费在线播放| 国产黄色视频一区二区在线观看| 亚洲成人久久爱视频| 亚洲人与动物交配视频| 亚洲人与动物交配视频| 国产精品嫩草影院av在线观看| 午夜激情福利司机影院| 日本黄色片子视频| 亚洲一区高清亚洲精品| 嘟嘟电影网在线观看| 超碰97精品在线观看| 欧美成人精品欧美一级黄| 国产中年淑女户外野战色| 久久精品夜色国产| 国内精品宾馆在线| 国产精品一区www在线观看| 人妻少妇偷人精品九色| 少妇猛男粗大的猛烈进出视频 | 精品人妻视频免费看| 亚洲成人中文字幕在线播放| 亚洲av日韩在线播放| 中文天堂在线官网| 亚洲自拍偷在线| 日韩伦理黄色片| 欧美bdsm另类| 高清av免费在线| 一区二区三区四区激情视频| 91在线精品国自产拍蜜月| 婷婷色综合www| 99热这里只有是精品在线观看| 最近的中文字幕免费完整| 欧美高清性xxxxhd video| 九九爱精品视频在线观看| av黄色大香蕉| 日本熟妇午夜| 黄色欧美视频在线观看| 国产91av在线免费观看| 国产一区有黄有色的免费视频 | 欧美高清成人免费视频www| 精品久久久久久久人妻蜜臀av| 国产免费又黄又爽又色| 国产片特级美女逼逼视频| 精品欧美国产一区二区三| 99热全是精品| 亚洲久久久久久中文字幕| 中文字幕人妻熟人妻熟丝袜美| 天堂影院成人在线观看| 精品99又大又爽又粗少妇毛片| 成人美女网站在线观看视频| 国产成人一区二区在线| 亚洲色图av天堂| 两个人的视频大全免费| 99视频精品全部免费 在线| 看十八女毛片水多多多| 亚洲欧美一区二区三区黑人 | 水蜜桃什么品种好| 最近2019中文字幕mv第一页| 欧美高清性xxxxhd video| 久久久久久久久中文| 亚洲欧美成人精品一区二区| 欧美高清成人免费视频www| .国产精品久久| 日日啪夜夜撸| 亚洲精品乱久久久久久| 久久久久久久午夜电影| 久久6这里有精品| 国语对白做爰xxxⅹ性视频网站| 亚洲欧美一区二区三区国产| 一边亲一边摸免费视频| 亚洲精品日韩在线中文字幕| 两个人的视频大全免费| 国产黄频视频在线观看| 菩萨蛮人人尽说江南好唐韦庄| 免费电影在线观看免费观看| 热99在线观看视频| 亚洲av.av天堂| 国产精品一及| 在线免费观看的www视频| 我的女老师完整版在线观看| 国产成人免费观看mmmm| 日韩精品有码人妻一区| 搡女人真爽免费视频火全软件| 国产不卡一卡二| 97人妻精品一区二区三区麻豆| av免费在线看不卡| 97人妻精品一区二区三区麻豆| 成人国产麻豆网| 午夜激情久久久久久久| 国产高清国产精品国产三级 | 一级毛片久久久久久久久女| 国产av国产精品国产| 丰满少妇做爰视频| 午夜福利视频精品| 高清日韩中文字幕在线| 日日撸夜夜添| 丝袜美腿在线中文| 久久精品夜色国产| 十八禁国产超污无遮挡网站| 亚洲精华国产精华液的使用体验| 午夜免费男女啪啪视频观看| 伦精品一区二区三区| 肉色欧美久久久久久久蜜桃 | 真实男女啪啪啪动态图| 夜夜爽夜夜爽视频| 日韩成人伦理影院| 不卡视频在线观看欧美| 国产午夜福利久久久久久| 日韩人妻高清精品专区| 免费播放大片免费观看视频在线观看| xxx大片免费视频| 超碰av人人做人人爽久久| 男人爽女人下面视频在线观看| 麻豆乱淫一区二区| 亚洲av电影不卡..在线观看| 久久精品国产亚洲av天美| 国产久久久一区二区三区| 久久精品国产亚洲av天美| 大又大粗又爽又黄少妇毛片口| 日韩欧美一区视频在线观看 | 97在线视频观看| 色哟哟·www| 噜噜噜噜噜久久久久久91| 欧美xxxx黑人xx丫x性爽| 午夜老司机福利剧场| 久久久色成人| 久热久热在线精品观看| 精品少妇黑人巨大在线播放| 色5月婷婷丁香| 天堂中文最新版在线下载 | 国产午夜精品一二区理论片| h日本视频在线播放| 国产精品国产三级专区第一集| 久久精品夜夜夜夜夜久久蜜豆| 91精品伊人久久大香线蕉| 欧美日韩亚洲高清精品| 国产探花极品一区二区| 国产精品一区二区三区四区久久| 午夜激情福利司机影院| 国产精品一区二区三区四区免费观看| 久久久久久久久久黄片| 熟女人妻精品中文字幕| 日韩电影二区| 国产亚洲5aaaaa淫片| 亚洲18禁久久av| 18禁在线无遮挡免费观看视频| 亚洲精品456在线播放app| 午夜精品国产一区二区电影 | 久久韩国三级中文字幕| 青春草国产在线视频| 国产在视频线在精品| 精品少妇黑人巨大在线播放| 天天躁夜夜躁狠狠久久av| 国产成人精品婷婷| 一级毛片我不卡| 99热这里只有精品一区| 丝袜喷水一区| 三级经典国产精品| 亚洲精品日韩在线中文字幕| 久久久久久久久久黄片| 啦啦啦中文免费视频观看日本| 亚洲精品日本国产第一区| 中文字幕人妻熟人妻熟丝袜美| 成人亚洲精品一区在线观看 | av一本久久久久| 亚洲综合精品二区| 超碰97精品在线观看| 人妻一区二区av| 一区二区三区免费毛片| 美女大奶头视频| 精品一区在线观看国产| 国产老妇伦熟女老妇高清| 国产高清三级在线| 亚洲精品视频女| 国产一区二区亚洲精品在线观看| 午夜福利视频1000在线观看| 九九爱精品视频在线观看| 大香蕉久久网| 精品国产三级普通话版| 日本免费a在线| 晚上一个人看的免费电影| 久久久久国产网址| 精品国产三级普通话版| 久久午夜福利片| 中文在线观看免费www的网站| 亚洲第一区二区三区不卡| 高清av免费在线| 亚洲欧美中文字幕日韩二区| 欧美成人精品欧美一级黄| 联通29元200g的流量卡| 两个人的视频大全免费| 少妇裸体淫交视频免费看高清| 国产单亲对白刺激| 国产伦理片在线播放av一区| 91午夜精品亚洲一区二区三区| 国产成人精品婷婷| 亚洲精品第二区| 中国美白少妇内射xxxbb| 午夜日本视频在线| 我要看日韩黄色一级片| 亚洲欧美一区二区三区国产| 成人午夜精彩视频在线观看| 午夜爱爱视频在线播放| 国产亚洲av片在线观看秒播厂 | 91久久精品电影网| 美女国产视频在线观看| 国产亚洲av嫩草精品影院| 美女被艹到高潮喷水动态| 男女边摸边吃奶| 一级毛片久久久久久久久女| 成年av动漫网址| 插逼视频在线观看| 亚洲av福利一区| 日韩亚洲欧美综合| 人妻一区二区av| 久久久成人免费电影| 日本欧美国产在线视频| 午夜精品一区二区三区免费看| 亚洲精品aⅴ在线观看| 乱人视频在线观看| 非洲黑人性xxxx精品又粗又长| 亚洲人成网站在线观看播放| 一区二区三区高清视频在线| 2018国产大陆天天弄谢| 亚洲国产色片| 久久久久免费精品人妻一区二区| 久久久成人免费电影| 亚洲精品影视一区二区三区av| 亚洲在线观看片| 午夜福利网站1000一区二区三区| 亚洲最大成人av| 亚洲av不卡在线观看| 国产在线男女| 国产永久视频网站| 欧美zozozo另类| 麻豆乱淫一区二区| 老女人水多毛片| 国产精品久久久久久久电影| 亚洲成人精品中文字幕电影| 日本免费a在线| 免费看av在线观看网站| 欧美不卡视频在线免费观看| 国产精品一及| 国产麻豆成人av免费视频| 网址你懂的国产日韩在线| 亚洲综合色惰| 亚洲国产色片| 国产精品不卡视频一区二区| 精品人妻视频免费看| av在线播放精品| 中文字幕制服av| 久久精品国产亚洲av涩爱| 婷婷色综合大香蕉| 国产精品久久久久久av不卡| 乱码一卡2卡4卡精品| 精品一区二区三区人妻视频| 少妇的逼好多水| 国产片特级美女逼逼视频| 看黄色毛片网站| 蜜臀久久99精品久久宅男| 亚洲aⅴ乱码一区二区在线播放| 精品人妻一区二区三区麻豆| 天堂中文最新版在线下载 | 亚洲经典国产精华液单| 综合色av麻豆| 亚洲精品乱码久久久v下载方式| 亚洲电影在线观看av| 国产精品女同一区二区软件| 女人被狂操c到高潮| 全区人妻精品视频| 久久久精品欧美日韩精品| 蜜桃久久精品国产亚洲av| 欧美xxⅹ黑人| 久久久精品94久久精品| 女的被弄到高潮叫床怎么办| 免费av不卡在线播放| 国产成人精品婷婷| 亚洲欧美一区二区三区国产| 免费看光身美女| 夫妻午夜视频| 国产精品麻豆人妻色哟哟久久 | 能在线免费看毛片的网站| 精品人妻一区二区三区麻豆| av网站免费在线观看视频 | 观看免费一级毛片| 少妇被粗大猛烈的视频| 精品久久久久久久末码| av专区在线播放| 亚洲怡红院男人天堂| 国产精品美女特级片免费视频播放器| .国产精品久久| 精品久久久久久久久av| 久久久久久久国产电影| 亚洲精品自拍成人| 亚洲av免费高清在线观看| 一个人看的www免费观看视频| 亚洲国产欧美人成| 成年av动漫网址| 中文字幕av成人在线电影| 亚洲欧美清纯卡通| 看免费成人av毛片| av网站免费在线观看视频 | 久久这里有精品视频免费| 国产一区二区三区av在线| 国产成人aa在线观看| 欧美不卡视频在线免费观看| 午夜亚洲福利在线播放| 欧美高清性xxxxhd video| 国产一区二区在线观看日韩| 成人av在线播放网站| 成人亚洲欧美一区二区av| 欧美激情在线99| 岛国毛片在线播放| 成人午夜高清在线视频| 日韩国内少妇激情av| 18禁在线播放成人免费| 成人午夜精彩视频在线观看| 一边亲一边摸免费视频| 亚洲av成人精品一区久久| 日本午夜av视频| 精品少妇黑人巨大在线播放| 国产一级毛片七仙女欲春2| 精品久久久久久久末码| 精品酒店卫生间| 国产高清有码在线观看视频| 国产又色又爽无遮挡免| 亚洲最大成人av| 日日摸夜夜添夜夜添av毛片| 视频中文字幕在线观看| 亚洲精品一二三| 亚洲av电影在线观看一区二区三区 | 久久精品国产自在天天线| 欧美丝袜亚洲另类| 久久久久久久久久人人人人人人| 午夜亚洲福利在线播放| 内射极品少妇av片p| 青春草亚洲视频在线观看| 国产午夜精品一二区理论片| 国产精品日韩av在线免费观看| 真实男女啪啪啪动态图| 亚洲av成人精品一二三区| 国产91av在线免费观看| 成人毛片a级毛片在线播放| 久久精品综合一区二区三区| 美女被艹到高潮喷水动态| 国产国拍精品亚洲av在线观看| 欧美一级a爱片免费观看看| 在线免费观看的www视频| 国产大屁股一区二区在线视频| 久久久久久伊人网av| 久久精品国产鲁丝片午夜精品| 搡女人真爽免费视频火全软件| 女的被弄到高潮叫床怎么办| 97人妻精品一区二区三区麻豆| 一级av片app| 91aial.com中文字幕在线观看| 国产69精品久久久久777片| 国产黄频视频在线观看| 国产乱来视频区| 亚洲av国产av综合av卡| 日韩一区二区三区影片| 男人舔奶头视频| 99热全是精品| 久久99精品国语久久久| 建设人人有责人人尽责人人享有的 | 亚洲精品乱久久久久久| 在线观看人妻少妇| 日韩欧美三级三区| 免费少妇av软件| 久久久国产一区二区| 午夜视频国产福利| 乱人视频在线观看| av在线亚洲专区| 一夜夜www| 伦理电影大哥的女人| 91精品伊人久久大香线蕉| 国产老妇女一区| 99久久精品国产国产毛片| 三级国产精品欧美在线观看| 久久久色成人| 天天躁夜夜躁狠狠久久av| 免费在线观看成人毛片| 成年av动漫网址| 蜜臀久久99精品久久宅男| 色视频www国产| 日韩欧美精品v在线| 日本三级黄在线观看| 亚洲av福利一区| 日韩在线高清观看一区二区三区| 免费看a级黄色片| 亚洲国产成人一精品久久久| 亚洲精品成人久久久久久| 色尼玛亚洲综合影院| 久久久久久久久大av| 国产成人精品一,二区| 国产一区二区亚洲精品在线观看| 波多野结衣巨乳人妻| 成人漫画全彩无遮挡| 久久亚洲国产成人精品v| 一夜夜www| 精品不卡国产一区二区三区| 五月天丁香电影| 汤姆久久久久久久影院中文字幕 | 啦啦啦啦在线视频资源| av免费观看日本| 免费观看a级毛片全部| 欧美xxxx黑人xx丫x性爽| 岛国毛片在线播放| 国产黄片视频在线免费观看| 精品酒店卫生间| 一区二区三区乱码不卡18| 麻豆久久精品国产亚洲av| 狂野欧美白嫩少妇大欣赏| 亚洲精品日韩在线中文字幕| 麻豆精品久久久久久蜜桃| 亚洲精品成人久久久久久| 99热这里只有精品一区| 国产精品一及| 国产探花在线观看一区二区| 91久久精品国产一区二区三区| 久久久久久久久久成人| 一区二区三区四区激情视频| 国产男女超爽视频在线观看| 在现免费观看毛片| 国产黄色免费在线视频| 亚洲精品456在线播放app| 精品一区二区免费观看| 午夜精品一区二区三区免费看| 欧美另类一区| 久久久久免费精品人妻一区二区| 日日干狠狠操夜夜爽| 免费av不卡在线播放| 日韩亚洲欧美综合| av在线观看视频网站免费| 午夜精品国产一区二区电影 | 黄片无遮挡物在线观看| 日本黄色片子视频| 亚洲av成人精品一二三区| 亚洲在线观看片| 听说在线观看完整版免费高清| 日韩成人伦理影院| 国产成人a∨麻豆精品| 午夜福利在线观看免费完整高清在| 国产麻豆成人av免费视频| 深夜a级毛片| 午夜久久久久精精品| 日本猛色少妇xxxxx猛交久久| 久久亚洲国产成人精品v| 国产成人a∨麻豆精品| 欧美三级亚洲精品| 国产精品伦人一区二区| 国产一区二区亚洲精品在线观看| 最近中文字幕2019免费版| 蜜桃亚洲精品一区二区三区| 色综合站精品国产| 欧美日韩一区二区视频在线观看视频在线 | 国产在视频线精品| 五月伊人婷婷丁香| 成人午夜精彩视频在线观看| 亚洲va在线va天堂va国产| 欧美日韩在线观看h| 99久久精品一区二区三区| 插阴视频在线观看视频| 亚洲熟女精品中文字幕| 可以在线观看毛片的网站| 亚洲婷婷狠狠爱综合网| 人人妻人人澡欧美一区二区| 精品国内亚洲2022精品成人| 欧美日韩国产mv在线观看视频 | 汤姆久久久久久久影院中文字幕 | 国产精品久久久久久精品电影| 特级一级黄色大片| 日本一二三区视频观看| 26uuu在线亚洲综合色| 中文资源天堂在线| 国产精品久久久久久精品电影小说 | 成人亚洲欧美一区二区av| 国产v大片淫在线免费观看|