色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

如何在x86平臺用Qemu模擬ARM系統(tǒng)?

FPGA之家 ? 來源:IOT物聯(lián)網(wǎng)小鎮(zhèn) ? 作者:道哥 ? 2021-05-03 11:22 ? 次閱讀

前言

為什么需要ARM模擬系統(tǒng)

Qemu是什么?

Qemu的兩種模式

Qemu 能做什么?或者說適合做什么?

在 Ubuntu16.04 系統(tǒng)中,利用 Qemu 搭建一個ARM虛擬機

測試HelloWorld應用程序

總結(jié)

軟件下載地址

前言前一段時間因為工作需要,我對ARM模擬器進行了一番調(diào)研。調(diào)研目的是:由于項目參與人員比較多,如果人手一塊ARM開發(fā)板,資源比較緊張,希望能夠用模擬器來代替。

在調(diào)研期間,花費了很多時間去查資料、測試驗證。在實際驗證的時候,發(fā)現(xiàn)一個現(xiàn)象:很多文章雖然給出了或簡單、或詳細的操作步驟,但是大部分都沒有寫清楚操作的背景、各個軟件的版本,這就導致需要把整個文章看完了、把所有的操作步驟都做了一遍,才明白作者想表達的是什么意思,操作的目的是什么。

我覺得,任何一篇文章,首先要讓讀者知道為什么要讀這篇文章,或者說讀了這篇文章能夠有什么收獲。

如果是操作性比較強的文章,那么就有必要交代清楚工作平臺的背景是什么,要達到的目的是什么,總體步驟是怎么樣的。只有這樣,閱讀文章的人在心中首先建立一個宏觀的框架,在理解框架的基礎上,再去實際操作,這樣的話就更容易理解。

當然了,每個人的學習和閱讀習慣都不一樣,上面只是我個人的感受,或者說我喜歡這樣比較有條理的文章,這樣才不至于迷茫。

回到Qemu的主題上來,這篇文章主要是把調(diào)研的結(jié)果進行梳理、匯總,包括如下內(nèi)容:

為什么需要ARM模擬系統(tǒng)?

Qemu是什么?

Qemu 能做什么?或者說適合做什么?

在 Ubuntu16.04 系統(tǒng)中,利用 Qemu 搭建一個ARM虛擬機操作步驟是什么?

編寫一個HelloWorld程序,放到虛擬機中執(zhí)行。

為什么需要ARM模擬系統(tǒng)ARM平臺的軟件開發(fā)工作,可以劃分為2類:

應用程序的開發(fā)

系統(tǒng)開發(fā)(內(nèi)核、文件系統(tǒng)、驅(qū)動程序)

應用程序的開發(fā)

我們在開發(fā)嵌入式項目的時候,一般都是先在x86平臺上把大部分的功能開發(fā)完成,然后再交叉編譯,得到在ARM平臺的可執(zhí)行程序或者庫文件。再通過scp指令或者NFS遠程掛載的方式,把這些文件復制到ARM板子上之后執(zhí)行。

一般而言,應用程序就是利用硬件產(chǎn)品的各種資源、外設,來完成特定的功能,比如:數(shù)據(jù)采集、控制外部設備、網(wǎng)絡傳輸?shù)鹊取V饕奶卣骶褪桥c外部的各種設備進行交互。

系統(tǒng)開發(fā)(BSP)

系統(tǒng)開發(fā)的最終目的是:為應用程序的執(zhí)行準備一個基本的執(zhí)行環(huán)境,內(nèi)容包括:系統(tǒng)引導程序bootloader,內(nèi)核kernel,文件系統(tǒng)rootfs,系統(tǒng)中所有設備的驅(qū)動程序。在實際的項目開發(fā)中,系統(tǒng)開發(fā)難度更大一些,一旦開發(fā)完成,對于一塊板子來說基本上不會輕易變動,代碼的使用生命周期更長。

以上這兩種分類,主要是從開發(fā)工作的內(nèi)容角度來進行劃分的。可以看出:

應用程序開發(fā):靈活性更大、需求變動會更多(產(chǎn)品經(jīng)理或項目經(jīng)理經(jīng)常給你改需求)。

系統(tǒng)軟件開發(fā):需求更穩(wěn)定、很多代碼都是官方提供或者開源的,工作內(nèi)容就是進行定制、裁剪。

對于系統(tǒng)軟件開發(fā)來說,如果每次編譯出一個bootloader、或者kernel,都上一個ARM開發(fā)板進行驗證,的確比較麻煩。如果能有一個ARM模擬系統(tǒng),直接在x86上進行模擬,工作效率就會提高很多。

Qemu是什么?Qemu是一個開源的托管虛擬機,通過純軟件來實現(xiàn)虛擬化模擬器,幾乎可以模擬任何硬件設備。比如:Qemu可以模擬出一個ARM系統(tǒng)中的:CPU、內(nèi)存、IO設備等,然后在這個模擬層之上,可以跑一臺ARM虛擬機,這個ARM虛擬機認為自己在和硬件進行打交道,但實際上這些硬件都是Qemu模擬出來的。

8f022330-9ff2-11eb-8b86-12bb97331649.png

正因為Qemu是純軟件實現(xiàn)的,所有的指令都要經(jīng)過它的轉(zhuǎn)換,所以性能非常低。所以在生產(chǎn)環(huán)境中,大多數(shù)的做法都是配合KVM來完成虛擬化工作,因為KVM是硬件輔助的虛擬化技術,主要負責比較繁瑣的CPU和內(nèi)存虛擬化,而Qemu則負責I/O虛擬化,兩者合作各自發(fā)揮自身的優(yōu)勢,相得益彰。這部分不是重點,就不具體深入介紹了。

Qemu的兩種模式Qemu有兩種執(zhí)行模式:

用戶模式(User mode):利用動態(tài)代碼翻譯機制來執(zhí)行不同主機架構的代碼,例如:在x86平臺上模擬執(zhí)行ARM代碼,也就是說:我們寫一條ARM指令,傳入整個模擬器中,模擬器會把整個指令翻譯成x86平臺的指令,然后在x86的CPU中執(zhí)行。

8f315d8a-9ff2-11eb-8b86-12bb97331649.png

系統(tǒng)模式(System mode):模擬整個電腦系統(tǒng),利用其它VMM(Xen, KVM)來使用硬件提供的虛擬化支持,創(chuàng)建接近于主機性能的全功能虛擬機。

8f5fc210-9ff2-11eb-8b86-12bb97331649.png

Qemu 能做什么?或者說適合做什么?因為Qemu是使用純軟件模擬的,它的強項是模擬那些不涉及到外部的具體硬件設備的場景,比如:

想學習如何定制bootloader;

想在Arm系統(tǒng)中進行文件系統(tǒng)的裁剪,學習文件系統(tǒng)的掛載過程;

想體驗一下如何配置、裁剪linux kernel;想學習Linux系統(tǒng)中的設備樹;

。..

以上這些場景中,都非常適合使用Qemu來模擬ARM系統(tǒng)。

在 Ubuntu16.04 系統(tǒng)中,利用 Qemu 搭建一個ARM虛擬機使用Qemu虛擬機的幾種選擇

利用Qemu來運行ARM虛擬機,你有2個選擇:

簡單方式:直接下載別人編譯好的映像文件(包含了內(nèi)核,根文件系統(tǒng)),直接執(zhí)行即可。

缺點是:別人編譯好的也許不適合你的需求,沒法定制。

復雜方式:自己下載內(nèi)核代碼、根文件系統(tǒng)代碼(例如:busybox),然后進行編譯。

優(yōu)點是:可以按照自己的實際需求,對內(nèi)核、根文件系統(tǒng)機型裁剪。

在第2種復雜模式中,又可以有2個選擇:

2-1. 內(nèi)核代碼、根文件系統(tǒng)代碼全部自己手動編譯,最后把這些編譯結(jié)果手動組織在一個文件夾中,形成自己的根目錄;

2-2. 利用 buildroot 整個框架,只需要手動進行配置(比如:交叉編譯器在本機上的位置、輸出路徑、系統(tǒng)的裁剪),然后就可以一鍵編譯出一個完整的系統(tǒng),可以直接燒寫到機器!

以上這幾種操作方式的選擇,可以根據(jù)自己的實際需要來選擇。如果對構建系統(tǒng)的整個流程已經(jīng)非常熟悉了,就利用buildroot工具;如果是想更徹底的學習制作一個系統(tǒng),那就手動一步一步的實際編譯、操作一遍,多練幾次,你就變成大牛了。

下面,我們就按照2-2的方式,進行實際操作一遍。所有的指令部分,我都直接貼代碼,不用截圖,這樣方便復制。

測試平臺

我的工作電腦是Win10,通過VirtualBox安裝了Ubuntu16.04虛擬機,64位系統(tǒng)。

下面的操作在Ubuntu16.04虛擬機中可以順利編譯,當然,一些基本的工具(例如:build-essential, make等基礎工具軟件這里就不詳述了)。

安裝交叉編譯器

交叉編譯器的作用就不需要詳細解釋了,因為我們是在x86平臺上進行編譯,而運行的平臺是ARM系統(tǒng),這2個平臺的指令集不一樣,所以需要交叉編譯得到ARM系統(tǒng)上可以執(zhí)行的程序。

sudo apt-get install gcc-arm-linux-gnueabi

驗證安裝結(jié)果

dpkg -l gcc-arm-linux-gnueabi

顯示如下:

8f6a68c8-9ff2-11eb-8b86-12bb97331649.png

有些文章建議自己下載交叉編譯器,然后手動設置環(huán)境變量。我實際操作了一下,手動下載的交叉編譯工具鏈在編譯內(nèi)核的時候報錯,所以還是建議直接用apt-get直接安裝。

編譯內(nèi)核kernel

內(nèi)核kernel的作用也是不言而喻的,就相當于我們的Windows操作系統(tǒng),沒有這個操作系統(tǒng),硬件就是一堆廢鐵。當系統(tǒng)啟動的時候,會把內(nèi)核加載到內(nèi)存中,然后從內(nèi)核的入口地址開始執(zhí)行。

下載內(nèi)核版本:linux-4.14.212.tar。在文末,我會列出所有的軟件包下載地址。

使用現(xiàn)成的vexpress開發(fā)板子的config文件

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig

這個操作,會把vexpress_defconfig作為配置文件保存為.config,下面在編譯內(nèi)核時就根據(jù)這個config中的配置進行編譯。

如果需要對內(nèi)核進行裁剪,執(zhí)行:

make menuconfig

根據(jù)自己的實際需要,對內(nèi)核進行定制。比如:可以配置網(wǎng)絡和NFS,在系統(tǒng)啟動的時候就自動掛載宿主機中的某個目錄。

編譯內(nèi)核

make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm

編譯得到內(nèi)核文件arch/arm/boot/zImage,Qemu啟動時需要指定使用這個映像文件。

制作根文件系統(tǒng)

內(nèi)核在啟動之后、執(zhí)行到最后步驟時,需要掛載根文件系統(tǒng),然后執(zhí)行文件系統(tǒng)中指定的執(zhí)行程序,例如:/etc/rc.local。

如果沒有跟文件系統(tǒng),那么內(nèi)核在執(zhí)行到最后就提示:panic.。.。

下載busybox

版本:busybox-1.20.2.tar.bz2。

創(chuàng)建rootfs根目錄

mkdir -p rootfs/{dev,etc/init.d,lib}

把busybox-1.20.2中的文件復制到rootfs根目錄下,主要是一些基本的命令

cp busybox-1.20.2/_install/* -r rootfs/

把交叉編譯工具鏈中的庫文件復制到rootfs根目錄的lib文件夾下

sudo cp -P /usr/arm-linux-gnueabi/lib/* rootfs/lib/

制作根文件系統(tǒng)鏡像根文件系統(tǒng)鏡像就相當于一個硬盤,就是把上面rootfs根目錄中的所有文件復制到這個硬盤中。

(1) 生成512M大小的磁盤鏡像

qemu-img create -f raw disk.img 512M

(2) 把磁盤鏡像格式化成ext4文件系統(tǒng)

mkfs -t ext4 。/disk.img

(3) 將rootfs根目錄中的所有文件復制到磁盤鏡像中操作步驟是:創(chuàng)建掛載點-掛載-復制文件-卸載。

mkdir tmpfs sudo mount -o loop 。/disk.img tmpfs/ sudo cp -r rootfs/* tmpfs/sudo umount tmpfs

(4) 使用file指令檢查一下

file disk.img

8f928042-9ff2-11eb-8b86-12bb97331649.png

利用Qemu啟動ARM虛擬機

1.啟動虛擬機

這個命令有點長,測試時建議直接復制、粘貼。

qemu-system-arm -M vexpress-a9 -m 512M -kernel 。/linux-4.14.212/arch/arm/boot/zImage -dtb 。/linux-4.14.212/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -nographic -append “root=/dev/mmcblk0 rw console=ttyAMA0” -sd disk.img

2.停止虛擬機在Ubuntu另一個終端窗口中,通過killall指令來停止。

killall qemu-system-arm

當然,也可以用ps指令找到qemu-system-arm的進程號,然后通過kill -9來停止虛擬機。

測試HelloWorld應用程序在Ubuntu任意一個目錄,編寫HelloWorld可執(zhí)行程序hello.c:

#include 《stdio.h》 int main() { printf(“HelloWorld!

”); return 0; }

交叉編譯hello.c,得到可執(zhí)行程序hello:

arm-linux-gnueabi-gcc hello.c -o hello

通過file指令,查看一下hello程序:

file hello

8fa860c4-9ff2-11eb-8b86-12bb97331649.png

通過kill命令停止虛擬機。

把hello可執(zhí)行程序復制到磁盤鏡像disk.img中操作步驟是:掛載-復制文件-卸載。

sudo mount -o loop 。/disk.img tmpfs/ cp hello tmpfs/ sudo umount tmpfs

執(zhí)行hello程序再次啟動虛擬機,此時可以在根目錄下面看到hello文件,直接執(zhí)行即可看到輸出結(jié)果。

總結(jié)在以上的操作步驟中,我們把一個ARM系統(tǒng)在啟動應用程序之前,所需要的程序都手動編譯、操作了一遍。看一遍很容易就明白,親手操作一遍印象會更深刻。

這里的操作過程有些還需要繼續(xù)深入,比如:在系統(tǒng)啟動之后,自動掛載宿主機(Ubuntu系統(tǒng))中的某個文件夾,這樣就可以把hello等可執(zhí)行程序復制到掛載目錄中,然后在ARM系統(tǒng)中直接執(zhí)行了,而不用再執(zhí)行下面在一連串的操作(停止虛擬機-掛載磁盤鏡像-復制文件-卸載-啟動虛擬機)。

最后,希望這篇總結(jié)能給你帶來小小的收獲和提升!

原文標題:一步步教你:在x86平臺,如何用Qemu來模擬ARM系統(tǒng)

文章出處:【微信公眾號:FPGA之家】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

責任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • ARM
    ARM
    +關注

    關注

    134

    文章

    9304

    瀏覽量

    374783
  • 嵌入式
    +關注

    關注

    5138

    文章

    19521

    瀏覽量

    314575
  • qemu
    +關注

    關注

    0

    文章

    57

    瀏覽量

    5611

原文標題:一步步教你:在x86平臺,如何用Qemu來模擬ARM系統(tǒng)

文章出處:【微信號:zhuyandz,微信公眾號:FPGA之家】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 1人收藏

    評論

    相關推薦
    熱點推薦

    ARMx86:架構對比及其應用

    典型的服務器架構的x86采用模塊化方法,基于帶有可更換組件的主板。CPU和其他組件(如顯卡和GPU、內(nèi)存控制器、存儲或處理核心)針對特定功能進行了優(yōu)化,可以輕松更換或擴展。然而,這種便利是有代價
    的頭像 發(fā)表于 01-15 15:43 ?739次閱讀
    <b class='flag-5'>ARM</b>與<b class='flag-5'>x86</b>:架構對比及其應用

    Arm主板與x86主板的區(qū)別

    在當今數(shù)字化迅猛發(fā)展的時代,計算機硬件的架構選擇對于系統(tǒng)的性能、能效以及適用性具有至關重要的影響。Arm架構與x86架構是目前主流的兩種計算機體系結(jié)構,各自在個人計算機、服務器、嵌入式系統(tǒng)
    的頭像 發(fā)表于 01-07 12:21 ?573次閱讀
    <b class='flag-5'>Arm</b>主板與<b class='flag-5'>x86</b>主板的區(qū)別

    KiCon演講回顧(八):KiCAD 賦能 x86 系統(tǒng)擴展板

    “ ?由 Alpha Wang 帶來的最新分享,探索 KiCAD 在 x86 系統(tǒng)擴展板中的應用! ” LattePanda Mu 集成CPU、內(nèi)存、硬盤,功能相當于一筆記本電腦的計算模塊。 提供
    的頭像 發(fā)表于 11-27 11:48 ?731次閱讀
    KiCon演講回顧(八):KiCAD 賦能 <b class='flag-5'>x86</b> <b class='flag-5'>系統(tǒng)</b>擴展板

    英特爾和AMD組建x86生態(tài)系統(tǒng)咨詢小組

    在聯(lián)想2024 Tech World大會上,英特爾CEO帕特·基辛格宣布了一項重大合作:英特爾與AMD將共同組建X86生態(tài)系統(tǒng)咨詢小組。
    的頭像 發(fā)表于 10-16 16:34 ?598次閱讀

    英特爾將攜手AMD共同捍衛(wèi)x86生態(tài)

    10月16日,英特爾正式公布了一項重大合作計劃:與AMD攜手成立x86生態(tài)系統(tǒng)咨詢小組。該計劃由英特爾CEO帕特·基辛格親自宣布。   x86生態(tài)系統(tǒng)咨詢小組(
    的頭像 發(fā)表于 10-16 13:49 ?858次閱讀

    ARM 架構工控機與 X86 架構工控機:差異究竟在哪?

    控制系統(tǒng)等行業(yè)。本文詳細分析一下ARM工控機與X86架構工控機,供大家參考。 應用領域:ARM控制器適用于小型應用,邊緣計算、自動化控制、物聯(lián)網(wǎng)關、智慧城市、智能設備等場景,比如ARM
    的頭像 發(fā)表于 09-20 15:13 ?937次閱讀
    <b class='flag-5'>ARM</b> 架構工控機與 <b class='flag-5'>X86</b> 架構工控機:差異究竟在哪?

    就服務器而言,ARM架構與X86架構有什么區(qū)別?各自的優(yōu)勢在哪里?

    x86 架構服務器在市場占主導,有強大處理能力和廣泛軟件兼容性,廣泛用于企業(yè)數(shù)據(jù)中心。ARM 架構服務器近年崛起,憑借低功耗、高效能優(yōu)勢在云計算和微服務領域及嵌入式系統(tǒng)和物聯(lián)網(wǎng)設備中有廣泛應用。總之,兩種架構各有優(yōu)勢,滿足不同
    的頭像 發(fā)表于 09-09 14:05 ?2715次閱讀

    什么是ARM架構?什么是X86架構?兩者的區(qū)別是什么?

    ,1990 年為與蘋果合作成立 ARM 公司,開啟全球廣泛應用之路。 (二)技術特點與優(yōu)勢 ARM 架構采用精簡指令集,節(jié)能高效,指令集簡化、數(shù)目少且長度固定,多用寄存器,尋址靈活簡單,執(zhí)行效率高。同等性能下,功耗遠低于 x86
    的頭像 發(fā)表于 09-06 10:40 ?1923次閱讀

    樹莓派是x86還是arm

    樹莓派(Raspberry Pi)是一款由英國樹莓派基金會(Raspberry Pi Foundation)開發(fā)的微型計算機。它基于ARM架構,而非x86架構。 一、樹莓派的發(fā)展歷程 樹莓派的誕生
    的頭像 發(fā)表于 08-30 15:42 ?2208次閱讀

    X86架構處理器有哪些優(yōu)點和缺點

    X86架構處理器作為計算機領域的重要組成部分,具有多個顯著的優(yōu)點和一定的缺點。以下是對X86架構處理器優(yōu)缺點的詳細分析。
    的頭像 發(fā)表于 08-22 11:25 ?4311次閱讀

    X86架構和ARM架構有什么區(qū)別

    X86架構和ARM架構是兩種主流的CPU架構,它們在多個方面存在顯著的差異。以下是對這兩種架構的詳細比較,涵蓋了追求目標、應用領域、技術特點、性能功耗比、軟件生態(tài)以及未來趨勢等方面。
    的頭像 發(fā)表于 08-22 11:21 ?1.2w次閱讀

    鴻道Intewell工業(yè)操作系統(tǒng)ARM平臺生態(tài):飛騰E2000Q

    鴻道Intewell操作系統(tǒng)還具有高度的兼容性和易用性,支持X86架構,能夠與Intel全系列處理器良好配合,同時兼容多種外設和硬件平臺,便于集成和擴展。它還注重用戶體驗,提供友好的開發(fā)和調(diào)試工具,簡化了在
    的頭像 發(fā)表于 08-06 17:40 ?873次閱讀
    鴻道Intewell工業(yè)操作<b class='flag-5'>系統(tǒng)</b><b class='flag-5'>ARM</b><b class='flag-5'>平臺</b>生態(tài):飛騰E2000Q

    探索RISC-V二進制翻譯,openKylin成功在SG2042平臺運行X86架構軟件!

    眾所周知,在新的指令集架構發(fā)展初期,往往采用兼容其他架構軟件的方法來拓展自身生態(tài)體系,如蘋果公司的Rosetta2和微軟的Arm64EC,都是將X86架構軟件運行在ARM架構的系統(tǒng)之上
    的頭像 發(fā)表于 07-24 08:34 ?899次閱讀
    探索RISC-V二進制翻譯,openKylin成功在SG2042<b class='flag-5'>平臺</b>運行<b class='flag-5'>X86</b>架構軟件!

    ElfBoard技術貼|如何將libwebsockets庫編譯為x86架構

    在之前的文章中,我們已經(jīng)詳細介紹了如何交叉編譯libwebsockets并將其部署到ELF1開發(fā)板上。然而在調(diào)試階段,發(fā)現(xiàn)將libwebsockets在Ubuntu環(huán)境下編譯為x86架構可能更為方便
    的頭像 發(fā)表于 07-10 09:38 ?1531次閱讀
    ElfBoard技術貼|如何將libwebsockets庫編譯為<b class='flag-5'>x86</b>架構

    I.MX6ULL-飛凌 ElfBoard ELF1板卡 - 如何在Ubuntu中編譯OpenCV庫(X86架構)

    在之前發(fā)布的文章中探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在 Ubuntu 環(huán)境下將 OpenCV 編譯為 X86 架構可能更加方便和高效。 通過在主機上編譯并
    發(fā)表于 06-07 09:32
    主站蜘蛛池模板: 久色乳综合思思在线视频 | 在线亚洲专区中文字幕 | 人人碰国产免费线观看 | 国产私拍福利精品视频 | 国产精品一区二区AV97 | 超碰在线 视频 | 日日夜夜天天操 | 欧美日本高清动作片www网站 | 品色堂主页 | 国产美女一区二区 | 国产精品99精品无码视亚 | 91热久久免费精品99 | 翁公吮她的花蒂和奶水 | 受被攻做到腿发颤高h文 | 成人欧美尽粗二区三区AV | 1级午夜影院费免区 | 琪琪伦伦影院理论片 | 久久精品免视看国产 | 伊人久久大香线蕉综合亚洲 | 噼里啪啦免费观看视频大全 | 大胸美女脱内衣黄网站 | 中文字幕亚洲乱码熟女在线萌芽 | 在线观看精品视频看看播放 | 天天操狠狠操夜夜操 | 超碰在线视频 免费 | 亚洲免费福利在线视频 | 国产亚洲国际精品福利 | 中文字幕无码A片久久 | 亚洲精品视频在线观看免费 | 青娱乐在线一区 | 亚洲国产精品天堂在线播放 | 2020国产成人精品视频人 | 欧美97色伦影院在线观看 | 亲嘴扒胸摸屁股视频免费网站 | 精品爽爽久久久久久蜜臀 | 狠狠撩色姣姣综合久久 | 最近中文字幕在线中文视频 | 人人在线碰碰视频免费 | 久久re视频这里精品免费1 | 国产亚洲精品久久久999蜜臀 | www红色一片 |

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品