免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

復(fù)旦微FMQL45T900開發(fā)實(shí)戰(zhàn):從交叉編譯到BSP配置與啟動(dòng)調(diào)試全解析

復(fù)旦微FMQL45T900開發(fā)實(shí)戰(zhàn):從交叉編譯到BSP配置與啟動(dòng)調(diào)試全解析 拿到復(fù)旦微 FMQL45T900 核心板的第一周我基本是在查文檔、翻論壇、試錯(cuò)、再看文檔的循環(huán)里度過的。這塊板子的定位很明確國產(chǎn)化 ARMFPGA 單芯片方案PS 端雙核 Cortex-A9PL 端是大規(guī)??删幊踢壿嫼?Xilinx Zynq-7045 屬于同一梯隊(duì)。但它畢竟不是 Zynq開發(fā)環(huán)境的搭建鏈路里藏著不少只有踩過才知道的細(xì)節(jié)。這篇文章就把我從零開始搭 ARM 開發(fā)環(huán)境、啃 BSP 配置的全過程整理出來重點(diǎn)覆蓋交叉編譯工具鏈的選擇、BSP 各組件的作用、從 BOOT.BIN 到內(nèi)核 rootfs 的完整構(gòu)建流程以及調(diào)試時(shí)最容易翻車的幾個(gè)地方。無論你是剛從 STM32 切到這種異構(gòu) SoC還是已經(jīng)在做國產(chǎn)化替代項(xiàng)目這篇都值得存一份當(dāng)參考。1. FMQL45T900到底是個(gè)什么芯片架構(gòu)與核心板選型分析1.1 PS與PL雙域架構(gòu)為什么說它是單片系統(tǒng)FMQL45T900 最核心的概念是 PSProcessing System和 PLProgrammable Logic雙域架構(gòu)。PS 端是一顆完整的雙核 ARM Cortex-A9 處理器帶 NEON 浮點(diǎn)加速、L1/L2 Cache、DDR 控制器、豐富的外設(shè)接口UART、SPI、I2C、USB、SDIO、Ethernet 等PL 端則是大規(guī)模 FPGA 邏輯資源你可以把它理解成一張可以反復(fù)重新配置電路的白紙。這兩個(gè)域不是各自獨(dú)立工作而是通過 AXI 高性能總線互聯(lián)。PS 可以把 PL 里的自定義硬件模塊映射成內(nèi)存地址直接讀寫PL 也可以主動(dòng)發(fā)起 DMA 訪問 DDR甚至給 PS 發(fā)中斷。所以這顆芯片和普通的 ARM SoC 有個(gè)本質(zhì)區(qū)別它不只是CPU 加外設(shè)而是CPU 加可重構(gòu)硬件加速器特別適合通信基帶處理、圖像采集預(yù)處理、高速數(shù)據(jù)采集、工業(yè)控制這類需要貼著硬件做定制的場景。很多從 STM32 轉(zhuǎn)過來的朋友容易有一個(gè)誤解覺得 FPGA 就是用來代替 CPU 寫邏輯的。實(shí)際上在 FMQL45T900 里L(fēng)inux 跑在 PS 端PL 更像是一塊聽話的加速電路。你寫好的 Verilog 模塊算出的結(jié)果通過 AXI 總線交給 Linux 應(yīng)用程序讀取或者反過來由應(yīng)用程序下發(fā)控制參數(shù)。系統(tǒng)架構(gòu)層面它就是一個(gè)標(biāo)準(zhǔn)的 ARM Linux 主機(jī)加若干自定義硬件外設(shè)。1.2 核心板起步的選型邏輯拿到手的是核心板而不是自己畫的底板這個(gè)選擇在項(xiàng)目初期非常關(guān)鍵。FMQL45T900 的 PS 端對 DDR 的布線要求很高等長、阻抗、參考電壓、電源時(shí)序任何一環(huán)出問題都會(huì)導(dǎo)致系統(tǒng)啟動(dòng)不穩(wěn)定。核心板廠家已經(jīng)把 DDR3/DDR4 顆粒、電源管理、時(shí)鐘、啟動(dòng) Flash、千兆網(wǎng) PHY 這些難啃的骨頭全部做好了并且經(jīng)過量產(chǎn)驗(yàn)證我在底板上只需要關(guān)心怎么把擴(kuò)展引腳引出來、按什么接口標(biāo)準(zhǔn)設(shè)計(jì)自己的外設(shè)電路。核心板通常引出的接口包括PS 端的 MIO 引腳、PL 端的 HP/HR Bank、JTAG、串口、以太網(wǎng)、USB、SD 卡接口等。我在項(xiàng)目里把 PL 端一部分引腳接到了自研的高速 ADC 子板上PS 端則通過 MIO 接了 LED、按鍵和一個(gè) RS485 收發(fā)器。這樣一來硬件設(shè)計(jì)的工作量主要集中在底板的外設(shè)電路和電源上而不用碰最復(fù)雜的 DDR 和 PL 配置。有一件事要特別提醒拿到核心板先查清楚它的啟動(dòng)模式撥碼和默認(rèn)串口映射。不同廠家的核心板對 UART0/UART1 的默認(rèn)映射可能不一樣我第一次就因?yàn)樵阱e(cuò)誤串口上干等日志浪費(fèi)了半小時(shí)。先把板子附帶的硬件手冊里關(guān)于啟動(dòng)模式、串口、JTAG 的章節(jié)讀透再上電。1.3 與Zynq-7000生態(tài)的關(guān)聯(lián)與邊界FMQL45T900 在架構(gòu)設(shè)計(jì)上參考了 Zynq-7000 系列很多基礎(chǔ)概念FSBL、U-Boot、設(shè)備樹、bootgen 生成 BOOT.BIN是相通的。這意味著網(wǎng)上大量的 Zynq 開發(fā)教程、U-Boot 編譯方法、Linux 內(nèi)核移植經(jīng)驗(yàn)大部分思路可以直接借用。尤其是 Xilinx 維護(hù)的 u-boot-xlnx、linux-xlnx 代碼倉庫在很多以 Zynq 為藍(lán)本的國產(chǎn)化 SoC 上都能編譯通過或小改即可用。但參考不等于照搬。復(fù)旦微的工具鏈和 Xilinx Vivado 并不完全一致硬件描述文件類似 XSA/HSI 的工程導(dǎo)出文件的格式、FSBL 源碼的細(xì)節(jié)、部分外設(shè)寄存器地址都可能存在差異。所以正確姿勢是用 Zynq 的資料理解框架和原理但最終一切以復(fù)旦微配套的《FMQL45T900 軟件調(diào)試手冊》和 BSP 發(fā)布包為準(zhǔn)。我自己踩過的一個(gè)典型坑是直接拿了 Zynq 的 U-Boot defconfig 去編結(jié)果串口初始化參數(shù)不對啟動(dòng)日志全亂碼。后來換了 BSP 自帶的 defconfig基本一次通過。2. 開發(fā)環(huán)境選型的現(xiàn)實(shí)考量授權(quán)工具鏈還是開源GCC2.1 三條主流環(huán)境路線的橫向?qū)Ρ却罱?ARM 開發(fā)環(huán)境的第一步不是裝軟件而是想清楚走哪條路。針對 FMQL45T900 這種 Cortex-A9 核我實(shí)際比較過三條路線各有各的適用場景。第一是 ARM 官方商業(yè)套件也就是 DS-5 配 ARM Compiler 5。這套工具鏈對 ARM 架構(gòu)的支持最深入編譯優(yōu)化也好但需要 License。網(wǎng)上很多人找arm compiler 5.06 update 7 (build 960)下載其實(shí)都是想繞過授權(quán)限制這個(gè)我不建議你折騰一方面是合規(guī)風(fēng)險(xiǎn)另一方面是后續(xù)維護(hù)成本高。第二是復(fù)旦微/類似 Vivado 的圖形化 IDE 完整流程。它會(huì)幫你生成 FSBL、設(shè)備樹、啟動(dòng)鏡像比較適合 FPGA 工程師習(xí)慣的點(diǎn)按鈕式開發(fā)。但 IDE 對環(huán)境的封裝太多一旦啟動(dòng)過程出問題黑盒很難排查而且 IDE 版本和交叉編譯器版本經(jīng)常綁死升級很痛苦。第三條是純命令行路線Linaro 出品的 arm-linux-gnueabihf- 交叉編譯器加上手動(dòng)編譯 U-Boot、內(nèi)核、設(shè)備樹、根文件系統(tǒng)。整個(gè)過程全部可見、可控、可復(fù)現(xiàn)出了問題能順著 Log 一層層查這是我最推薦的做法也是這篇文章采用的方式。路線工具鏈來源優(yōu)點(diǎn)缺點(diǎn)適用人群DS-5 ARM CompilerARM 商業(yè)授權(quán)架構(gòu)支持最佳、調(diào)試器強(qiáng)大License 貴、環(huán)境封閉商業(yè)項(xiàng)目正規(guī)授權(quán)用戶圖形化 IDE 全流程芯片廠商配套上手快、集成度高黑盒、排錯(cuò)難、版本綁死FPGA 背景工程師Linaro GCC 命令行開源免費(fèi)全流程可見可控、社區(qū)資料多需要 Linux 基礎(chǔ)、初期配置繁瑣想徹底搞懂 BSP 的嵌入式工程師2.2 為什么我最終選了Linaro GCC路線我選 Linaro GCC 的核心原因就一個(gè)可控性。BSP 移植這件事本身就是在跟底層打交道如果工具鏈也是黑盒出了問題根本分不清是代碼問題、編譯問題還是鏈接腳本問題。用開源工具鏈雖然初期要手敲命令但整個(gè)編譯過程每一步都清清楚楚。另外一個(gè)重要考量是社區(qū)生態(tài)。Zynq 系列在工業(yè)界用得極廣幾乎所有 BSP 相關(guān)問題都能在論壇上搜到解決方案而 Linaro GCC 就是大多數(shù) Zynq 項(xiàng)目默認(rèn)的交叉編譯工具鏈。FMQL45T900 和 Zynq 在 ARM 內(nèi)核架構(gòu)上同源所以這些經(jīng)驗(yàn)可以直接平移到復(fù)旦微平臺上。真到了出問題的時(shí)候你能搜到的資料、能請教的人都是以這套工具鏈為基礎(chǔ)的。版本選擇上建議用 GCC 7.5 或 GCC 8.x 的 linaro 版本太老的 4.9 在編譯新版內(nèi)核時(shí)會(huì)有兼容問題太新的 12.x 又可能引入額外的 ABI 差異。我最后固定在 gcc-linaro-7.5-2019.12-x86_64_arm-linux-gnueabihf 這個(gè)版本上編譯 U-Boot、內(nèi)核、Qt 5.5.10 應(yīng)用都表現(xiàn)穩(wěn)定。2.3 交叉編譯工具鏈的安裝與自檢安裝 Linaro GCC 的步驟其實(shí)很簡單核心是解壓、加載 PATH、驗(yàn)證三件事。我習(xí)慣把工具鏈放在 /opt 下這樣所有用戶都能使用而且目錄路徑固定后Makefile 里的 CROSS_COMPILE 變量可以一直寫絕對路徑。# 下載后解壓到 /opt包名根據(jù)實(shí)際版本調(diào)整 sudo tar -xJf gcc-linaro-7.5-2019.12-x86_64_arm-linux-gnueabihf.tar.xz -C /opt/ # 添加環(huán)境變量建議寫到 ~/.bashrc 末尾 export PATH/opt/gcc-linaro-7.5-2019.12-x86_64_arm-linux-gnueabihf/bin:$PATH source ~/.bashrc # 驗(yàn)證工具鏈可用并確認(rèn)版本 arm-linux-gnueabihf-gcc -v驗(yàn)證輸出里要重點(diǎn)看三行Target 是否為 arm-linux-gnueabihf、gcc version 是否為所選版本、線程模型是否為 posix。確認(rèn)無誤后再交叉編譯一個(gè)最小可執(zhí)行文件放到 ARM 板子上試運(yùn)行。cat hello.c EOF #include stdio.h int main() { printf(FMQL45T900 ARM OK\n); return 0; } EOF arm-linux-gnueabihf-gcc hello.c -o hello file hellofile 命令輸出顯示 ELF 32-bit LSB executable, ARM, EABI5 就說明編譯目標(biāo)正確。把這個(gè) hello 通過 U 盤或網(wǎng)絡(luò)傳到板子上chmod x 后執(zhí)行能打印出對應(yīng)字符串就算環(huán)境通了。這一步千萬別跳過很多后續(xù) BSP 編譯的詭異錯(cuò)誤根源都是交叉編譯器本身沒裝好提前驗(yàn)證能省一整天的排查時(shí)間。3. BSP配置核心流程從交叉編譯到內(nèi)核與根文件系統(tǒng)3.1 BSP里面到底裝了什么BSPBoard Support Package這個(gè)名詞聽起來很抽象實(shí)際拆開看就是一套讓 Linux 能在特定板卡上跑起來的軟件集合。一個(gè)完整的 Zynq 類 BSP 至少包含四部分FSBLFirst Stage Boot Loader、U-Boot、Linux 內(nèi)核、設(shè)備樹再加上外圍的根文件系統(tǒng)和各種驅(qū)動(dòng)模塊。FSBL 是芯片上電后第一個(gè)由用戶控制的程序它負(fù)責(zé)最基礎(chǔ)的硬件初始化尤其是 DDR 控制器的配置和 CPU 頻率設(shè)置。這塊代碼通常由芯片廠商以源碼形式提供編譯出來是一個(gè) ELF 文件。U-Boot 是第二階段引導(dǎo)程序負(fù)責(zé)加載內(nèi)核鏡像和設(shè)備樹到內(nèi)存然后跳轉(zhuǎn)到內(nèi)核執(zhí)行。內(nèi)核就是 Linux 本身設(shè)備樹則是一份描述硬件拓?fù)涞恼f明書告訴內(nèi)核我有幾個(gè)串口、DDR 多大、PL 里掛了什么外設(shè)分別映射在哪個(gè)地址。理解這條鏈的關(guān)鍵在于每一級 bootloader 只做有限的事然后把手里的控制權(quán)交給下一級。FSBL 不需要知道 Linux 是什么只需要把 DDR 初始化好、加載 U-BootU-Boot 不需要知道怎么跑應(yīng)用只需要把內(nèi)核和設(shè)備樹按約定地址放好并跳轉(zhuǎn)。這種模塊化設(shè)計(jì)讓每一層都能獨(dú)立調(diào)試這也是為什么我建議你按順序編譯并逐個(gè)驗(yàn)證而不是一把梭。3.2 編譯U-Boot讓第一階段引導(dǎo)跑通拿到復(fù)旦微提供的 BSP 發(fā)布包之后里面通常會(huì)有 u-boot 源碼目錄。我的習(xí)慣是先看兩個(gè)文件README 和 configs/ 目錄下是否有對應(yīng)板卡的 defconfig。復(fù)旦微 BSP 里一般會(huì)帶一個(gè)類似于 fsm 或 fmql 開頭的 defconfig如果沒有就找 xilinx_zynq_virt_defconfig 作為基準(zhǔn)再手動(dòng)改。export ARCHarm export CROSS_COMPILEarm-linux-gnueabihf- make distclean make 你的板卡defconfig make -j$(nproc)編譯過程如果順利會(huì)在 u-boot 目錄下生成 u-boot.elf 和 u-boot.bin。u-boot.elf 是給 FSBL 加載用的u-boot.bin 是裸二進(jìn)制后面打包 BOOT.BIN 時(shí)通常用 .elf??吹?U-Boot ... for FPGA 之類版本號就說明編出來了。這里有個(gè)容易忽略的細(xì)節(jié)U-Boot 的環(huán)境變量默認(rèn)是寫死在編譯配置里的比如 bootcmd、bootargs、串口波特率。如果你板子的以太網(wǎng)地址、DDR 大小和默認(rèn)值不同編譯前最好先查一下 defconfig 里的 CONFIG_BOOTCOMMAND 和 CONFIG_EXTRA_ENV_SETTINGS把默認(rèn) bootargs 里的 console 參數(shù)改成你的實(shí)際串口設(shè)備比如 consolettyPS0,115200。否則后面啟動(dòng)內(nèi)核時(shí)你會(huì)遇到串口毫無輸出或者亂碼的尷尬。3.3 編譯內(nèi)核與設(shè)備樹PL側(cè)外設(shè)怎么暴露給系統(tǒng)內(nèi)核編譯比 U-Boot 稍微復(fù)雜一點(diǎn)因?yàn)槟阈枰却_定內(nèi)核版本再考慮配置裁剪。FMQL45T900 的 BSP 基于哪個(gè)內(nèi)核分支就以哪個(gè)為準(zhǔn)一般 4.19 或 5.4 比較多見。編譯前先清理掉之前的配置防止殘留的 .config 造成干擾。export ARCHarm export CROSS_COMPILEarm-linux-gnueabihf- make distclean make BSP自帶的內(nèi)核defconfig make -j$(nproc) UIMAGE_LOADADDR0x8000 uImage make -j$(nproc) dtbs編內(nèi)核的時(shí)候UIMAGE_LOADADDR0x8000 是必須的因?yàn)?ARM 內(nèi)核一般以 uImage 格式加載這個(gè)地址告訴 U-Boot 把內(nèi)核放到哪里。dtbs 會(huì)生成對應(yīng)的設(shè)備樹二進(jìn)制文件比如 zynq-fmql45t900.dtb在 arch/arm/boot/dts/ 目錄下。設(shè)備樹是 BSP 配置的核心難點(diǎn)。它本質(zhì)上是給內(nèi)核看的一張硬件清單。其中 PL 側(cè)的 IP 核比如 AXI GPIO、DMA、自研 IP地址和中斷號都是在 FPGA 工程里定義好的需要手動(dòng)在設(shè)備樹里添加節(jié)點(diǎn)。比如我在 PL 里加了一個(gè) AXI GPIO 模塊基地址是 0x40000000中斷號是 31設(shè)備樹里就要寫類似的節(jié)點(diǎn)/ { amba_pl: amba_pl { compatible simple-bus; ranges; axi_gpio_0: gpio40000000 { compatible xlnx,xps-gpio-1.00.a; reg 0x40000000 0x10000; interrupt-parent intc; interrupts 0 31 4; #gpio-cells 2; gpio-controller; }; }; };很多新手在這里卡住根本原因是沒有把 FPGA 工程里的地址分配和 dts 里的 reg 字段對應(yīng)起來。我建議你在配置設(shè)備樹之前先回頭把自己的 FPGA 工程地址映射 table 打出來逐個(gè)核對。這個(gè)核對過程雖然繁瑣但一旦對錯(cuò)一次后面 Linux 里讀外設(shè)寄存器全部會(huì)是總線錯(cuò)誤或者讀到 0xffffffff排查起來更痛苦。3.4 根文件系統(tǒng)buildroot與SD卡方案二選一內(nèi)核和設(shè)備樹編好之后還缺一個(gè)能用的根文件系統(tǒng)。這里有兩種主流方式。第一種是用 buildroot 從源碼構(gòu)建一個(gè)精簡的 rootfs完全可控、體積小適合正式產(chǎn)品。第二種是直接用現(xiàn)成的 Ubuntu/Debian rootfs 包解壓到 SD 卡省時(shí)省力適合功能驗(yàn)證和日常開發(fā)調(diào)試。Buildroot 的方式是配置、編譯、產(chǎn)物三條命令但它最大的成本在于首次編譯要下載大量源碼包而且要等很長時(shí)間。如果你只是想讓系統(tǒng)先跑起來看啟動(dòng)日志建議直接用 ubuntu-base 或 debian rootfs。# 以 ubuntu-base 為例 sudo mkdir -p /mnt/rootfs sudo tar -xJf ubuntu-base-18.04.5-base-armhf.tar.gz -C /mnt/rootfs # 用 qemu-user 進(jìn)入 rootfs 安裝必要軟件在 x86 主機(jī)上模擬 ARM sudo mount --bind /proc /mnt/rootfs/proc sudo mount --bind /sys /mnt/rootfs/sys sudo mount --bind /dev /mnt/rootfs/dev sudo mount --bind /dev/pts /mnt/rootfs/dev/pts sudo cp /etc/resolv.conf /mnt/rootfs/etc/resolv.conf sudo chroot /mnt/rootfs /bin/bash # 在 chroot 環(huán)境里安裝軟件 apt-get update apt-get install -y network-manager openssh-server vim得益于 qemu-user 的靜態(tài)模擬能力在 x86 主機(jī)上就能直接改 ARM rootfs 里的內(nèi)容非常方便。這種方式下系統(tǒng)起來之后基本就是一個(gè)完整的 Ubuntu 環(huán)境可以聯(lián)網(wǎng)裝軟件、跑服務(wù)對調(diào)試效率提升很大。當(dāng)然代價(jià)是可靠性不如 buildroot 精細(xì)打磨過的產(chǎn)物所以我的建議是驗(yàn)證階段用 Ubuntu rootfs 快速跑通產(chǎn)品化階段再切 buildroot。4. 啟動(dòng)燒寫與調(diào)試鏈路把系統(tǒng)真正跑起來的完整過程4.1 Zynq類SoC的啟動(dòng)鏈BootROM到用戶空間的每一步FMQL45T900 的啟動(dòng)流程和 Zynq 一脈相承整體分四步。芯片上電后片內(nèi) BootROM 先運(yùn)行它根據(jù)啟動(dòng)模式引腳的電平狀態(tài)決定從哪里加載 FSBL——可能是 QSPI Flash也可能是 SD 卡或者 JTAG。BootROM 把 FSBL 加載到片內(nèi) RAMOCM并跳轉(zhuǎn)執(zhí)行這一步?jīng)]有串口日志輸出屬于靜默階段。FSBL 運(yùn)行后會(huì)完成 DDR 控制器的初始化這是整個(gè)啟動(dòng)鏈里最關(guān)鍵也最容易出問題的一步。DDR 沒配置好后續(xù)所有代碼都無法正常運(yùn)行。FSBL 接著把 U-Boot 從啟動(dòng)介質(zhì)加載到 DDR并引導(dǎo) U-Boot 執(zhí)行。U-Boot 啟動(dòng)后才會(huì)在串口打印出那一行行熟悉的版本信息所以如果你的串口完全沒有輸出問題大概率出在 BootROM、啟動(dòng)模式、FSBL 或 DDR 配置這幾環(huán)。再往后U-Boot 根據(jù) bootcmd 環(huán)境變量執(zhí)行啟動(dòng)命令把內(nèi)核鏡像和設(shè)備樹加載到指定內(nèi)存地址并跳轉(zhuǎn)。內(nèi)核接管之后掛載根文件系統(tǒng)然后運(yùn)行 PID 1init 或 systemd最終進(jìn)入用戶空間彈出一個(gè) root 登錄 Shell。整條鏈路每一級都有明確的輸出標(biāo)志U-Boot 版本號、內(nèi)核版本號、init 進(jìn)程啟動(dòng)日志順著這些標(biāo)志能很快定位問題出在哪一環(huán)。4.2 用bootgen拼裝BOOT.BINFSBL、bitstream、U-Boot 三樣?xùn)|西編譯好之后需要用 bootgen 工具打包成 BOOT.BIN這是 SD 卡或 QSPI 啟動(dòng)時(shí) BootROM 能直接識別的鏡像格式。bootgen 的用法是通過一個(gè) .bif 描述文件來定義打包內(nèi)容# boot.bif 內(nèi)容 the_ROM_image: { [bootloader] zynq_fsbl.elf fmql45t900.bit u-boot.elf } # 生成 BOOT.BIN bootgen -image boot.bif -o i BOOT.BIN -w on.bif 文件里的順序是有講究的bootloader 關(guān)鍵字標(biāo)記 FSBL緊接著是 PL bitstream然后是 U-Boot。BootROM 會(huì)先加載 FSBLFSBL 會(huì)把 bitstream 配置進(jìn) PL再啟動(dòng) U-Boot。如果你的 PL 邏輯需要在 Linux 起來之前就工作bitstream 必須打包在這個(gè)位置如果你希望 Linux 起來后用 fpga manager 再動(dòng)態(tài)加載 PL 邏輯也可以不在 BOOT.BIN 里放 bitstream但那樣系統(tǒng)啟動(dòng)的早期階段 PL 就是空白的。一個(gè)常見的坑是 bootgen 工具路徑不在 PATH 里或者版本和 BSP 要求不一致。建議把 bootgen 的完整路徑寫到 Makefile 或者打包腳本中并把版本信息記錄在 README 里避免換電腦之后打包出來的 BOOT.BIN 行為異常。4.3 SD卡分區(qū)與燒寫檢查SD 卡啟動(dòng)是最方便的開發(fā)方式只需要把 BOOT.BIN、內(nèi)核鏡像、設(shè)備樹、rootfs 按約定放好。SD 卡需要分兩個(gè)區(qū)第一個(gè)分區(qū)是 FAT32大小建議 500MB 左右存放 BOOT.BIN、uImage、dtb 文件第二個(gè)分區(qū)是 ext4存放 rootfs 內(nèi)容。# 假設(shè)SD卡設(shè)備是 /dev/sdb注意確認(rèn)設(shè)備名別把主機(jī)磁盤覆蓋了 sudo fdisk /dev/sdb # 刪除舊分區(qū)創(chuàng)建一個(gè) W95 FAT32 (LBA) 主分區(qū)剩余空間做 Linux 主分區(qū) sudo mkfs.vfat -F 32 /dev/sdb1 sudo mkfs.ext4 /dev/sdb2 sudo mkdir -p /mnt/boot /mnt/rootfs sudo mount /dev/sdb1 /mnt/boot sudo mount /dev/sdb2 /mnt/rootfs cp BOOT.BIN /mnt/boot/ cp uImage /mnt/boot/ cp zynq-fmql45t900.dtb /mnt/boot/ cp -ra /mnt/rootfs_orig/* /mnt/rootfs/ sync燒寫完別急著拔卡先檢查兩件事。第一FAT32 分區(qū)里的文件名是否和 U-Boot 環(huán)境變量 bootcmd 里寫的一致比如 U-Boot 里寫的是fatload mmc 0:1 0x3000000 uImage那文件名就必須叫 uImage大小寫敏感。第二rootfs 分區(qū)里關(guān)鍵目錄是否完整尤其是 /lib 和 /etc很多系統(tǒng)啟動(dòng)失敗都是因?yàn)?rootfs 解壓不完整或者動(dòng)態(tài)鏈接器缺失。4.4 串口日志解讀與NFS調(diào)試串口是嵌入式 Linux 開發(fā)的生命線。連接 FMQL45T900 的調(diào)試串口一般波特率是 1152008N1無流控。Linux 下用 minicom 或 picocom 都行我更快的是寫腳本方式sudo picocom -b 115200 /dev/ttyUSB0上電瞬間就要開始觀察串口輸出。如果完全無輸出先用萬用表確認(rèn)串口電平是否正常、TX/RX 是否接反、板子是否已經(jīng)處在正確的啟動(dòng)模式。如果只有 U-Boot 輸出但內(nèi)核沒起來用 CtrlC 打斷 U-Boot手動(dòng)執(zhí)行 bootcmd 一步步看日志配合printenv檢查環(huán)境變量是否被 U-Boot 重置。如果內(nèi)核起來了但掛載不上 rootfs那要么是設(shè)備樹里 chosen 節(jié)點(diǎn)的 bootargs 沒寫對要么是 rootfs 分區(qū)有問題。調(diào)試過程中我強(qiáng)烈建議配一個(gè) TFTP/NFS 網(wǎng)絡(luò)調(diào)試環(huán)境。把內(nèi)核和設(shè)備樹放到 TFTP 服務(wù)器把 rootfs 放到 NFS 導(dǎo)出目錄U-Boot 里設(shè)置 bootargs 為root/dev/nfs nfsroot192.168.1.100:/srv/nfs/rootfs ipdhcp。這樣每次編譯完內(nèi)核和 rootfs 之后不用反復(fù)拔插 SD 卡燒寫直接重啟板子從網(wǎng)絡(luò)加載就行開發(fā)效率翻倍。等全部調(diào)通之后再固化到 SD 卡或 QSPI做最終驗(yàn)證。5. 踩坑記錄與性能實(shí)測給后來者的一組關(guān)鍵參考5.1 坑一DDR初始化失敗導(dǎo)致啟動(dòng)中斷這是我遇到的第一個(gè)重大問題。板子上電后串口完全沒輸出用 JTAG 連接調(diào)試器后發(fā)現(xiàn) CPU 一直停在 FSBL 里 DDR 初始化調(diào)用處。FSBL 源碼里對 DDR 的配置是一大段寄存器序列這些參數(shù)必須和板子上實(shí)際焊接的 DDR 顆粒型號、容量、位寬嚴(yán)格匹配。排查過程是先把核心板硬件手冊里 DDR 型號和容量找出來再和 BSP 自帶的 FSBL 源碼中的配置參數(shù)對照。發(fā)現(xiàn)核心板配的是 1GB DDR3而 BSP 默認(rèn)配置只初始化了 512MB高地址訪問全部異常。解決辦法是找到 FSBL 中 DDR 配置的宏定義把地址映射和行/列/ bank 數(shù)按實(shí)際顆粒數(shù)據(jù)手冊修改同時(shí)更新設(shè)備樹里內(nèi)存節(jié)點(diǎn)的reg 0x00000000 0x40000000為實(shí)際容量。這個(gè)坑的教訓(xùn)是拿到任何新板子的第一件事一定是核對內(nèi)存配置。DDR 參數(shù)沒有通用的默認(rèn)值只能以板卡手冊為準(zhǔn)。你抄別人的配置大概率會(huì)在啟動(dòng)階段栽跟頭。5.2 坑二交叉編譯器版本與內(nèi)核版本匹配問題有段時(shí)間我編譯出來的內(nèi)核一啟動(dòng)就報(bào) undefined instruction 錯(cuò)誤有時(shí)甚至編完鏡像都不能解壓。后來查內(nèi)核文檔才發(fā)現(xiàn)新版內(nèi)核4.16默認(rèn)開了CONFIG_AEABI和各種新的編譯選項(xiàng)對編譯器版本有最低要求。Linaro GCC 4.9 太老生成的代碼在某些指令序列上會(huì)和 4.19 內(nèi)核的期望不一致。解決方案就是換編譯器版本直接從 GCC 4.9 升到 7.5。換了之后重新編譯內(nèi)核問題消失。這件事給我一個(gè)啟示BSP 發(fā)布包一般會(huì)標(biāo)注推薦的工具鏈版本最好嚴(yán)格按照它來。如果不確定優(yōu)先選社區(qū)驗(yàn)證最多、資料最多的中版本編譯器不要盲目追求新版本。同時(shí)保留好編譯器的下載地址和版本號在項(xiàng)目 README 里寫清楚換電腦、換同事接手時(shí)都能快速復(fù)現(xiàn)環(huán)境。5.3 坑三PL bitstream加載與fpga managerSPL 方案里 BOOT.BIN 里已經(jīng)打包了 bitstreamFSBL 會(huì)在 U-Boot 之前配置 PL這種方案的好處是硬件邏輯在 Linux 啟動(dòng)早期就緒適合那些需要 PL 立即參與系統(tǒng)的場景。但如果你后續(xù)在 Linux 運(yùn)行過程中需要更新 PL 邏輯就得用 fpga manager 框架。用 fpga manager 動(dòng)態(tài)加載 bitstream 時(shí)需要注意 bitstream 的格式。有些廠商的 bitstream 是二進(jìn)制 .bit但內(nèi)核 fpga manager 驅(qū)動(dòng)需要的是不帶頭部信息的 .bin 文件。我在開發(fā)中先用 FPGA 工具把 .bit 轉(zhuǎn)換為 .bin再在系統(tǒng)里用fpgautil -b xxx.bin寫入 PL或者直接調(diào)用 sysfs 接口/sys/class/fpga_manager/fpga0/load。這個(gè)環(huán)節(jié)最常見的錯(cuò)誤是加載后 PL 邏輯工作不穩(wěn)定表現(xiàn)為讀到全 0 或者全 1。原因多半是 PL 的時(shí)鐘沒有正確供給或者 PL 配置時(shí) DDR 控制器仍在忙。我最終建議如果項(xiàng)目允許盡量把核心 bitstream 固化在 BOOT.BIN 里運(yùn)行時(shí)的更新需求放在 rootfs 里做全量替換減少動(dòng)態(tài)加載的復(fù)雜性。動(dòng)態(tài)加載功能留作后臺維護(hù)的備用通路即可。5.4 Qt for ARM Linux開發(fā)的快速路徑很多使用 FMQL45T900 的項(xiàng)目都會(huì)涉及人機(jī)界面Qt 是 ARM Linux 上的主流選擇。構(gòu)建 Qt 交叉編譯環(huán)境有兩種方式一種是用 buildroot 直接構(gòu)建帶 Qt 的 rootfs適合最終產(chǎn)品另一種是單獨(dú)交叉編譯 Qt 庫部署到目標(biāo)板適合在 x86 主機(jī)上開發(fā) Qt 應(yīng)用。Qt 5.5.10 配 arm-linux-gnueabihf 是一套驗(yàn)證過的組合。交叉編譯 Qt 前要確保工具鏈支持 ARMv7-A 和 NEON并且在 configure 時(shí)明確指定./configure -release -opensource -confirm-license \ -xplatform linux-arm-gnueabihf-g \ -prefix /opt/qt5.5.10-arm \ -no-opengl -no-gtk -nomake examples -nomake tests這里有個(gè)非常容易踩的坑Qt 的 qmake 會(huì)用到目標(biāo)板上的 sysroot也就是 ARM rootfs。如果 sysroot 路徑不對編譯出來的程序在板子上運(yùn)行時(shí)會(huì)缺少一堆動(dòng)態(tài)庫。建議先把 rootfs 完整解壓到主機(jī)某目錄編譯 Qt 和編譯應(yīng)用時(shí)都用-sysroot指定這個(gè)目錄并在鏈接時(shí)用-rpath指向 Qt 庫安裝目錄避免運(yùn)行時(shí)找不到庫。界面性能方面FMQL45T900 的 PL 端如果放了顯示控制器 IP那 Qt 可以直接走 framebuffer 插件不需要 OpenGLCPU 渲染 800x480 分辨率的界面基本流暢。如果對動(dòng)畫性能有更高要求再考慮在 PL 端接 Mali 等 GPU IP但復(fù)雜度會(huì)明顯上升。5.5 一組實(shí)測數(shù)據(jù)與后續(xù)擴(kuò)展方向經(jīng)過完整搭建和調(diào)優(yōu)后用這套方案跑通 FMQL45T900 的啟動(dòng)和數(shù)據(jù)采集應(yīng)用我記錄了幾個(gè)關(guān)鍵數(shù)據(jù)供參考項(xiàng)目結(jié)果從上電到 U-Boot 串口輸出約 2.6 秒從 U-Boot 到內(nèi)核啟動(dòng)完成約 3.2 秒內(nèi)核到 rootfs 掛載并進(jìn)入 Shell約 5.8 秒U(xiǎn)buntu rootfssystemduImage 大小4.19 內(nèi)核基礎(chǔ)驅(qū)動(dòng)約 5.3 MB設(shè)備樹大小約 22 KB靜態(tài)編譯的最小 hello約 780 KB啟動(dòng)后系統(tǒng)空閑內(nèi)存約 750 MB1GB DDR 配置這些數(shù)字不是最優(yōu)值但作為開發(fā)板狀態(tài)足夠用。如果你做正式產(chǎn)品建議用 buildroot 替換 Ubuntu rootfs把啟動(dòng)時(shí)間壓進(jìn) 5 秒以內(nèi)在工業(yè)場景中很常見。后續(xù)擴(kuò)展方向我自己的計(jì)劃是先在 PL 端加一個(gè) DMA 采集模塊用 Linux 里的 u-dma-buf 驅(qū)動(dòng)做零拷貝數(shù)據(jù)通路把高性能 ADC 的采集數(shù)據(jù)直接送到用戶態(tài)同時(shí)在 Linux 里添加遠(yuǎn)程升級機(jī)制通過 U-Boot 的 distro boot 特性做雙分區(qū) A/B 互備升級。這套環(huán)境跑通之后后面的擴(kuò)展基本就是在往這條穩(wěn)固的鏈路上添磚加瓦心里會(huì)有底得多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
婷婷干五月综合在线播放| 操丝袜视频影院导航| 激情深爱五月天| 97午夜一区二区| 久久五月丁香综合17C| 狠狠色婷| 99久久这里只有精品| 亚洲无码成人网| 91干婷婷| 成人精品在线观看| 五月天社区| 91wwmm导航| 亚洲精品亚洲人成人网| 91久久久久久久91| 丁香六月婷婷激情| 久综合4| www,久久久| 深爱激情网噜噜色| 婷婷激情蜜桃玖玖丁香| 五月天色婷好好| 热久综合| 美女美女美女三级色天天天天天| 色亚洲视频| 97碰成超视频免费视频| 中文字幕+中文在线| 五月丁香六月激情综合| 丁香六月综合| 激情av| 超碰人人99| 99热这里只有精品96| 青青草原亚洲天堂| 亚洲啪视频| 日本在线观看91| 久久视频在线视频| 一二线视频 另类| 淫视馆aV二区一区| 99热精品中文字幕| 日本99热| 婷婷丁香色五月天| 成片免费观看大全| 91精产一区三区免费观看| 欧美色片中文字幕久久久久| 91麻豆国产三级精品福利在线观看| 色五月婷婷基地| 久热综合| 天天干天天干天天干| 99热免| 丁香婷婷色情| 五月丁香婷婷中文| 色情五月综合婷婷| 国产成人AV| 婷婷色网| 伊人激情网| 日本色色视频| 久久丝袜婷婷| 亚州激情网站无码| 激情婷婷五月天日本系列| 久色五月| 东京热伊人| 成人版视频在线观看| 97干视频在线| 99久久久久| 99精品免费视频| 五月丁香啪啪网| 五月香婷婷| 少妇人妻偷人精品无码视频新浪| 3DAV亚洲香蕉久久 一区二区| 色99xx| 五月深情久久| 99操逼| 九九热这里只有精品5| 91九色国产| 激情五月天婷婷直播| 怡红院 久久| 日本a片网址| 色播五月婷婷综合| 婷婷丁香18| 综合色影| 超级碰碰一区| 五月丁香在线视频观看| wwwwww.色| 五月激情综合网| 久久婷婷91| 99色色| 久久久国产精品黄毛片| 久大香蕉| 婷婷色成人| 婷婷久久色| 九九99免费视频| 五月色婷婷综合| 91 影音先锋| 69综合在线| 久久免费精品小视频| www.夜夜夜| 婷婷五月综合亚洲| 亚洲V国产V欧美V久久久久久| 国产av第一专区| 狠狠爱婷婷爱| 色XX综合网| 狠狠操综合| 九一牛视频探花| 99热国产精品| 色欲婷婷五月天丁香| 99热这里只有精品8| 激情 久久 婷婷| 六月大香蕉| 99热这里精| 狠狠爱综合| 五月丁香狠狠爱婷婷综合| 9久久AV| 99这里只有免费的小视频在线观看| 五月亭亭性| 久9热| 婷婷综合在线播放| 天天插天天爽| 久久天堂女人| 五月天激情开心网| 四川女人毛多水多A片| 久久免费操| 五月开心激情网| 婷婷丁香六月天| 五月丁香888| 亚洲mm色| 五月天色软件| 色婷婷六月天在线| 91干网站| 人人人舔人人人操人人人摸人人人97| 清纯唯美 激情四射| 五月丁香六月婷婷成人| 激情婷婷五月天| 五月丁香综合精品欧美| 五月婷婷婷自由综合| 久久综合人妻| 六月丁香婷婷拍拍| 国产AV一区二区三区最新精品| 9l视频自拍9l视频自拍九色学生| 色五月婷婷五月天| 91vip在线观看| 在线成人视频免费| 超碰超碰在线| 日日夜夜狠狠| 激情婷婷五六月天| 夜夜嗨一区二区三区直播内容| 激情久久久| 久久久久久综合88| 思思久久网| 色婷婷网| 在线五月色播| 九色综合网| 日日干综合| 五月天色五月| 第一区久久网站| 最近中文字幕2019视频1| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 五月激情小说| 天天日天天日天天搞| 老美AA片| 人妻久久久久久久| 99超级碰免费视频| 国产欧美精品AAAAAA片| 亚洲色色香蕉| 国产ava| 九九AV在线| 色天堂A| 婷婷99中文字幕| 99自拍视频网站| www.久久爱.com| 伊人www22综合色| 五月天婷婷爱| 婷婷丁香五月激情中文字幕版| 激情又色又爽又黄的A片| 人妻五月天激情开心网| 久婷自拍视频| 99这里只有精品| 插插网爽妇五月丁香| 538在线精品| www.开心激情| 九九精品在线视频观看| 四虎99热在线观看网站| 九九99九九99| 五月四色婷婷| 99婷婷| 亚洲精品又粗又大又爽A片| 日本噜噜色网| 欧美日韩999| 亚洲亚洲人成综合网络| 欧美在线97| 狠狠色丁香综合| 操B视频在线播放| 精品人妻久久久久| 久久婷婷六月| 人妻中文av| 激情久久五月天| 99成人精品六| 超碰人人操人人干| 丁香五月九九| 丁香五月婷婷天激情| 久久久久网站| 五月天婷婷视频| 香蕉久久国产AV一区二区| 丁香五月综合狠狠| 91超碰人人操| 99热6精品| 五月六月激情| 婷婷一本和五月丁香| 日韩无码性爱| 97人人操人人插| 欧洲亚洲免费视频9 | 欧美激情xxxXX| 青青艹b| 91九色网| 五月婷婷天| 一级操逼内射在线视频| 99色1| 久久综合中文| 香蕉婷婷色五月| 色婷婷很很十八禁| 少妇大叫太大太粗太爽了A片 | 手机AVAV天堂看网| 五月婷婷色播视频| 人妻激情综合| 天天干天天操天天射| 久久激丁香| 久草五月天| 婷婷激情社区| 伊人AV五月婷| 九九久久综合网站| 激情的五月| 97AV在线视频| 9久久精品| 五月婷婷狠狠久久| 97操| 久久999久久999久久999久久| 亚洲精品白浆高清久久久久久 | 99国产这里只有精品| 91丨九色丨东北熟女| 色五月婷婷大香蕉| 91人人澡人人爽人人看| g00d人体西西| 99日逼视频| 99热 在线播放| 性99网站| 欧美啄木乌丝袜人妻系列| 五月丁香五月丁香| 日日操,日日爽| 九九色热| 色婷婷五月天激情久久| 玖玖资源网站最新站| 亚洲性受XXXX五月丁香| 一个色的综合| 5月婷婷激情网| 久热这里精品免费| 97亚洲色 torrent magnet| 免费看片操逼| 97碰碰视频| 1024在线视频| 99热999| 欧美日韩中国| 欧美日韩成人在线观看| 九九Av| 99re热精品在线视频| 嫩模aV在线| 91色综合网| 久久婷视频| 国产AV不卡福利| 99九精品| 淫荡家庭AV| 五月丁香五月丁香| 亚洲综合婷婷六月丁香五月| 色99色| www夜夜操| 五月丁香婷婷婷激情爱爱| 丁香激情网| 久久总和99| 性色五月天| 激情第四色| 久久婷婷午夜| 色婷婷综合成人| 日韩成人中文字幕| 日逼免费视频| www.婷婷五月天| 丁香五月婷婷影院| 精品日本视频444| 91操在线| 丁香六月亚洲| 亚洲免费av在线| 亚洲中文av| 亚洲视频一区| 九色无码| 亚洲激情区| 日韩啊啊啊| 大香蕉久久伊人婷婷五月丁香| 这里只有精品,日韩视频| 婷婷五月开心中文字幕在线| 五月激情婷婷综合| 成人.在线日韩| 涩五月丝袜婷婷| 99热最新网址| 婷婷伊人五月天| 超碰av在线| 婷婷五月花| 婷婷五月丁香色色| 99婷婷五月天| 五月婷婷婷丁香播| 欧美黄色一级| 亚洲色婷婷网站| 亚洲激情婷婷| 婷婷五月丁香基| 伊人色综合影院视频| 人人人人人人人人人草| 久久98| 风流少妇A片一区二区蜜桃| 一区=区操屄高清大全av| 婷婷射丁香| 五月 婷婷 成人| 大香蕉综合网| 99热热热国产超碰| 婷婷色av| 五月婷A V在线| 中文字幕永久免费| 久久久人妻| 91无码色色| 99热e| 国产婷婷五月天| 九月婷婷久久| 97碰碰视频在线观看免费| 五月丁香婷婷婷婷综合网| 久久婷婷综合网| 影院久久久| 五月丁香六月婷婷不卡免费无码 | 亚洲中文字幕网| 亚洲123区高清入口| 99久久久99久久91熟女| 九九色影视| 欧美三级视频下载| 欧美婷婷综合| 成人片在线免费看| 五月丁香五月综合欧美| 久久亭亭电影| 九九热视频精品| 少妇人妻丰满做爰XXX| www激情| 97超碰在线免费观看| 五月丁香久久激情综合| 丁香婷婷五月基地| 青青色com久久| 99re在线这里只有精品视频首页| 桃色五月婷婷| 国产精品成人av在线观看春天| 欧美人与性动交CCOO| 久久永久视频| 色色性爱视频| ,99视频久久| 五月婷婷干干干| 99久久www| 97爱艹婷婷开心丁香激情综合| 激情五月伊人婷婷| 在线播放中文字幕| 少妇人妻丰满做爰XXX| 超碰成人在线观看| 日本片日本片祼观看网站在线看中文版网页在线看 | 久久AV无码精品人妻系列试探| 五月丁香久久| 亚洲精品V天堂中文字幕| 婷婷五月小说色综合| 国产激情久久久| 激情婷婷丁香五月天| 婷婷久久精品| 性爱动图国产麻豆一区二区三区| 天天天天干| 九月婷婷综合八月丁香在线观看| 日韩一级一片内射视频4K| 亚洲久久婷婷丁香五月天| 丁香婷婷天堂| 天天综合中文| 高清视频一区| 亚洲视频在线观看| 99热这里只有精品最新| 99综合一区| 九月婷婷久久| 新激情五月天色播| 中文字幕AV网址| 五月天色图| 天天色爽| 狠狠狠狠狠狠色| 九九碰九九爱97超碰| 久久99热这里只有精品| 午夜婷婷六月天| 婷婷久久影院| 99热久久这里只有精品| 久草热在线视频| 182TV亚洲| 色丁香五月婷婷| 日日懆天天懆| 国产人妻操逼| 国产婷婷五月| 人妻体体内射精一区二区| 一级A片天天操夜夜操| www,色综合| www.婷婷五月| 亭亭五月色男人| 婷婷91| 精品久久久91久久影视网| 99热这里只有精品最新网址| 久久er这里只有精品| 欧美成人精品三区综合A片| 伍月婷丁香花全集| 久青青久| 色欲久久久久久综合网综合网| 丁香婷婷啪啪| 色色色地址| 激情小说色五月| 性爱久久| 五月婷婷之六月丁香| 伊人五月综合网| 婷婷六月天| 亚洲另类日本| 五月丁香婷婷综合网色欲| 久久精品91视频| 99精品国产在热久久| 色婷婷五月天在线观看| 校园激情 亚洲| 97干欧美| 亚洲精品在线视频| 丁香五月很很肏| 99精品在线观看| 人人摸人人澡人人| 五月激情婷婷丁香| 久久婷婷婷婷伊人| 成人色站,在线视频,看片-SS1AV| 99久在线| 97se视频在线| 色99婷婷五月天| 成人五月丁香花| 婷婷成人视频| 六月丁香久久| 97性视频| 九九在线精点品| 色色婷五月天| 久久草人妻| 97碰啪啪| 91碰超| 天天爽夜爽| 婷婷五月天激情综合网| 九九在线免费观看| 欧美99热| 欧美色六月婷婷| 天天爽人人综合免费7799| 欧美WW在线网| 日本欧美999久久久三级片| 亚洲综合网在线| 99超级碰免费视频| 天天插天天插| 最近中文字幕2019视频1| 天天日综合| 热九九精品| 九月激情综合| 九九久久五月天| 五月香婷婷| 99视频这里有精品| 色五月偷偷| 99九九在线视频| 啪啪黄页网| 殴美日韩成人| 99热都是精品| 色婷婷基地| 日韩另类| 大香焦啪啪啪| 5五月综合网亚洲| 91人人爽人人操| 日韩精品一区二区刘| 玖玖九九9999在线观看视频精品| www.色综合.com| 激情图片婷婷| 天天综合精品| 婷婷五月天亚洲丁香| 日本熟女一区二区| 五月综合在线| 五月婷婷中文| 99年操人人爽| 99资源在线| 91碰超| 色综合久| 婷婷激情五月综合基地| 99热这里只有精品66| 99热热这里只精品996小说| 99九九精品视频| 另类激情综合| 91丁香婷婷综合久久欧美| 91综合在线观看首页| 影音先锋四区| 天天操天天操| 激情 婷婷| 99热在线播放| 色综合久久8| www.黄色片-久久成人国产精品在线播放-999AV| 99性视频| 欧美天堂婷婷日韩| 99视频九九热| 好激情在线综合网| 久热91| av大片在线| 色五月婷婷激情基地| 日韩欧美颜射| 亚洲天天综合| 婷婷亚洲综合| 超级碰碰视频无码| 亚洲久久视频| 激情六月色| 婷婷五月天色色| 大香人妻| 亚洲欧洲自拍图片专区五月天| 九九99久久| 欧美99热| 好看的国产精品| 色天天综合成人网| 亚洲色99| 99热线观看9| 婷婷五月天,影院| 六月丁香啪啪啪| 99网| 超碰狠狠操| www.五月丁香| 久久人妻视步| 中文字幕在线aⅴ免费观看| 丁香婷婷色情| 亚洲六月色| 婷婷五月天福利| 踪合专区啪啪| 5月丁香婷婷激情网| 五月天伊人| 久久伊人9| 色色综合视频| 一本色综合色| 新99色色色色色色| 婷婷在线视频| 玖玖在线视| 综合婷婷五月丁香在线观看| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 丁香五月六月| 日韩AV在线免费| 五月天六月天| 色五月首页| 丁香九月综合| 丁香五月婷婷激情尤物| 99热观看| 最新丁香六月婷婷| WWW.五月com| 99爱免费视频在线观看| 亚洲情综合五月天| 五月激情网五月综合网| 96丁香六月婷婷蜜桃综合久久| 丁香婷婷色九月| 五月丁香婷婷综合网| 碰碰人人人| 欧美成人网婷婷综合在线| 五月亭亭直播| 五月婷婷六月丁香激情深爱| 色五月综合| 中文AV网| 噜噜噜狠狠色综合| 天天插综合网| 日日操夜夜爽白洁| 日日夜夜天天| 久久五月丁香综合17C| 夜精品无码A片一区二区蜜桃| 天天看片日日夜夜| 久九男女天堂| 丁香六月天堂| 91pornav在线| 91超碰九色| 秋霞性爱AV| 亚洲人妻av| 婷婷丁香人妻天久久| 五月婷婷在线视频| 激情五月天之六月婷婷| yjzz亚洲国产| 天天做夜夜爽| 色久九| 日日噜噜夜夜狠狠久久丁香五月| 这里只有在线精品| 亚洲三级无码| 熟女激情五月天 | 人人草人人视| 婷婷五月a| 狠狠操综合| 91婷婷搞| 色狠狠色噜噜AV天堂五区| 五月综合六月丁| 91嫩草国产线观看亚洲一区二区| 五月天精品视频| 日韩黄色电影| 秋霞免费视频| 狠狠色狠狠操| 久久色五月| 久久五月婷天天干| 九九色图| 青草五月天| 色哟哟性爱av| 俺去也婷婷| 久久激情五月天| 国产精品视频| 无码人妻丰满熟妇奶水区码| 色色色色热| 超碰在线国产| 丁香五月亚洲综合丝袜| 伊人激情综合网| 久久五月天合网| 99热综合在线观看| 九九99免费视频| 3p日韩网站视频| 婷色视频| 婷婷不干网| 天天肏高清在线| 婷婷久久免费看| 久久久A级视频| 99热精品在线| 天天日天天插| 69激情小说| 欧美天堂久久| 丁香婷婷五月综合欧美另类| 色五月丁香五月| 久8色色| 99人碰碰碰| 国产人妻777人伦精品HD| 色婷婷丁香五月| 婷婷天天综合| 人妻操逼视频。| 99热一本久道| 国产精品国产成人国产三级| 亚洲AV中文在线| 五月丁香六月婷婷婷婷| 丁香五月婷婷久久久| 91久久免费| 综合aV在线| 色色色色色综合| 日本色综合| xxx综合在线| 欧美极品999| 99热线观看9| 国产av网| www.9操| 狠狠穞A片一區二區三區| 成年人丁香五月| 精品人妻久久久久久久| 欧美狠狠一在草| 亚洲无码激情| 色婷婷狠狠久久综合五月| 久久女婷| 婷色五月| 亚洲色婷婷| 夜夜爽天天干| 综合色图区| 五月 激情视频| 99免费| 五月天影院| 爱婷婷久久视频| 色情五月天首页| 色99亚洲| 怕怕av| 久热这里只有精品3| 色综合中文| 久热久操久热久草国产91| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 99热精品在线播放观看| 777色婷婷爱五月| 婷婷综合激情| 五月天婷婷综合久久| 伊人99热| 月婷婷亚洲| 开心五月激情站| 婷婷丁香六月影视| 精品一区二区三区木瓜| 美女美女美女三级色天天天天天| 婷婷情色激情| 婷婷五月激情六月| 亚洲操精品| 成人短视频在线观看| 色婷婷影视| 久久综合激情| AA片在线观看视频在线播放| 日本黄色一级| 五月色婷丁香| 狠狠色97| 第四色色六月色综合| 天天爽天天日人人爱| 五月花成人网| 天天碰夜夜爽| 成人在线综合| 六月天婷婷| 日曰躁夜夜躁2026| 99资源人人| 生活片五区| 人人玩人人橾| 激情网综合| 综合网啪| 婷婷久久五月| 十二区无码| 久热AⅤ| 九月婷婷久久久| 就99这里只有精品| 天天五月天综合网址| 伊人久久大香蕉网| 色一情一乱一乱一区91Av| 激情五月丁香五月综合| 好色婷婷| 日日操,日日爽| 日日爽日日| 九九精品99| 禁欲电影完整版在线播放| 激情色五月天| 97在线视频人妻九色| 九九家庭影院| 婷婷久久色| www.色婷婷.com| 91人人人人人人人| 玖玖视频福利| 欧美成人色婷婷| 激情五月久久| 亚洲无码激情| 激情影院免费视频婷婷五月天| 五月丁香亭亭| 久久精品无码一区| 欧日韩成人| 五月天婷婷深深爱| 99热在线只有精品| 青青艹b| 三区激情四射av| 伊人五月综合网| 91打屁股免费看| 色综合九九| 五月丁香婷婷成人综合网| 色99网站| 国产亚洲色婷婷久久99精品91 www.riverspirits.org www.hnnun.com www.changh | 亚洲狠狠干| 欧美色色色色色| 99热全是精品| 婷婷五月色综合| 色婷婷综合视频| 欧美激情中文字幕| 久久久精品色色色| 无遮挡国产高潮视频免费观看 | 五月宗合激情网| 97人人超| 婷婷五月天AV| 婷婷丁香亚洲色综合91| 九九精品丁香花| 五月丁香啪啪激情| 夜夜谢天天干| 色综合激情| 99操免费视频| 中文字幕高清av| 色婷婷伦理| 色婷婷影视| 五月丁香久久网| 天天插天天插| 五月婷婷黄| 激情五月天在线视频| 99人人操人人摸| 国产激情视频在线观看| 99操视频| 久热婷婷| 婷婷99中文字幕| 五月丁香自拍| 超碰在线99热| 国产综合婷婷| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 中文字幕人妻熟女在线| 色999五月色| 美日韩成人| 97人人搞| 五月天大香蕉| 操一区| 色五月在线观看| 超碰在线人妻| 79精品视频在线观看,| 亚洲天堂热| 久久草大香蕉| 狠色综合网| 狠狠操狠狠爱| 春色激情第四色| 美国少妇性做爰| 九六五月天婷婷| 综合色色五月| 狠狠干五月丁香综合网| 成人免费视频一区| 五月天社区婷婷丁香社区| 99人人操人人操人人精| 爆乳熟妇一区二区三区爆乳照片| 久久久99久久| 色噜噜狠狠色综无码久久合欧美| 色婷婷成人丁香| 欧美交换配乱吟粗大25P| 99高级会所久久| 九九操屄| 狠狠搞狠狠操| 日本色色图| 国产精产国品一二三在观看| 99爱最新免费视频在线观看| 超碰免费人人肏| 欧美这里只有精品| 91色综合| 情欲禁地| 人人干人人看| 色色吧综合| 国产乱妇乱子在线播视频播放网站| 久久成人天| 性爱激情小说AV五月丁香花| 99激情在线| 狠狠狠狠免费| 激情综合激情综合| av中文在线| 亚洲网在线观看| 日日噜狠狠色综合久| 九九色图| 国产麻豆视频| 黄色一级影片| 丁香五月成人论坛| 久久免费试看120秒| 综合网色| 九九热视频免费的| 97人人做| 丁香花大香蕉婷婷综合| 五月丁香好婷婷A片网| 三区激情四射av| 日韩精品99久久| 丁香五月天堂| 97热这里只有精品| 欧美又粗又大一区二区在线观看| 99re资源在线视频导航| 丁香激情网| 五月丁香花免费视频| 日韩一级A片黄色| 婷婷五月激情欧美大胆视频| 97香蕉久久超级碰碰高清版 | 婷婷六月五月天综合| 碰碰女| 九久九精品| 九色激情网| 五月婷在线影院| 夜精品无码A片一区二区蜜桃| 精品亚洲国产成AV人片传媒| 婷婷五月丁香在线视频| 色色色综合视频| 久久激情五月网| 日本色色影片| 婷婷六月综合在线| 五月婷久久草| 欧美五月婷婷综合| 99色在线| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 在线日本www| 激情五月天在线视频| 日日夜夜天天综合| 五月天婷婷激情小说| 狠狠狠狠狠狠色| 91麻豆国产三级精品福利在线观看| 亚洲99综合| 99精品综合| 夜夜撸天天日| 天天草天天舔| 婷婷丁香射射| 久婷| 色婷婷国产精品综合在线观看| 九九精品9| 免费做A爰片77777| 五月综合色| 中文成人在线| 九九在线精点品| 午夜做爱影院| 丁香色情五月综合网站| 五月天婷婷久色| 五月天六月丁香| 国产成人+综合亚洲+天堂| 色吊丝永久访问网址| 国内在线99视频| 99在线看视频| 91九色PORNY大屁股| 亚洲欧洲中文日韩久久AV乱码| 人人爱国产| 久久曰曰| av中文在线| 色九月婷婷| 激情深爱婷婷网| 开心婷婷中文字慕| 涩五月婷婷| AA丁香综合激情| 亚洲区,视频区,视频区免费| 婷婷久久五月| 天天爽爽日日做做| 丁香六月天婷婷在线| 俺也去婷婷五月天第五色| 人妻久久久久| 热久久成人| 婷婷五月天亚洲天堂| 五月天无码视屏播放| 色婷婷深爱五月| 26UUU在线观看| 亚洲色vA| 人妻精品一区二区三区| 婷婷在线播放| 国产91视频| 五月丁香亚洲综合| 五月天综合网| 欧美特大片黄| 婷婷五月天最新网址| 婷婷综合伊人| 久久伊人9| 伊人激情| 伊人狠狠狠综合| 青青草视频福利| 色深爱五月| 色五月婷婷综合在线| 五月天丁香综合| 夜夜躁爽日日| A片试看120分钟做受图片| 老师高潮流白浆喷水的A片| 99碰碰碰| 日韩高清成人| 99超在线| 26uuu欧美日本| 91婷婷在线| 伊人无码高清| 99综合99| 九九热中文| 欧美va国产va| 激情綜合W W W,激情五月天| 玖玖爱资源站| 中文成人在线| 狠狠色噜噜色狠狠狠综合色 | 狠狠艹狠狠艹| 婷婷五月色亚洲| 中文字幕丰满人妻无码专区| 色情五月综合婷婷| 97涩婷婷| 亚洲激情在线| 夜夜操天天爽| 色播六月| 五月花在线观看视频| 影音先锋噜一噜| 欧美韩国日本| 91嫩草久久| 婷婷五月天无码视频| 看久久性爱99视频| 久久久久人妻精品| 色97啪啪| 丁香六月av| 久久婷婷丁香| 中文成人在线| 日韩成人中文字幕| www.五月天社区| 精品人妻一区二区三区四区不卡在| 99丁香五月| 婷婷丁香在线| 综合激情五月天六月婷免费视频| 久久伊人五月天| 伊人丁香五月婷婷潮吹| 久久亚洲婷婷综合色五月| 五月激情婷婷在线| 曰韩少妇内射免费播放| 超碰二区| 色狠久| 激情五月天网站| 任你操精品免费| 五月综合婷婷久久在线| 激情小说在线视频| 日韩在线成人电影| 婷婷成人丁香色情基地30 | 精品视频二级九九| 丁香六月婷婷综合色| 激情视频综合| 婷婷综合久久综合| 四虎婷婷五月天| 91精品久久久久久77777| 色九九一二| 久久这里只有精品网| 狠狠干夜夜干| 欧美综合五月丁香六月婷| 日韩AV大全| 99热在线免费| www.9操| 日韩一区二区在线播放| 爽极品色| 超碰在线超碰| 夜夜操夜夜操| 丁香操逼| 99视频热| 大香蕉综合视频在线| 色五月成人婷婷| 97色婷| 色狠狠综合网| 99九九在线精品热动漫| 激情久久网 | 婷婷激情四射| 久久性刺激| 日本色婷婷| 69精品人妻不卡视频| 五月婷婷花| 国外亚洲成AV人片在线观看 | 亚洲五月六月婷婷| 五月丁六月香av| 99热这里有精品| va婷婷在线| 香蕉AV福利精品导航| 色五月综合婷婷久久综合婷婷久久综合婷婷久久综合婷婷久久 | 色情婷婷久久五月天| \\五月天婷婷激情| 99ER热精品视频| 狠狠色丁香婷婷基地| 欧美大片| 玖操97| 91丨九色丨国产| 思思热99在线视频| 综合九色| 久久五月婷婷丁香| 欧美久久婷婷| 五月天六月色| 久er7久热| 香蕉人妻AV久久久久天天| 国产性色蜜乳| 久久99草五月婷婷| 久久久噜噜噜久久人妻| 精品99在线看| 色香欲综合| 青草久久五月婷伊人| 欧美情色一区| 日日夜夜天天综合| 国产操B视频| 婷婷开心激情| 五月视频日本免费观看| 婷婷99视频全集高清| 激情www| 亚洲综合网 665566| 超碰在线99| 成人午夜视频精品一区| 婷婷五月天成人综合网| 午夜福利成人AV91| 99精品久久久久| 丁香五月在线人妻| 久久人妻少妇嫩草AV| 99国产视频网| 丁香婷婷性爱| 熟妇人妻中文字幕无码老熟妇| 有哪些A片网站| 国产精品丝| 久久人妻精品| 婷婷五月丁香综合人妻| 激情五月综合久久| h在线看免费版在线看| 五月丁香成人版| 丁香五月婷婷五月| 开心深爱激情网| 欧美Va在线| 99热综合色图| 午夜天堂一区人妻| 色色色热热热| 99色最新在线视频| 六月婷在线| 天天干天天拍| 夜夜夜夜夜骑撸| 五月丁香六月综合情在线观看| 五月婷婷啪啪啪啪| 91久久精品无码一区二区三区| 九月婷婷综合八月丁香在线观看| 天天综合色99| www.五月天| 久久人妻乱| 天天拍夜夜撸| 色婷婷精品视频| 色婷婷成人做爰A片免费看网站| 亚洲成人五月| 五月婷婷就去色| 五月天婷综合| 久久色大香蕉| 91精品久久久久久77777| 丁香五月激情性色郤| 99久久99九九九99九他书对| 天天草女人| 婷婷五月色| 99亚州综合精品成人网| 伦乱美欧| 色婷婷五月色| 激情五月婷婷色色| 国产亚洲精品AAAA片APP| 91久久九久久九久久九久久九久久| 伊人成人宗合网| 91偷拍视频| 丁香婷婷婷婷十二月在线观看视频| 能看的av网站| 丁香久久久| 狠狠五月激情婷婷直播片| 五月丁香综合啪啪| 亚洲精品99| 天天爽综合| 五月丁香久久网| 91精品国产99久久久久久天美| 日韩三十六页| 精品影院| 天天做天天爱| 天天久久狠狠色综合| 婷婷天天色| 激情五月婷婷综合色播小说| 77799热| 激情六月丁香| 久久精品夜色噜噜亚洲a∨| 婷婷在线日韩综合| 69精品人人人人| 五月婷婷深深爱| 色婷五月| 91狠狠综合网| 久婷五月| 天天在线XXX| 欧美丁香五月| 一级二级香港秋霞欧美欧美秋霞| 色五月婷婷在线视频| ay2区| 五月六月播婷婷| 亲子乱AV一区二区三区下载| 99热99天堂| 五月丁香六月婷婷的女人| 久久婷婷艹| 色欲AVV| 色婷婷在线电影| 色天堂婷婷| 欧洲MV日韩MV国产| 内射干少妇亚洲69XXX| 九九热精品| 欧美日韩成人| 极品少妇高潮啪啪AV无码| www.狠狠| 婷婷五月花| 无码少妇高潮喷水A片免费| 五月婷婷大香蕉| 激情综合五| 欧美成人精品A片免费一区99| 在线只有精品| 国产精品涩涩涩视频网站| 内射爽无广熟女亚洲| 欧美肉大捧一进一出免费视频| 精品一二三区久久AAA片| 99精品偷自拍| 婷婷五月久久| 最新日韩AV中文字幕| 99久免费视频| 欧美日韩123| 五月丁香美女视频| 秋霞学生妹一二级| 久久有码| 婷婷五月丁香伊人| 五月婷婷深深爱| 久久停停超碰| 综合五月天| www,999日本色| 丁香五月亚洲综合| 丁香视频| 激情五月天色网站| 这里只有视频精品| 婷婷激情5月| 久久538| 香蕉婷婷| 一点色成人网| 五月婷婷综合色啪首页 | 五月婷婷啪啪| 国产精品天天狠天天看| 亚洲AV无码电影| 国产精品国产| 色色色色热热| 天天夜夜六月丁香五月婷婷老师| 五月婷综合| 欧美色图天堂网| 五月天激情久色| 九九热这里| www.婷婷五月| 91干网站| 欧美在线操| 五月天婷婷开心| 五月丁香六月婷婷色日| 欧洲亚洲精品| 碰99在线| 国産精品| 五月天婷婷丁香视频| 五月天成人在线视频网站| 99色热| 丁香五月婷婷久久久| 99操碰| 五月色俺婷婷| 91狠狠综合久久| 亚洲无码影音| 武则天精品久久| 亚洲精| 色99在线视频| 91色综合网站在线| 亚洲欧美成人在线| 深夜A片| 五月在线| 丁香五月九九| caobi四区| 色欲五月婷婷| 91日在线视频| 久久久久久欧美精品se一二三四| 丁香五月天啪啪激情综和网| 老司机日日夜夜青草| 思思视频这里是精品| 丁香五月婷中字幕| 色色色99| 激情视频综合| 色欲五月婷婷| 97久久超碰| 亚洲成人在线综合| 激情综合网 激情五月天| 五月色综合| 色婷婷在线影院| 亚洲成人乱码av网站| 婷婷开心激情| 999久久久国产精品| 婷婷五月丁香婷婷| 天天日天天爽夜夜爽| 久久九九婷婷| 好激情在线综合网| 色99在线| AV在线观看网站| 婷婷五月在线播放| 日韩人妻白浆视频系列| 久久久妻人人人| 手机旧版看人妻1025| 日韩av高清| 99re思思热这里| 成人看片网站| 九月婷婷| 五月天综合久久| 五月天婷婷久草丁香| 六月丁香好婷婷| 色婷婷成人做爰A片免费看网站| 久久综合五月天| 五月天丁香成人社| 久久99草五月婷婷| www.日日夜夜| 在线观看国产高清视频免费网站| 欧美色图天堂网| 大香蕉99| 色综合视频| 婷婷深爱五月天| 婷婷五月骚厕所| 任你躁XXXXX麻豆精品| va婷婷在线| 六月丁丁香| 琪琪理论片| 国产一级片| 婷婷五月丁香影院| 五月丁香成人网| 久热这里只有精品3| 五月丁香六月在线| 丁香婷婷人妻| 免费视频99| 激情丁香婷婷五月天| 亚洲操逼网| 99色看这里只有精品| 国产精品人成A片一区二区| 久久五月天合网| 国产精品国产成人国产三级| 久久在这里有精品| 亚洲日本韩国| 激情亚洲婷婷六月| 五月天婷婷无码| 五月婷婷在线免费观看| 91 原创 在线 九色|