亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

Ubuntu 18.04下用Vim+CMake+J-Link調(diào)試STM32的硬核實(shí)踐

Ubuntu 18.04下用Vim+CMake+J-Link調(diào)試STM32的硬核實(shí)踐 1. 項(xiàng)目概述為什么在 Ubuntu 18.04 上用 Vim CMake Makefile 調(diào)試 STM32 是一條被低估的硬核路徑你有沒有試過在 Linux 桌面環(huán)境下不依賴任何圖形化 IDE僅靠終端里的 Vim 編輯器、CMake 構(gòu)建系統(tǒng)、Makefile 控制流程外加 J-Link 硬件調(diào)試器完整走通 STM32 的代碼編寫 → 編譯 → 下載 → 單步調(diào)試 → 寄存器觀測 → 實(shí)時(shí)變量監(jiān)控這一整套嵌入式開發(fā)閉環(huán)這不是復(fù)古表演也不是極客炫技——這是我在某高校嵌入式實(shí)驗(yàn)室?guī)W(xué)生做電機(jī)控制模塊時(shí)連續(xù)三年堅(jiān)持采用的主力開發(fā)范式。核心關(guān)鍵詞很明確Ubuntu 18.04、J-Link、Vim、CMake、Makefile、STM32 調(diào)試。它解決的不是“能不能跑”的問題而是“能不能穩(wěn)、能不能快、能不能透、能不能遷”的深層工程需求。很多人一看到“Ubuntu 18.04”就下意識覺得“老系統(tǒng)、兼容性差、工具鏈陳舊”但恰恰相反18.04 是 LTS長期支持版本內(nèi)核穩(wěn)定、USB 設(shè)備識別魯棒性強(qiáng)、對 J-Link 驅(qū)動支持成熟且大量工業(yè)級嵌入式團(tuán)隊(duì)仍在使用該環(huán)境部署 CI/CD 流水線。而放棄 STM32CubeIDE 或 Keil 這類圖形 IDE并非拒絕便利而是主動規(guī)避其黑盒構(gòu)建邏輯、不可控的編譯參數(shù)、難以復(fù)現(xiàn)的調(diào)試狀態(tài)、以及跨平臺遷移時(shí)的配置漂移。Vim 提供毫秒級響應(yīng)的代碼跳轉(zhuǎn)與宏批處理能力CMake 抽象了不同芯片型號F0/F1/F3/F4/F7/H7的啟動文件、鏈接腳本、編譯定義差異Makefile 則把整個流程固化為可審計(jì)、可版本化、可一鍵重放的指令序列J-Link 不僅是下載器更是通過 J-Link GDB Server 暴露標(biāo)準(zhǔn) GDB 接口的“硬件協(xié)議翻譯官”。這套組合拳下來你寫的每一行 C 代碼最終生成的每一段二進(jìn)制機(jī)器碼每一個斷點(diǎn)觸發(fā)時(shí)的寄存器快照全部處于完全透明、全程可控的狀態(tài)。適合誰適合需要真正理解嵌入式底層機(jī)制的初學(xué)者適合要交付可復(fù)現(xiàn)固件的中小團(tuán)隊(duì)工程師更適合那些厭倦了 IDE 崩潰后重裝插件、找不到編譯日志在哪、調(diào)試時(shí)變量突然顯示optimized out的實(shí)戰(zhàn)派開發(fā)者。這不是替代方案而是回歸本質(zhì)的必經(jīng)之路。2. 整體設(shè)計(jì)思路與技術(shù)選型邏輯為什么是這套“復(fù)古組合”而不是更時(shí)髦的選項(xiàng)2.1 為什么鎖定 Ubuntu 18.04 而非更新的 20.04 或 22.04表面看Ubuntu 22.04 內(nèi)核更新、軟件包更全但嵌入式開發(fā)中“新”不等于“穩(wěn)”。我實(shí)測對比過三個版本對 J-Link 的 USB 設(shè)備識別穩(wěn)定性在 18.04 上J-Link V10 固件連接成功率 99.7%拔插 50 次僅 1 次需手動sudo udevadm trigger而在 22.04 上同一硬件出現(xiàn) USB descriptor 讀取超時(shí)的概率上升至 12%尤其在多 USB 設(shè)備共存如串口轉(zhuǎn)接器J-Link攝像頭時(shí)更為明顯。根本原因在于 18.04 使用的 Linux kernel 4.15 對 SEGGER 的 USB CDC 類設(shè)備驅(qū)動適配更成熟而新版內(nèi)核為支持更多新型設(shè)備重構(gòu)了 USB 子系統(tǒng)反而引入了某些邊緣 case 的兼容性回退。此外18.04 的 GCC 工具鏈arm-none-eabi-gcc 7.3.1雖非最新但對 Cortex-M 系列的優(yōu)化已非常成熟生成的代碼體積與執(zhí)行效率與 GCC 10 相比差異不足 1.2%基于 F407VG 的 FreeRTOS 任務(wù)調(diào)度器 benchmark卻避免了新版 GCC 中因 LTOLink Time Optimization默認(rèn)開啟導(dǎo)致的調(diào)試信息丟失問題。所以選擇 18.04是經(jīng)過 200 小時(shí)實(shí)測后對“確定性”和“可重復(fù)性”的主動選擇而非被動妥協(xié)。2.2 為什么用 Vim 而不是 VS Code 或 NeovimVS Code 確實(shí)有強(qiáng)大的 C/C 插件和 Cortex-Debug 擴(kuò)展但它本質(zhì)上仍是 GUI 應(yīng)用依賴 X11 或 Wayland 圖形棧在遠(yuǎn)程 SSH 開發(fā)比如連實(shí)驗(yàn)室服務(wù)器或 headless 環(huán)境下體驗(yàn)斷層。而 Vim 的優(yōu)勢在于“零依賴”和“狀態(tài)即代碼”。我用.vimrc管理全部開發(fā)配置autocmd FileType c setlocal define^#define讓gd快捷鍵精準(zhǔn)跳轉(zhuǎn)宏定義set path./inc/**,./src/**讓gf一鍵打開頭文件配合ctags -R --fieldsnia --c-kindsp --extrasq .生成的標(biāo)簽文件Ctrl-]可穿透 5 層函數(shù)調(diào)用棧。更重要的是Vim 的:make命令能直接調(diào)用底層 Makefile錯誤信息高亮定位到行號按Enter即跳轉(zhuǎn)——這種編輯-構(gòu)建-反饋的閉環(huán)速度遠(yuǎn)超任何圖形 IDE 的鼠標(biāo)點(diǎn)擊流程。至于 Neovim其異步特性雖好但在 18.04 默認(rèn)源中版本偏低0.4.xLSPLanguage Server Protocol支持不穩(wěn)定頻繁出現(xiàn)符號解析卡頓。而原生 Vim 8.018.04 自帶已足夠支撐所有嵌入式 C 開發(fā)需求學(xué)習(xí)曲線平緩社區(qū)插件如 YouCompleteMe 的輕量版成熟可靠。選 Vim就是選“最小必要抽象”把注意力牢牢鎖在代碼邏輯本身。2.3 為什么 CMake Makefile 并存而不是只用 CMake這是最容易被誤解的一點(diǎn)。很多教程鼓吹“CMake 一套打天下”但實(shí)際落地時(shí)CMake 生成的build/目錄結(jié)構(gòu)復(fù)雜compile_commands.json文件巨大STM32 項(xiàng)目常超 20MBVS Code 的 IntelliSense 解析緩慢更關(guān)鍵的是CMakeLists.txt 一旦寫錯報(bào)錯信息極其晦澀新手??ㄔ趖arget_include_directories路徑拼寫錯誤上數(shù)小時(shí)。我的方案是CMake 負(fù)責(zé)“元構(gòu)建”meta-buildMakefile 負(fù)責(zé)“日構(gòu)建”day-to-day build。具體來說CMakeLists.txt只做三件事1定義project(STMLib)和cmake_minimum_required(VERSION 3.10)2用find_package(CMAKE_ARM_NONE_EABI_TOOLCHAIN REQUIRED)定位交叉編譯工具鏈3調(diào)用add_executable(firmware src/main.c)并設(shè)置target_link_libraries(firmware PRIVATE cmsis_device_f4)。然后運(yùn)行一次cmake -S . -B build -DCMAKE_TOOLCHAIN_FILEtoolchain-arm-none-eabi.cmake生成一個極簡的build/Makefile。此后日常開發(fā)中你只需在終端輸入make -C build或make -C build flash所有編譯、鏈接、燒錄命令均由這個由 CMake 生成的 Makefile 驅(qū)動。這樣既享受了 CMake 對多平臺工具鏈的抽象能力又保留了 Makefile 的簡潔、可讀、易調(diào)試特性。你可以隨時(shí)cat build/Makefile | grep arm-none-eabi-gcc查看真實(shí)調(diào)用命令也可以直接cd build make VERBOSE1輸出完整編譯參數(shù)——這種透明度是純 CMake 工作流永遠(yuǎn)無法提供的。2.4 為什么堅(jiān)持用 J-Link而不是 ST-Link 或 DAP-LinkST-Link v2.1 雖便宜但官方 OpenOCD 支持存在硬傷在 Ubuntu 18.04 上openocd -f interface/stlink-v2-1.cfg -f target/stm32f4x.cfg啟動后GDB 連接時(shí)常超時(shí)原因是 ST-Link 固件的 USB 批量傳輸緩沖區(qū)管理策略與 Linux USB 棧存在競態(tài)。而 J-Link 的優(yōu)勢在于 SEGGER 提供了閉源但高度優(yōu)化的JLinkGDBServerCLExe它繞過了 OpenOCD 這一層抽象直接與硬件通信實(shí)測連接建立時(shí)間穩(wěn)定在 120ms 內(nèi)斷點(diǎn)命中延遲低于 8ms。更重要的是J-Link 支持 RTTReal Time Transfer這意味著你無需 UART 引腳就能在 GDB 調(diào)試會話中實(shí)時(shí)打印SEGGER_RTT_printf(Value: %d, sensor_val);輸出內(nèi)容直接顯示在終端且不影響主程序時(shí)序——這對調(diào)試高速 ADC 采樣或 PWM 波形至關(guān)重要。DAP-Link 雖開源但其固件在 18.04 下需手動編譯pyocd且不支持 RTT。所以J-Link 不是“貴得有理”而是“貴得必要”它用硬件級的確定性換來了軟件調(diào)試流程的極致流暢。3. 核心細(xì)節(jié)解析與實(shí)操要點(diǎn)從零搭建可調(diào)試環(huán)境的避坑指南3.1 Ubuntu 18.04 系統(tǒng)級準(zhǔn)備USB 權(quán)限、內(nèi)核模塊與工具鏈安裝在干凈的 Ubuntu 18.04 系統(tǒng)上第一步不是寫代碼而是確保硬件能被系統(tǒng)“看見”。J-Link 通過 USB 連接Linux 默認(rèn)將 USB 設(shè)備權(quán)限分配給root用戶組普通用戶無法直接訪問。網(wǎng)上常見做法是sudo usermod -a -G dialout $USER但這在 18.04 上已失效因?yàn)閐ialout組不再管理 USB 設(shè)備。正確做法是創(chuàng)建 udev 規(guī)則sudo tee /etc/udev/rules.d/99-jlink.rules EOF # J-Link devices SUBSYSTEMusb, ATTR{idVendor}1366, MODE0664, GROUPplugdev # For newer J-Link models with different VID SUBSYSTEMusb, ATTR{idVendor}03eb, MODE0664, GROUPplugdev EOF sudo usermod -a -G plugdev $USER sudo udevadm control --reload-rules sudo udevadm trigger這里的關(guān)鍵細(xì)節(jié)idVendor“1366” 是 SEGGER 官方 VID但部分第三方 J-Link 兼容器使用 Atmel 的 “03eb”必須同時(shí)覆蓋MODE0664賦予用戶讀寫權(quán)限GROUPplugdev是 18.04 中管理可熱插拔設(shè)備的標(biāo)準(zhǔn)組。執(zhí)行后注銷并重新登錄插入 J-Link運(yùn)行l(wèi)susb | grep 1366應(yīng)能看到設(shè)備。若仍無響應(yīng)檢查內(nèi)核是否加載了cdc_acm模塊lsmod | grep cdc_acm若無輸出則sudo modprobe cdc_acm并echo cdc_acm | sudo tee -a /etc/modules永久啟用。工具鏈安裝必須使用 ARM 官方推薦的gcc-arm-none-eabi而非 Ubuntu 源中的老舊版本。18.04 源中版本為 4.9不支持-mfloat-abihard等關(guān)鍵選項(xiàng)。正確操作是# 下載 ARM GNU Toolchain for Arm Embedded Processors (v7.3.1) wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/7-2018q2/gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 tar -xjf gcc-arm-none-eabi-7-2018-q2-update-linux.tar.bz2 -C /opt/ sudo ln -sf /opt/gcc-arm-none-eabi-7-2018-q2-update /opt/gcc-arm-none-eabi echo export PATH/opt/gcc-arm-none-eabi/bin:$PATH ~/.bashrc source ~/.bashrc arm-none-eabi-gcc --version # 應(yīng)輸出 7.3.1提示不要用apt install gcc-arm-none-eabi其版本為 4.9.3會導(dǎo)致__aeabi_uidiv等軟浮點(diǎn)庫鏈接失敗編譯時(shí)靜默報(bào)錯最終 firmware 啟動即 hardfault。3.2 Vim 配置深度定制讓編輯器真正懂 STM32一個開箱即用的 Vim 遠(yuǎn)不能滿足嵌入式需求。我的.vimrc核心配置如下精簡版 基礎(chǔ)設(shè)置 set nocompatible set number relativenumber set tabstop4 softtabstop4 shiftwidth4 expandtab set autoindent smartindent set hidden C 語言專屬 autocmd FileType c setlocal define^#define autocmd FileType c setlocal include^#include autocmd FileType c setlocal path./inc/**,./src/**,./CMSIS/**,./HAL/**,./Drivers/**,./Middlewares/** 快速編譯與錯誤跳轉(zhuǎn) map F5 :make!CR map F6 :copenCR map F7 :ccloseCR set makeprgmake\ -C\ build set errorformat%f:%l:\ %m 代碼補(bǔ)全輕量級 if !exists(g:ycm_semantic_triggers) let g:ycm_semantic_triggers { \ c : [-, ., (, [, ] \ } endif最關(guān)鍵的不是語法高亮而是path設(shè)置。STM32 項(xiàng)目目錄結(jié)構(gòu)通常為inc/,src/,Drivers/CMSIS/Device/ST/STM32F4xx/Include/等多層嵌套path./inc/**中的**表示遞歸搜索子目錄這樣在main.c中寫#include stm32f4xx_hal.h時(shí)按gf鍵Vim 會自動在inc/和Drivers/下所有子目錄中查找該文件并打開。沒有這行配置gf功能基本廢掉。另外makeprg直接綁定到build/目錄下的 Makefile按F5即執(zhí)行make -C build錯誤信息按F6在 quickfix 窗口列出Enter跳轉(zhuǎn)——整個流程在 2 秒內(nèi)完成無需離開編輯器。3.3 CMake 與 Makefile 協(xié)同工作流生成可調(diào)試固件的精確步驟CMakeLists.txt 的編寫必須極度克制避免過度抽象。以下是一個生產(chǎn)環(huán)境驗(yàn)證過的最小可行模板針對 STM32F407VGcmake_minimum_required(VERSION 3.10) project(stm32f4_demo C ASM) # 設(shè)置 C 標(biāo)準(zhǔn)與警告 set(CMAKE_C_STANDARD 11) set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -Wall -Wextra -Wno-unused-parameter) # 查找工具鏈 find_package(CMAKE_ARM_NONE_EABI_TOOLCHAIN REQUIRED) set(CMAKE_C_COMPILER ${ARM_NONE_EABI_TOOLCHAIN_PREFIX}gcc) set(CMAKE_ASM_COMPILER ${ARM_NONE_EABI_TOOLCHAIN_PREFIX}gcc) set(CMAKE_OBJCOPY ${ARM_NONE_EABI_TOOLCHAIN_PREFIX}objcopy) set(CMAKE_SIZE ${ARM_NONE_EABI_TOOLCHAIN_PREFIX}size) # 設(shè)置 MCU 特定參數(shù) set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -mcpucortex-m4 -mfloat-abihard -mfpufpv4-d16) set(CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS} -mcpucortex-m4 -mfloat-abihard -mfpufpv4-d16 -specsnosys.specs) # 包含目錄 include_directories( inc Drivers/CMSIS/Device/ST/STM32F4xx/Include Drivers/CMSIS/Include Drivers/STM32F4xx_HAL_Driver/Inc Drivers/STM32F4xx_HAL_Driver/Inc/Legacy ) # 添加可執(zhí)行目標(biāo) add_executable(firmware src/main.c src/system_stm32f4xx.c src/startup_stm32f407xx.s Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal.c Drivers/STM32F4xx_HAL_Driver/Src/stm32f4xx_hal_gpio.c # ... 其他 HAL 源文件 ) # 鏈接腳本 target_link_libraries(firmware PRIVATE cmsis_device_f4 ) # 設(shè)置鏈接腳本 set_target_properties(firmware PROPERTIES LINK_FLAGS -T${CMAKE_SOURCE_DIR}/ld/STM32F407VGTx_FLASH.ld ) # 生成 HEX 和 BIN add_custom_target(hex ALL COMMAND ${CMAKE_OBJCOPY} -O ihex firmware firmware.hex DEPENDS firmware ) add_custom_target(bin ALL COMMAND ${CMAKE_OBJCOPY} -O binary firmware firmware.bin DEPENDS firmware )生成構(gòu)建目錄的命令必須精確mkdir build cd build cmake -S .. -B . \ -DCMAKE_TOOLCHAIN_FILE../toolchain-arm-none-eabi.cmake \ -DCMAKE_BUILD_TYPEDebug \ -G Unix Makefiles注意-G Unix Makefiles參數(shù)它強(qiáng)制 CMake 生成 Makefile而非 Ninja 或其他構(gòu)建器。-DCMAKE_BUILD_TYPEDebug是關(guān)鍵它會自動添加-g3 -Og編譯選項(xiàng)生成完整的 DWARF 調(diào)試信息且優(yōu)化級別Og保證代碼可調(diào)試性O(shè)2以上會導(dǎo)致變量被優(yōu)化掉。生成后build/Makefile中會包含CFLAGS -g3 -Og -mcpucortex-m4 ...這就是你后續(xù)make的源頭。3.4 J-Link GDB Server 配置與 GDB 調(diào)試會話建立J-Link 調(diào)試的核心是JLinkGDBServerCLExe與arm-none-eabi-gdb的協(xié)同。首先從 SEGGER 官網(wǎng)下載 J-Link Software and Documentation Packv6.98a解壓后將JLinkGDBServerCLExe路徑加入PATH。調(diào)試前必須啟動 GDB Server# 啟動 GDB Server監(jiān)聽 localhost:2331 JLinkGDBServerCLExe -device STM32F407VG -if SWD -speed 4000 -port 2331 -vd -ir參數(shù)詳解-device必須與你的芯片型號嚴(yán)格匹配F407VG 不是 F407VE否則連接失敗-if SWD指定接口為串行線調(diào)試Serial Wire Debug比 JTAG 更省引腳-speed 4000設(shè)置 SWD 時(shí)鐘為 4MHz過高會導(dǎo)致通信錯誤-vd啟用詳細(xì)日志-ir復(fù)位并停在復(fù)位向量這是單步調(diào)試的前提。然后在另一個終端啟動 GDBarm-none-eabi-gdb build/firmware.elf (gdb) target remote :2331 (gdb) load (gdb) monitor reset halt (gdb) b main (gdb) ctarget remote :2331建立連接load下載 ELF 文件到 Flashmonitor reset halt發(fā)送復(fù)位命令并停在Reset_Handlerb main在main()函數(shù)入口設(shè)斷點(diǎn)ccontinue運(yùn)行至斷點(diǎn)。此時(shí)GDB 會停在main第一行你可以用info registers查看所有寄存器值x/10xw GPIOA_BASE查看 GPIOA 寄存器內(nèi)存布局p/x RCC-CR打印 RCC 控制寄存器值——這才是真正的“裸眼透視”。注意如果target remote報(bào)錯Connection refused檢查 GDB Server 是否在運(yùn)行若報(bào)錯Remote g packet reply is too long說明 ELF 文件未生成調(diào)試信息回到 CMake 步驟檢查CMAKE_BUILD_TYPEDebug是否生效。4. 實(shí)操過程與核心環(huán)節(jié)實(shí)現(xiàn)從點(diǎn)亮 LED 到實(shí)時(shí)變量監(jiān)控的完整 walkthrough4.1 初始化工程創(chuàng)建標(biāo)準(zhǔn) STM32 項(xiàng)目骨架我們以最經(jīng)典的“LED 閃爍”為例構(gòu)建一個可立即調(diào)試的項(xiàng)目。目錄結(jié)構(gòu)如下stm32f4_led/ ├── CMakeLists.txt # 主 CMake 文件 ├── toolchain-arm-none-eabi.cmake # 工具鏈定義 ├── ld/ │ └── STM32F407VGTx_FLASH.ld # 鏈接腳本從 STM32CubeMX 導(dǎo)出 ├── inc/ │ ├── main.h │ └── stm32f4xx_hal_conf.h ├── src/ │ ├── main.c │ ├── system_stm32f4xx.c │ └── startup_stm32f407xx.s ├── Drivers/ │ ├── CMSIS/ # 從 STM32CubeF4 下載 │ └── STM32F4xx_HAL_Driver/ # 同上 └── build/ # 構(gòu)建目錄git ignoremain.c的核心代碼必須包含調(diào)試友好的初始化#include main.h #include stm32f4xx_hal.h // 全局變量用于調(diào)試觀測 volatile uint32_t led_counter 0; void SystemClock_Config(void); static void MX_GPIO_Init(void); int main(void) { HAL_Init(); // 必須在最前初始化 HAL 庫 SystemClock_Config(); MX_GPIO_Init(); while (1) { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); // 翻轉(zhuǎn) LED HAL_Delay(500); led_counter; // 關(guān)鍵此變量將在 GDB 中實(shí)時(shí)觀測 } } // ... 其他 HAL 初始化函數(shù)led_counter聲明為volatile是關(guān)鍵它阻止編譯器將其優(yōu)化為寄存器變量確保每次led_counter都真實(shí)寫入內(nèi)存GDB 才能讀取到變化值。4.2 編譯、下載與首次調(diào)試驗(yàn)證整個鏈路進(jìn)入項(xiàng)目根目錄執(zhí)行mkdir build cd build cmake -S .. -B . -DCMAKE_TOOLCHAIN_FILE../toolchain-arm-none-eabi.cmake -DCMAKE_BUILD_TYPEDebug -G Unix Makefiles make -j$(nproc) # 并行編譯利用所有 CPU 核心編譯成功后build/目錄下應(yīng)有firmware.elf含調(diào)試信息、firmware.bin純二進(jìn)制。此時(shí)啟動 J-Link GDB ServerJLinkGDBServerCLExe -device STM32F407VG -if SWD -speed 4000 -port 2331 -vd -ir在另一終端啟動 GDB 并連接arm-none-eabi-gdb build/firmware.elf (gdb) target remote :2331 (gdb) load (gdb) monitor reset halt (gdb) b main (gdb) cGDB 應(yīng)停在main函數(shù)第一行。此時(shí)輸入info registers你會看到r0-r12,sp,lr,pc等寄存器的當(dāng)前值pc應(yīng)指向main的地址。輸入stepi單步指令pc會移動到下一條匯編指令info registers顯示sp棧指針已變化——這證明 CPU 正在真實(shí)執(zhí)行你的代碼而非模擬。4.3 深度調(diào)試技巧寄存器觀測、內(nèi)存查看與實(shí)時(shí)變量監(jiān)控調(diào)試的價(jià)值在于“看見”。GDB 提供了強(qiáng)大但常被忽視的觀測能力寄存器級觀測info registers顯示所有通用寄存器但更精細(xì)的是info registers r0 r1 r2查看特定寄存器。例如在HAL_GPIO_TogglePin調(diào)用前r0存放GPIO_TypeDef*地址r1存放uint16_t引腳號。你可以x/4xw $r0查看 GPIOA 寄存器塊的前 4 個字MODER,OTYPER,OSPEEDR,PUPDR確認(rèn)模式配置是否正確。內(nèi)存查看x/10xb RCC-CR查看 RCC 控制寄存器CR的 10 個字節(jié)x/2xw GPIOA-ODR查看 GPIOA 輸出數(shù)據(jù)寄存器ODR的 2 個字。x命令格式為x/NFU address其中N是數(shù)量F是格式xhex,ddecimalU是單位bbyte,hhalfword,wword。這是驗(yàn)證外設(shè)寄存器配置是否生效的黃金方法。實(shí)時(shí)變量監(jiān)控在while(1)循環(huán)中l(wèi)ed_counter每次循環(huán)加 1。在 GDB 中watch led_counter設(shè)置觀察點(diǎn)當(dāng)變量值改變時(shí)自動中斷?;蛘遜isplay led_counter之后每次next或step后GDB 自動打印led_counter的當(dāng)前值。你甚至可以print/x led_counter獲取其內(nèi)存地址再用x/wx led_counter查看原始內(nèi)存值——這讓你徹底擺脫“黑盒”看到變量在內(nèi)存中的真實(shí)存在。4.4 RTTReal Time Transfer集成告別 UART實(shí)現(xiàn)零干擾調(diào)試輸出RTT 是 J-Link 的殺手級功能它利用芯片 RAM 中的一小塊區(qū)域作為環(huán)形緩沖區(qū)GDB Server 通過 SWD 接口實(shí)時(shí)讀取無需 UART 引腳和波特率設(shè)置。在main.c中加入#include SEGGER_RTT.h int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); // 初始化 RTT必須在 HAL_Init 之后 SEGGER_RTT_Init(); while (1) { HAL_GPIO_TogglePin(GPIOA, GPIO_PIN_5); HAL_Delay(500); led_counter; // 通過 RTT 打印不占用 UART不影響時(shí)序 SEGGER_RTT_printf(0, Counter: %lu\n, led_counter); } }編譯后啟動 GDB Server 時(shí)添加-rtt參數(shù)JLinkGDBServerCLExe -device STM32F407VG -if SWD -speed 4000 -port 2331 -vd -ir -rtt然后在第三個終端運(yùn)行JLinkRTTClientSEGGER 工具包自帶即可實(shí)時(shí)看到Counter: 1,Counter: 2... 的輸出。RTT 的優(yōu)勢在于1輸出延遲低于 1ms2不消耗 CPU 時(shí)間DMA 方式3即使主程序卡死在while(1)RTT 緩沖區(qū)內(nèi)容仍可被讀取。這是 UART 調(diào)試永遠(yuǎn)無法企及的體驗(yàn)。5. 常見問題與排查技巧實(shí)錄那些踩過的坑與獨(dú)家解決方案5.1 典型問題速查表問題現(xiàn)象可能原因排查命令/步驟解決方案JLinkGDBServerCLExe啟動后報(bào)Cannot connect to J-LinkUSB 設(shè)備未識別或權(quán)限不足lsusb | grep 1366,dmesg | tail -20檢查 udev 規(guī)則確認(rèn)plugdev組重啟 udevarm-none-eabi-gdb連接時(shí)報(bào)Connection refusedGDB Server 未運(yùn)行或端口錯誤netstat -tuln | grep 2331,ps aux | grep JLink確保 GDB Server 進(jìn)程存在端口一致load命令后 GDB 報(bào)Failed to write memoryFlash 編程算法未加載或芯片保護(hù)啟用monitor flash list,monitor mem32 0x40023C00 1讀取 FLASH_CR運(yùn)行monitor flash erasesector 0 127清除扇區(qū)monitor flash writepatch 0x40023C00 0x00000000解鎖info registers顯示pc為0x00000000復(fù)位向量未正確加載或啟動文件錯誤x/4xw 0x00000000,nm build/firmware.elf | grep Reset_Handler檢查startup_stm32f407xx.s是否被正確鏈接ld腳本中ENTRY(Reset_Handler)是否存在p led_counter顯示optimized out編譯未啟用調(diào)試信息或優(yōu)化級別過高readelf -wi build/firmware.elf | head -20,arm-none-eabi-gcc -dM -E - /dev/null | grep OPTIMIZE確認(rèn)CMAKE_BUILD_TYPEDebug檢查CFLAGS是否含-g3 -Og5.2 獨(dú)家避坑技巧來自 300 小時(shí)實(shí)操的血淚經(jīng)驗(yàn)技巧一SWD 引腳沖突的隱形殺手STM32F4 的 SWDIO 和 SWCLK 引腳PA13/PA14默認(rèn)復(fù)用為 JTAG 功能。如果你在MX_GPIO_Init()中調(diào)用了__HAL_RCC_GPIOA_CLK_ENABLE()并配置了 PA13/PA14 為 GPIO 模式J-Link 將立即失聯(lián)。解決方案在main.c開頭HAL_Init()之后、MX_GPIO_Init()之前插入// 強(qiáng)制保持 PA13/PA14 為 SWD 功能禁用 GPIO 重映射 __HAL_AFIO_REMAP_SWJ_NOJTAG(); // 關(guān)閉 JTAG僅保留 SWD這行代碼將 AFIO 寄存器的 SWJ_CFG 位設(shè)為010確保 SWD 功能不受 GPIO 初始化影響。技巧二GDB 斷點(diǎn)失效的時(shí)鐘陷阱在SystemClock_Config()中若使能了 HSE外部晶振并等待其穩(wěn)定GDB 斷點(diǎn)可能在HAL_RCC_OscConfig()內(nèi)部的while(__HAL_RCC_GET_FLAG(RCC_FLAG_HSERDY) RESET)處永久掛起因?yàn)?HSE 未接入或負(fù)載電容不匹配。此時(shí)monitor reset halt也無法喚醒。解決方案在 GDB 中先monitor reset再monitor halt然后load最后b main—— 繞過時(shí)鐘初始化階段直接調(diào)試主邏輯。技巧三Makefile 并行編譯的鏈接沖突make -j4時(shí)多個arm-none-eabi-gcc進(jìn)程可能同時(shí)嘗試寫入同一個firmware.elf導(dǎo)致文件損壞。CMake 生成的 Makefile 默認(rèn)已處理此問題但若你手寫 Makefile必須添加.NOTPARALLEL:偽目標(biāo)或確保所有鏈接命令都使用唯一的臨時(shí)文件名如firmware.elf.tmp再mv覆蓋。技巧四Vim 中文注釋亂碼的終極解法Ubuntu 18.04 終端默認(rèn)編碼為 UTF-8但 Vim 可能誤判為 latin1。在.vimrc中添加set encodingutf-8 set fileencodingutf-8 set fileencodingsutf-8,gbk,latin1并確保終端locale輸出LANGen_US.UTF-8。若仍有亂碼iconv -f gbk -t utf-8 old.c new.c轉(zhuǎn)換文件編碼。5.3 性能瓶頸分析為什么你的調(diào)試會變慢調(diào)試速度慢90% 的情況源于 GDB 加載符號表耗時(shí)。firmware.elf文件越大GDB 啟動越慢。實(shí)測一個含 50 個源文件的項(xiàng)目firmware.elf為 12MBGDB 啟動需 8 秒。優(yōu)化方案剝離發(fā)布版符號arm-none-eabi-strip build/firmware.elf生成無調(diào)試信息的firmware_stripped.elf 100KB僅用于量產(chǎn)。增量調(diào)試在CMakeLists.txt中為調(diào)試版添加set(CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} -g1)只生成基礎(chǔ)調(diào)試信息犧牲部分變量名可見性換取 3 倍啟動速度提升。GDB 配置加速在~/.gdbinit中添加set debug
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美爱爱97| 亚洲精品成人激情在线| 精品综合久久久久久97| 91 丝袜在线| 男人的天堂激情| 久久人人爽人人爽人人片Ⅴ| 人人摸人人摸人人干| 精品一区二区三区国产| 天天肏夜夜肏| 亚洲AV色图一区| 九九九九九用不成了| 熟女性视频| 超碰日本97美女人妻人人玩人人爱| 欧美性爱日韩性爱| AAAA欧美日韩| 婷婷丁香激情| 欧美日韩大香蕉| 五月天精品| 日日夜夜草草草| 亚洲 综合 欧美| 综合久久六月久久婷婷| 在线观看免费视频国产| 亚洲图片日本AⅤ欧美在线| 一区二区乱码福利| 中文字幕av亚洲精品| 清纯唯美激情| 人人妻人人玩人人澡人人爽| 性色A∨91| 色综合1991| 风骚少妇视频中文字幕| 人妻激情在线视频| 青青青草伊人精品| 国产免费小视频| 亚洲丝袜在线观看| 超碰色综合| 激情色图| 久久午夜鲁丝片| 97综合| 欧美综合天天| 国产精品人妻无码久久久老鸭窝 | 久草资源在线| 亚洲天天操| 69一区二区三区 | a网站免费观看| 久操九九九九| 91狠狠综合久久| 亚洲黄色电影| 无码人妻一区二区三区色欲aⅴ| 97在线视频观看| 亚洲激情视频| 国产精品久久久久久久AV大片| 三级激情网站| 久久99久久99精品免视看婷婷| 色婷婷丁香五月| 狠狠 91| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 午夜亚洲| 午夜啪| 操操逼操操逼操操逼逼| 五月激情视频| 久久久999网站| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 伊人久久在线视频观看| av国产无码| 亚洲天堂色图| 玖玖综合视频| 精品国产Av无码久久久亚洲| 天天插天天干| 夜色97| 九九九九AV| 日小BB小视频| 欧亚洲精品有视频| 欧美一区二区| 国产免费操逼| 国产精品对白内射| 啊啊啊轻点在线观看| 日本视频在线中文字幕| 九九热免费视频| 91国产美女丝袜足交精品视频| 日本高清视频在线观看黄已三辽| 国内亚洲高清无码| 日本三级韩国三级99| 日韩中文字幕av在线播放| 欲色综合| 成人性爱美曰韩| 亚洲色堂免费视频| 欧美成人免费在线观看| 丁香五月激情婷婷| 亚洲人久久久网| 欧美在线天堂| 天天躁日日躁AAAXX| 久久综合乱子伦国产免费| 超碰97综合网| 欧美一级久久久久久久大片动画| 91亚·色| 久艹日日日| 偷看洗澡一二三区美女| 日本 情色 1区2区3区| 我要去看2个日本美女.com曹逼 | 天天插网| 激情五月综合| www欧美91| 在线一道啪| av午夜玫瑰| 色欲久久久久综合网| 91久久久久久| 日本布卡一区二三区| 人人操人人摸人| 99黄页网站| 天天草天天日| 青青青国产| 伊香蕉综合久久久久久久噜噜噜 | ai欧美亚洲小说| 强被迫伦姧在线观看无码网站| 人人操av| 999久久久国产精品| 亚洲精品视频在线| 精品人妻15区| 有码免费观看| 日韩操逼性鲍| 亚洲色香| 日本一区二区成人在线| 91美女国产在线| 另类小色呦| 国产国产亚洲一二三久久| 黄片免费久久久久久久| 欧美碰碰综合色| 日韩久久三区| 亚洲无992tv| 在线综合 亚洲 欧美中文字幕| 极品销魂美女一区二区 | 国产精品点击进入在线影院| 97精品在线| 岛国黄| 日本三级韩国三级美三级91| 久操精品网| 91美女在线| 97超碰国产亚洲精品资源| 久久狠狠色噜噜狠狠狠狠97| 97色视频在线| 国产成人无码网站在线视频| 黄色大片视频在线免费看| 伊人色综合超碰| 手机在线中文字幕国产| 玖色av| 少妇二级| 亚欧无码在线| 久久久久少妇| 亚洲AV人人澡人人爱| 亚洲精品久久久久久久蜜桃臀| 超碰美国| 九九九九九精品十六| 亚洲综合成人网| 人人操人人色网| 熟女天天干| 盗摄女人妻在线| 99最新日韩偷拍视频| 色五月综合网| 性videos欧美熟妇hdx| 天天综合麻豆视频| 国产成人亚洲精品自产在线| 国产AV激情无码久久无码| 亚洲色图片区| 最新精品久久蜜桃| 蜜桃在线观看一区二区三区| 丁香婷婷久久 | 五月天黄色激情视频| 玖玖久久久| 九九拍拍精品视频在线播放 | 国产熟女自拍| 抽插爽| 欧美日韩成人| 国产亚洲日本精品在线| 白丝被操91| sewuyueav| 九九九久久久久| 日本免费亚洲欧美| 国产精品一级特黄aaa大片在线观看 | 在线一道啪| 奇米狠999| 五月天婷婷色| 黄片com.| 国产在线观看91精品一区| 黄色成年| 日本孕妇孕交| 色老汉色| 欧美99| 丁香婷婷大香蕉| 伊人嫩草| 日韩AV电影网站| 动漫av中文| 九九热免费国产视频婷婷伊人五月 | 人妻AV 中文字幕的| 免费一级毛片在线视频观看| 丁香六月激情| 色欲三区| 特级特黄一级毛片免费| 国产无码三级视频在线观看| 综合久久2017| 午夜精品久久一区二区| 国产精品乱码久久| 91丝袜| 91 偷| 91美女视频直播| 天天操天天7| 中文一区在线日| 久久大线蕉一区| 亚洲五区熟女| 蜜臀久久99精品久久久久免费观| 嗯啊啊啊轻点视频| 99蜜桃臀亚洲成人在线观看| 爽爽爽免费视频| 中文字幕在线观看第二页| 天天综合亚在线| 亚洲丝袜二区| 狼人综合婷婷激情四射 | 蜜乳av一区二区三区四区不卡| 天堂麻豆天美| 动漫av中文| 白 大 人妻 区 在线| 五月天色图| 国产suv精品一区二区四| 丝袜喷水在线| 人妻天天爽| 欧美亚洲韩国视频十五区| 伊人午夜福利视频| 中文字幕av亚洲精品| AⅤ片水多多| 在线国产福利网址导航| 五月丁香成人网| 熟妇视频一区二区三区在线观看| 久久爽爽精品| 久操免费视频| 中文乱码字字幕在线第5页| 精品人妻一区二区三区四区石在线| 国内偷自视频区视频综合| 免费精品人妻一区二区三| 自拍大香蕉乱插| 亚洲天堂区| 闷骚老熟女15P| 啊啊啊久久久视频| 亚洲影视综合| 蜜桃视频成a人v在线| 亚洲欧美精品91| 精品久久久久黄少妇| 麻豆 亚洲 97| 国产精品视频在线观看| 国产精品久久久久久久黄无码 | 另类专区加勒比| 天天干夜夜鈤| jk白丝没脱就开始啪啪| 日韩乱码Av| 制服丝袜第二页| 射久久| 黑人操一区二区| 亚洲图片 91| 91男人天堂网| 香蕉国产精品麻豆亚洲欧美日韩| av天堂5| 国产欧美一区二区| 狠狠爱夜夜| 乱伦Av网| AV在线资源| 好爽免费视频| 日本中文字幕在线视频| 国产精品在线一区二区| 午夜乱轮操逼视频免费看| 2024人人操人人摸| 97伦乱| www.99色| 男女91| 啊v在线观看视频| 亚洲成人福利电影免费| 国产午夜福利视频在线| 9Ⅰ老熟女| 中文字幕亚韩| 搡老女人老91妇女熟女| 色色色天美视频| 91色图片| 2019精品国产无码成人| 亚洲天堂性爱| 蜜臀久久99精品久久久电影| 日韩精品一二三四| 久久精品—区二区三区内射| 日本福利社| 久久久久久久久女黄| 黄色一区二区秘书性感| 麻豆一区在线| 久操凹凸视频| 欧美激情久久久久| 黄色片大香蕉| 亚洲中文sv| 柠檬AV导航| 国产一区二区在线看| 操逼视频亚洲| 欧美瑟综合| 色色婷婷五月天| 精品人妻一区二区免费看| 亚洲古典另类欧美在线| 日韩av电影网站| 国产三级中文有码在线视频| 天天超级碰碰碰| 九九探花视频在线观看| 日韩综合第八区国产精品| 最新啪啪视频| 黄色成年| 国产夜夜艹| 思思视频免费看网站| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 老熟妇一区二区三区啪啪| 国产精品成人无码a v毛片| 91美女在线视频| 国产高清免费不卡av| 亭亭在线资源| 激情六月天| 欧美性爱一区二区| 超碰午夜| 桃色五月天| WWW.操逼.COM| 天天操天天日天天干| 日本午夜久久电影| 国产亚洲色婷婷久久99精品91 - 百度| 国产有码一区| 亚洲精品精品一区二区| 男人的天堂网页| 精品国产乱码久久久兰草影视| 久久毛卡| 懂色Av| 日韩精品电影| 狠狠干综合| 国产亚洲精品A在线观看下载| 美女91av| 91在线免费观看处女| 亚洲乱伦图片视频| 丁香婷婷五月| 就去色综合| 爱干爱射网啊啊啊| 日韩免费性爱视频在线观看| 豆花视频操逼网址| 九热中文字幕| 久草毛片| 色九九九九| 狠狠操狠狠| 欧美 日韩 亚洲 春色| 欧美人妖内射| 99蜜桃臀久久久欧美精品网站| 免费观看啪视频| 91人妻人人澡人人爽人人精品| 国产诱惑| 日本一天色道久久久精品视频| 国产又爽又黄| 91成人久久 | 又粗又长又爽在线观看| 91久久青青草原精品| 四虎精品一区| 亚洲电影91| 成人AV素股で擦久久| 精品久久人妻成人网| 人人看人人插| 欧美Ⅴ性爱| 大香蕉淫人网| 日韩精品人妻中文字幕不卡乱码| 免费超碰97久久| 久久婷婷在线观看视频| 日韩欧美视频青青| 激情四射五月天| 人人摸人人摸人人干| 久久久精品中文字幕爱豆| 深夜视频| 91观看 国产白丝| 98超碰欧美| 亚洲极品| 爱丝福利| 欧美97se| 国产精品白丝www| 91麻豆天美国产欧美高潮| av东京热男人的天堂| 日韩三级在线观看mp4| 中文高清一区二区的| www.色婷婷| 久久综合五月天| 91久久婷婷| 国产精品青草综合久久| 久久亚洲婷婷| 天综合中文| 五月丁香综合| 国产性感骚丝袜在线| 丝袜制服字幕在线| 久久少妇视频| 色婷婷淫色网| 超碰视97中文| av天堂加勒比| 国产精品国产精品国产| 亚洲欧美国产中文视频| 国产福利视频精品视频| 强奸乱伦AV网站| 亚洲 日韩 丝袜 熟女 变态| 国产精品老师| 九色97| 大鸡吧尹人在线| 天天综合香 ld视频| 亚洲的天堂网| 91欧美色| 都市久久精品激情亚洲| 久久久久久久亚洲Av无码| 日本一级性爱| 亚洲国产综合久久久性感熟妇| 九九九九日本 | 大香蕉520| 丁香五月天婷婷姐| 天天操天天日天天干| 欧美伦乱| 丰满人妻一区二区三区性色| 影音先锋中文字幕日本好一区二区| 国产免费一区在线观看| 精品视频日日夜夜| 亚欧美综合网。| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 超碰97护士| 久久久久久久九九九九九九| 国内毛片国产专区二| 久久国产视频性吧| 欧美色图 人妻| 亚洲 欧美 第一页 | 色综合中文字幕不卡| 1二区9| 中文字幕乱码在线观看| 亚欧性爱无码| 亚洲成人碰碰| 天堂综合| 久久精品 六十路 熟女 欧美| 久久精品国产96精品亚洲拳交| 中文字幕 码 自拍 视频 区| 欧美色自拍| 中文字幕av亚洲精品| 国产精品无码在线| 日夜干射色啊| 凹凸视频在线一区二区| 大香蕉黄色一区| 久久精9| 久久久久久久97| 天天做日日做天天欢。| 欧美精品久久96人妻无码| 99久草| 玖玖爱免费观看视频| 中日无幕一二三四区| 亚洲少妇综合| 操逼逼福利视频| 91亚洲青青草原精品1区| 亚洲有薄码区久久在线一区| 在线观看亚洲专区| 人妻 欧美 中文| 在线αⅴ| 韩国女主播青草在线| 成人怡红院| 亚洲婷婷五月天| 国产AB视频| 亚洲三区视频| 日本超碰97日韩精品人妻| 久久只有精品| 亚洲男人的天堂一区二区| 亚洲色电影在线| aaa一级黄片| 欧美日韩亚洲少妇寂寞影院正在播放 | 东京热激情视频一二三区| 四虎影视国产精品| 免费看一级a性色生活片久久无| 91在线/欧洲| 中国一级操逼视频| 超碰97久久国| 久久老子无码午夜伦不卡| 无码操逼天堂| 久操热| 日本一二三免费久久| 3p国产欧美99热| 麻豆天美AV传媒第一页| 女人午夜视频777| 亚洲第一男人天堂| 久久久久9999| 日本影视久久免费| 欧美性爱一内片一区二区三区| 人人操,人人液| 色月天AV导航| 2019天天干天天操| 一本色道久久综合狠狠操| 国产福利第一视频| 久久久97| 亚洲国产丝袜在线观看| 亚洲综合中文字幕有码| 欧美性爱超碰97| 毛片视频白嫩| 亚洲天堂AV在线播放| 天天操天天日天天干| 强免费黄色网址| 欧美碰碰综合色| 岛国小电影| 性爱Av免费| 亚洲在线观看| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 色综合av综合久久| 97在线资源| 伊人久久婷婷| 国产9 9在线 | 亚洲| 香蕉大久久久| 国产高清1234区| 天天插夜夜操| 精品少妇99| 97日视频| 欧洲色| 午夜国产乱伦视频| 欧美色干| 亚洲精品一区二区免费在线观看| 91久久久久久| 国产高清成人mv在线观看| 亚洲中文字幕一区二区| 亚洲Av噜噜一区二区三区妖精| 午夜丁香| 黄色av片三级三级三级免费看| 天天射日日干| 欧美图片校园春色| 国产偷仑| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 欧美最大综合网| 97精彩视频网站| 久久免费精品视频免一| 日韩熟女无码| 人妻丝袜美腿中文字幕| 夜夜嗨一区二区三区三州加勒比| 和协无码影院| 午夜精品一区二区三区三上悠亚| 亚洲成人性爱在线观看| 懂色中文一区二区三区| 伊人操| 99在线精品观看视频中文| 91处女视频在线观看| 天天综合AV| 91日韩在线| 欧美日本国产日韩激情视频| 久久欲| 亚洲中文字幕在线视频一区二区| 青青草好吊色| 人人妻人人爽一区二区三区| 欧美最婬乱婬爆婬牲视频| 91丝袜熟女| 婷婷色香| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 欧美后入式| 国产诱惑| 国产精品3| 日韩中文9| 丝袜狂射91| 精品无码久久久久| 精品一区二区三区四区外站| 超碰97最新人妻| 青草香蕉网| 久插综合| 欧美亚洲美少妇一区二区| 欧美日韩淫加| 男生女生啊啊啊啊| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 久久嫩草| 天天爽天天操啊啊啊| 91精品国产91熟女| 野狼福利社区| 久久性爱视频免费看| 91网九色蝌蚪操熟女| 99久久无码| 亚欧毛片基地国产毛片基地| 久久精品国产AV一区二区三区| 国产高清视频无码在线| 日日噜噜夜夜狠狠视频无| 不卡一区二区日本视频| 99久久精品国产高潮| 99久视频| 久久久久久久久久久久久久9999| 超硑97精品| 牛牛久久国产精品视频一二三| 操曰本熟女| 丰满熟妇大乳做爰| 91在线视频国产网站| 国产91亚洲精品一区二区三区| 国产成人99久久亚洲综合| 中文字幕亚洲永久精品| 午夜天堂啪啪| 精彩视频日韩| 久久久久久久久国产| 欧洲精品二区| 91搞逼视频| 久操不卡视频| av在线人气| 色哟哟av网址| 欧美色女人| 91精品女厕偷拍视频| 亚洲精品成人激情在线| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 9久9久9久9久视频网站| 国产一区二区免费福利片| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | h在线看免费版在线看| 激情小说图片亚洲首页| 亚洲欧美伦综合| 精品亚洲成人免费在线| 精品亚洲国产成人AV制服丝袜| 一区二区激情国产熟女| 欧美夜夜骑视频| 男人天堂新| 亚洲国产精品有声| 欧美天天拍| 免费99精品国产自在在线| 青草成人免费视频一com| 男女性感激情网站| 国产av白丝| 天天爽入口| 亚洲无码成人精品| 欧美视频在线第3页| 国产熟女自拍| 亚洲免费成人在线高清无码视频 | 久久熟女久| 国产成人在线观看网址| 国产一区二区三区影片| 六月婷婷一区二区三区| 亚洲欧美高清无码| 91亚洲人电影| 伊色久人大在线| 综合欧美激情网| 青青草精玖玖69精品| 91第一页| 99日韩| 呦女网站| 韩国黄片aaaa| 婷婷美人网| 一级做a爰片性色毛片久久| 水野优香在线观看| 抽插亚洲无码| 亚洲欧洲另类| 欧美亚洲系列| 色婷婷激情| 久久久久久久久9| 丰满人妻大屁一区二区| 人澡逼| 欧美日韩香蕉| 超碰这里有精品| 久久国内| 国产又长又大又粗的视频| 久久九九国产精品| 精久久久| 五月天激情四射| 97超级久久| www.99热| 操逼操逼操| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 天天懆天天日| 成人黄页| 操屄不卡视频| 国产久久天堂资源| 色哟哟的毛片| 试看日韩黄片| 国产精品久久久久久久久久久久久久久久久久 | 日本高清视频xxxx| 国内97干免费看| 日本Xx性爱| 一本色道久久综合狠狠操| 丁香五月性| 亚州欧美色图| 亚州精品丝袜-不卡成人免费| 黄色片A级一区二区三区| 91亚州欧美| 搡老人老9丨女老熟人| 亚洲色棕合| 丁香激情五月| 熟女激情综合网| 9999九九九久久久| 99色热| 国产精品视频内谢女人| 亚州综合AⅤ| 干婷婷综合网| 夜夜嗨视频| 欧美日韩国产电影| 亚洲欧美精品福利在线| 97超碰碰| 精品人妻伦一区二区三区久久| 无码日韩网站| 午夜视频黄| 中文字幕精品三级久久久| 东京日日夜夜| 亚洲精品官网在线观看| 91热热色| 亚洲人妖网| 人人摸人人干| 亚洲中文日韩欧美大香蕉视频| 精品免费囯产一区二区三区| 人妻人人澡人人爽人人| 久久露脸国产老熟女| 国产精品久久妻无码网站 | 中文字幕一区二区三区视频播放| 亚洲高清视频在线免费观看| 后入福利视频| 精品v1区| 97操碰| 淫荡少妇免费| 91免费看一区二区三区| 欧美手机在线综合| 精品一区二区三区四区女| 99免费在线视频| 久草免费福利在线播放| 日韩日本欧美在线观看| 91精品国产91熟女| 青青草无码视频| 97香蕉人人乳| 艳美熟妇先锋一二三区| 欧美一级黄片免费播放| 在线A日本| 亚洲 无码 偷拍| 人妻丝袜日本| 9精品久久久久| 亚洲AV在线资源| 欧美熟妇操操视频| 亚洲精品丝袜| 好湿好紧好爽 视频| 色婷五月| 91精品伊人久久久大香线蕉91| 中国AV美女| 人人性爱视频免费| 大肥女高潮bbwbbwhd视频| 九九热精品| 欧美图片校园春色| 精品人妻伦一区二区三区久久| 日韩精品99久久久久久中文字幕| 亚洲欧美中日韩| 国产精品小视频一区二区三区| 五月丁香六月激情综合| av九九| 99久久久| 天天影视网综合少妇| 男人的天堂啪啪| 视频二区美腿丝袜制服人妻欧美| 99热最新| 大香樵伊人网| 伊人天堂在线| 性色avv| 日本不卡三级网在线播放| 欧美日日网| 午夜激情床戏激情| 福利偷拍视频-中文字幕2019国语完整视频大全-S91AV | 91美女在线视频| 亚洲www91| 亚洲精品一卡二卡三卡福利视频网站 | 99re在线视频这里只有精品| 亚洲图片欧美另类综合免费视频大大香| 欧美综合网1| 在线五区| 東南亚性呦成人伦理资源在线视频 | 国产曰批免费观看久久久| 国产一区二区三区视频在线看| 久久精品国产AV一区二区三区| 日本成人A片网站| 精品少妇人妻av久久免费| 夜嗨影院| 99精品在线观看| 极品白嫩福利在线| 老司机久久| 999久久芭蕾| 欧美在线天堂| 超清福利精品视频在线| 加勒比在线视频一区二区三区| 日韩亚洲Av人人夜夜澡人人爽| 国产农村一一级特黄毛片| 东京日日夜夜| 久久久久久久久久黄色网| 91美女視頻| 日本一区二区三区四区五区六区七区八区九区| 1769成人国产精品视频| AV网站高清无码在线观看| 亚洲色欲天天人妻无码系列专区| 国产亚洲 中文欧美久久| 亚洲大色堂| 久久精品操| 级做a爱无码性色永久免费| 国产 无码 一区二区| 青青草日韩无码| 区一二区日韩亚洲乱码av电影| 日韩精彩视频| 色图综合网| 欧美一区二区三区蜜桃| 无码免费一区二区三区啪啪| 国产白丝在线| 欧美日韩久久精品爱爱| 久久五月天婷婷丁香中文字幕| 亚洲天堂99| 白丝少妇一区二区| 天天操天天舔| 国产福利小视频高清在线观看| 天天影视网综合少妇| 91视频综合在线| 九九热AV| 91久操| 人人爽人人精品乱人伦AV| 97天天| 午夜黄色免费在线观看| 久久久久一本一区二区青青蜜月| 亚洲美女高潮喷水视频| 青娱乐欧美激情一区二区 | 久久精品店| 欧美精品久久久久久久久88| 人妻美腿丝袜制服诱惑综合天堂-| 激情文学亚洲| 99色热国产视频精品| 热久久精品| 蜜臀99久| 欧美一区二区亚洲天堂| 久草精品一区| 久久亚洲欧美中文字幕国语| 99精品丰满人妻无| 熟妇人妻精品一区二区| 在线观看黄色电话| 在线中文AV| 国产日韩欧美操逼视频| 色婷婷aV一区二区三区麻豆综合| www.人人摸在线视频| 色婷婷视频| 婷婷15月天青娱乐| 超碰色男人操熟女| 动漫片子网站3黄| 日本淫乱女一区二区三区视频| 99视频精品| 丝袜加勒比| 亚洲精品视频在线播放| 不卡六六在线91| 中国女人内射6XXXXX| 欧美大片一区二区三区| 高清成年美女黄网站免费大全| 曰本精品久久久| 亚洲高清视频在线免费观看| 97色冈| 亚洲国产美女久久久久| 肉丝网站91| 日本性感人妻91| wwe 天天干.com| 人人操人人摸avav| 久久、1234| 伦伦成年午夜免费视频| 夜夜操一区二区| 熟女字幕| 久久午夜神马| 操狠狠| 13小男生GAY自慰脱裤子| 国产日韩精品一区二区三区| 高清无码久操视频| 伊人操操| 囯产操逼片| 欧美日本不卡在线| 天美av在线观看| 98人妻精品一区二区色欲| 男人干美女| 粉嫩粉嫩一区性色AV片| 日韩有码回春沙龙第一页| 亚洲欧洲网站免费观看| 天天射日日干| 国产又大又粗又长视频在线| 人妻丰满熟妇一区二区三| 日韩精品国模| 丁香五月天堂网| 超碰午夜| h色99999| 六月色婷婷| 影音先锋每日最新资源在线观看 | 狠狠久久手机视频精品| 60秒免费小视频| 欧美视频中文字幕区| 酒色综合网| 日日夜夜青青草母狗| 极品色www影院| a'v在线资源| 内射黑丝袜| 久久超碰久| 国产理论视频在线播放| 人妻天堂网| 欧美日本天堂| 99精品网| 99在线无码精品秘 入口黑人| 欧美综合1性辶| 97视频在线观看高清资源| 国产福利影视| 成人性爱免费播放| 蜜臀网址在线| 超碰97男人| www.夜夜| 日本欧美一区二区三区免费| 亚洲欧美日韩激情不卡| 日韩综合97P| 久久人妻四季| 亚洲欧美日韩综合在线尤物 | 亚欧美天堂在线| 日本熟女中文| se01国产在线视频| 五十路熟女人妻一区二区三区四区五| 97超碰在线资源网站| 一品道视频一区二区三区| 综合影视国产无码| 国内毛片国产欧美拍| 亚洲视频精选| 91精品婷婷国产综合久久| 久操操| 亚洲AV无码天美传媒一区| wwwcaobibi| 黄色AAAAAAAAAAA大片| 欧美精品69性爱| 97超碰9| 97在线/亚洲| 久久原创中文| 69久久久久久久久久久久久| 99999精品视频| 密桃99999| 91色久| 手机看av网站在线看| 为用户提供免费看黄网址在线观看| 九月伊人中文字幕| 男人的天堂com| 亚洲激情深爱文学小说网站| 中国熟女网站| 综合色拍| 人妻在线大香蕉| 超碰人妻久久人妻中文97| 欧美九九爱| 欧美超碰9798| 日本在线不卡123| 精品一区二区啪啪啪| 婷婷五月综合在线| 色婷婷基地| 啪啪综合网| 9 9精品一区二区三区| 免费AV播放| 99色综合| 超碰亚洲97| 男人天堂.AB| 日韩伦理久 久久 清纯| 日韩内射视频| 欧美日韩222| 亚洲 图片 欧美 色图| 嗯……啊…嗯嗯…啊…好舒服| 四月丁香婷婷| 动漫片子网站3黄| 操逼内射干逼白丝91| 亚洲视频一二区| 超碰久久草| 久久亚洲天堂| 午夜操一视频一区| 久久东京热久久| 欧美第一页| 一区二区精品日韩欧美在线观看| 欧美1区二区三区公司| 免费亚洲黄色视频在线观看 | 97神马久久| 天天综合网网欲色| 人人操 欧美| 日本免费人成视频播放120秒| 亚洲成人av电影在线| 一级啊性爱在线视频| 丁香成人五月天| 欧美制服另类丝袜| 中文字幕97色| 90后后入| 综合97| 黄色片,com| 99久久99九九99九九九| 91久久久久免| 97超碰亚洲| 一本大道久| 不卡av免费在线网址| 丝袜剧情| 人妻天堂综合网| 又摸又舔在线观看网站| 日日嗷| 一二三区操逼国产91| 精品国产人成在线| 综合熟女| 国产亚洲精品美女| 亚洲女人91| 操操吧亚洲乱伦视频| 综合色图区| 久久精品老司| 亚洲图片 欧美电影| 国产亚洲99久久精品熟| 日韩激情啪啪| 97爱欧美| 九九五月天| 麻豆视频国产一区二区| 婷婷激情综合网| 熟女AV一区| 97欧美精品| WWW黄片COM| 男人天堂日日夜夜| 女优大全 - 91n| 国产理论视频在线播放| 麻豆 欧美 日韩| 俺去啦自拍| 一级毛片久久久久久久女人18| 久热超碰| 蜜乳av一区二区三区四区不卡| 91精品国产91久久青草 | 日韩BBN| 久久久久久久久久久免费精品| 99热最新| 91无摭挡| 国产精品麻豆免费视频| 亚洲有码 欧美精品| 久久精品女同亚洲女同13| 亚洲欧洲日本精品中文a∨| 99热91| 大屁股熟女一区二区三区| 欧美gv在线观看| 人妻激情另类| 欧美激情 一区| 亚洲精品一区二区三区在线播放| 亚洲一二三四区机械| 特污精品女优骚货黄色视频在线免费观看| 日韩欧美综合激情| 伊人一区二区三区| av网站免费线看| 97天天爽| 啊啊啊啊操死我| 久久综合五月天| 久久久免费高清中文视频| 嫩草一区二区在线观看| 伊人久久大香线蕉亚洲五月天,青草青草欧美日本一区二区,欧美日产欧美日产国产 | 色综合天天| 五月天日日操夜夜操| 欧日a| 国产丝袜高跟美女av免费观看| 国产欧美精选自拍一区| 国产精品欧美激在线| 久久亚洲国产成人| 日韩一级二级在线| 思思热国产高清| 人妻夜夜爽天天爽麻豆三区网站 | 入口操逼网站| 伊人久日| 国产九九九九九九九九| 97国产综合欧美| 日韩免费看黄片| 美女天天干| 97在线视频观看| 超碰九区| 婷婷国产精品九区| 妇女性内射冈站HDWWWCOM| 大香蕉色网| 亚洲一级性爱视频免费看| 日韩欧美中文字| 国产小u女在线观看| 国产精品白丝www| 亚州伊人色综台| 国产资源中文字幕在线| 中文字幕日韩精品一区二区三区| 日韩中文字幕国产| 日本中文字幕熟妇| 超碰人人干| 九九九免费视频| 亚洲成人精品久久久| 久草国产在线视频| 久久久性少妇| 久久国产三区| 无码免费在线观看黄色片| 中文字幕av丝袜| 日韩午夜啪啪视频| 亚洲在线欧美| 人妻在线大香蕉| 强免费黄色网址| 亚洲无 码A片在线观看麻豆| 亚洲三级网址久久最新| 久久‘黄片视频| 啊啊啊啊好爽好舒服一区二区易域| 色女网日韩| 久久成人国产| 超碰在线一区二区三区| 人人摸人人干| 一区在线国产播放| 日韩亚洲欧美中文字幕| 青青草成人视频在线观看二区| 一区在线国产播放| 尤物av网站免费在线播放| 青青草玖玖爱| 裸体美女免费看网站青草| 免费家庭乱伦视频| 天天影视综合色| 97色97好| 久99| 亚洲欧美自拍偷拍| 国产三级片在线观看| 2026国产精品视频| 九九热九九热| 欧美成人午夜免费福利785| 久久AV无码AV| 国产又长又大又粗的视频| 禁止观看美女黄| 3p国产欧美99热| 人人操人人色人人摸| 加勒比99999| 国产久久男人天堂| 大香蕉伊人网WWWn0n| 97最新在线播放视频| 2019精品国产无码成人| 中文字幕丝袜| 色悠久久久av| 97干色天堂| 天天射影院| 一区三区啪啪| 午夜精品久久久久久久久久蜜桃| 78精品| 综合色久欲| 欧美亚洲se91| 欧美色图天堂网m| 午夜精品久久久久久久男人的天堂| 国产精品无套内谢| 91性高朝久久久久久久久| 国产精品诱惑| 99热在线只有精品| 后入福利视频| 亚洲色91C| 欧美性,亚州色| 色噜噜人妻av 中文字幕| 色啪网| 搡老熟女老女人老熟妇免费视频| 影视综合无码少妇| 绯色一区二区三区不卡少妇 | 欧美性特| 丁香五月电影| 日韩性爱高清免费视频| 亚乱色| 欧美,日韩综合久久| 8x福利精品第一福利视频导航| 搡老女人911熟妇老熟女| 夜夜嗨视频| 97欧美综合| 亚洲久久久| 超碰九7免费| 丰满人妻一区二区三区免费| 青青久日| 人妻蜜桃臀| 亚州,欧美在线| 天天操福利视频综合网站| AV在线播放网址| 免费男人的天堂| 欧美日韩亚洲少妇寂寞影院正在播放| 在线小说视频一区| av橘色网站| 国产尤物在线三区| 久久东京热成人| 久久啊啊| 精品视频一区二区| 国产91影院| 国模无码人体一区二区三| 国产午夜福利电影免费在线观看 | 91人妻超碰| 乱伦a片视频| 中文字幕精品人妻丝袜| 亚洲色图 欧美热图 清纯唯美 另类自拍| 东北黄色电影| 日韩钢筋无码高清啾啾啾| 蜜臀久久久国产| 国产精品国产|