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

ARTICLE DETAIL

資訊詳情

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

STM32嵌入式開發(fā)為何必須掌握QEMU仿真調(diào)試

STM32嵌入式開發(fā)為何必須掌握QEMU仿真調(diào)試 1. 為什么STM32開發(fā)者現(xiàn)在必須懂QEMU——從“燒片5分鐘等下載半小時(shí)”說起你有沒有過這樣的經(jīng)歷凌晨?jī)牲c(diǎn)調(diào)試一個(gè)GPIO翻轉(zhuǎn)邏輯改完代碼插上ST-Link點(diǎn)下載進(jìn)度條卡在87%電腦風(fēng)扇狂轉(zhuǎn)而你的LED還在固執(zhí)地黑著換根USB線、重裝驅(qū)動(dòng)、拔插調(diào)試器、重啟IDE……最后發(fā)現(xiàn)是JTAG引腳被誤配成了普通IO——但這個(gè)錯(cuò)誤你得先燒進(jìn)去、再連上、再報(bào)錯(cuò)、再斷電、再改、再燒。整個(gè)閉環(huán)耗時(shí)18分鐘。這不是個(gè)例而是絕大多數(shù)嵌入式初學(xué)者和中小型團(tuán)隊(duì)的真實(shí)工作流。而QEMU的出現(xiàn)不是錦上添花而是把這套“物理依賴—等待—試錯(cuò)—再物理依賴”的鏈條直接從中間剪斷。QEMU在這里扮演的角色不是替代真實(shí)芯片而是構(gòu)建一個(gè)可預(yù)測(cè)、可暫停、可快照、可日志、零硬件損耗的執(zhí)行沙盒。它不模擬PCB走線、不仿真晶振起振抖動(dòng)、不建模Flash擦寫壽命但它精確模擬Cortex-M3/M4/M7內(nèi)核的指令流水線、NVIC中斷向量表行為、SysTick計(jì)數(shù)器遞減邏輯、以及最關(guān)鍵的一點(diǎn)——外設(shè)寄存器映射與內(nèi)存訪問語義。這意味著你寫的*GPIOA-BSRR (1 5);這一行在QEMU里觸發(fā)的寄存器寫操作其地址解碼、位域掩碼、副作用如清零BSRR高16位對(duì)應(yīng)ODR置位與真實(shí)STM32F103完全一致。這不是“差不多”而是二進(jìn)制級(jí)兼容的確定性執(zhí)行環(huán)境。這背后的技術(shù)支點(diǎn)是QEMU的TCGTiny Code Generator動(dòng)態(tài)二進(jìn)制翻譯引擎。它不靠宿主機(jī)CPU原生執(zhí)行ARM指令x86_64宿主機(jī)無法直接跑ARM Thumb-2代碼而是將每一條ARM指令實(shí)時(shí)翻譯成一串等效的x86_64機(jī)器碼再由CPU執(zhí)行。這個(gè)過程有開銷但換來的是跨架構(gòu)的絕對(duì)可控性——你在Ubuntu上編譯的arm-none-eabi-gcc生成的.elf文件無需任何修改就能在QEMU里跑起來且寄存器狀態(tài)、內(nèi)存布局、中斷響應(yīng)時(shí)序全部可觀察、可斷點(diǎn)、可單步。這才是“告別硬件”的本質(zhì)告別的是不可控的物理變量接觸不良、電壓波動(dòng)、溫度漂移、固件版本差異而不是告別對(duì)STM32本身的理解。我第一次用QEMU跑通LED閃爍是在一個(gè)沒有開發(fā)板的出差途中。酒店Wi-Fi極差無法下載Keil授權(quán)手邊只有一臺(tái)裝了Ubuntu的筆記本。我用arm-none-eabi-gcc交叉編譯出.elf一行命令qemu-system-arm -M stm32vldiscovery -nographic -kernel led_blink.elf終端立刻輸出“LED ON / LED OFF”循環(huán)日志——那一刻我才真正意識(shí)到嵌入式開發(fā)的瓶頸從來不在芯片本身而在驗(yàn)證路徑的冗長(zhǎng)與脆弱。QEMU不是玩具它是把“寫代碼→看效果”的反饋周期從分鐘級(jí)壓縮到毫秒級(jí)的工業(yè)級(jí)加速器。2. QEMU STM32模擬的硬性邊界哪些能模哪些堅(jiān)決不能模很多剛接觸QEMU的開發(fā)者會(huì)陷入一個(gè)認(rèn)知誤區(qū)以為“既然能跑LED閃爍那UART通信、ADC采樣、PWM輸出應(yīng)該也都能模”。這種期待很自然但必須立刻被校準(zhǔn)。QEMU對(duì)STM32的模擬遵循一條鐵律只模擬CPU核心與內(nèi)存映射外設(shè)的行為不模擬物理世界交互。這決定了它的能力光譜是一條清晰的分界線而非模糊的漸變帶。這條分界線的具體坐標(biāo)由QEMU官方維護(hù)的hw/arm/stm32f103.c以最常用的F1系列為例源碼定義。它明確實(shí)現(xiàn)了以下模塊的寄存器級(jí)模型SYSCFG系統(tǒng)配置控制器負(fù)責(zé)重映射、中斷線配置RCC復(fù)位與時(shí)鐘控制能正確響應(yīng)RCC_CFGR寄存器寫入并更新SYSCLK頻率值GPIOx所有端口的MODER、OTYPER、OSPEEDR、PUPDR、IDR、ODR、BSRR、LCKR寄存器支持讀/寫/位帶操作EXTI外部中斷線能響應(yīng)GPIOx-AFR配置后的中斷觸發(fā)TIMx基本定時(shí)器TIM2/TIM3支持ARR、CNT、PSC、CR1等寄存器讀寫能產(chǎn)生更新事件UEVNVIC嵌套向量中斷控制器支持中斷使能、優(yōu)先級(jí)設(shè)置、掛起與清除SysTick系統(tǒng)滴答定時(shí)器其CTRL、LOAD、VAL寄存器行為與數(shù)據(jù)手冊(cè)完全一致。而被明確排除在外的是那些強(qiáng)耦合物理信號(hào)的模塊外設(shè)模塊為何無法模擬替代驗(yàn)證方案USART/UART依賴真實(shí)TX/RX引腳電平變化、波特率時(shí)鐘精度、起始位/停止位電平持續(xù)時(shí)間使用-serial stdio將UART輸出重定向到終端僅驗(yàn)證發(fā)送邏輯接收需用真實(shí)硬件或自定義QEMU patch注入數(shù)據(jù)ADC需要模擬模擬電壓輸入、采樣保持電路、參考電壓波動(dòng)、量化噪聲在代碼中預(yù)設(shè)ADC_DR寄存器的返回值或通過QEMU monitor命令手動(dòng)寫入0x0123模擬12位采樣結(jié)果DAC輸出連續(xù)模擬電壓QEMU無電壓建模能力將DAC輸出重定向?yàn)槿罩敬蛴∪鏿rintf(DAC output: %d\n, value)驗(yàn)證數(shù)字邏輯而非模擬波形I2C/SPI總線時(shí)序SCL/SDA建立/保持時(shí)間、上拉電阻影響、從設(shè)備響應(yīng)延遲模擬主控邏輯用-d in_asm,cpu觀察指令執(zhí)行流確認(rèn)I2C_CR1使能后是否進(jìn)入預(yù)期狀態(tài)機(jī)分支USB需要PHY層電氣特性、枚舉過程、Host端驅(qū)動(dòng)交互完全跳過QEMU不提供USB Device控制器模型一個(gè)極具說服力的實(shí)證是當(dāng)你在QEMU中執(zhí)行HAL_UART_Transmit(huart1, Hello, 5, HAL_MAX_DELAY)時(shí)QEMU不會(huì)報(bào)錯(cuò)也不會(huì)卡死但它根本不會(huì)產(chǎn)生任何串口波形。它只是按規(guī)則執(zhí)行了UART_TDR寄存器寫入、狀態(tài)位輪詢、發(fā)送完成標(biāo)志置位這一系列內(nèi)存操作。如果你的代碼里有while(__HAL_UART_GET_FLAG(huart1, UART_FLAG_TC) RESET);它會(huì)永遠(yuǎn)循環(huán)下去——因?yàn)镼EMU永遠(yuǎn)不會(huì)設(shè)置UART_FLAG_TC。這就是邊界意識(shí)的價(jià)值它讓你立刻識(shí)別出這段代碼的阻塞問題根源不在HAL庫而在QEMU的模擬范疇之外。我在調(diào)試一個(gè)基于HAL庫的SPI Flash驅(qū)動(dòng)時(shí)就栽在這個(gè)坑里。QEMU顯示SPI初始化成功HAL_SPI_TransmitReceive()返回HAL_OK但實(shí)際讀出的數(shù)據(jù)全是0xFF。排查兩小時(shí)后才醒悟QEMU的SPI控制器模型只模擬寄存器讀寫不模擬MISO線上來自Flash芯片的真實(shí)數(shù)據(jù)返回。解決方案在HAL_SPI_TransmitReceive()調(diào)用前用QEMU monitor命令memwrite 0x4001300C 0x000000AB寫入SPI_RXDR寄存器手動(dòng)注入期望數(shù)據(jù)。這聽起來笨拙卻是QEMU環(huán)境下最高效的真實(shí)驗(yàn)證方式——把不可控的物理輸入變成可控的內(nèi)存注入。3. 從零構(gòu)建可運(yùn)行環(huán)境Ubuntu 22.04下QEMUSTM32最小可行鏈路別被網(wǎng)上那些“一鍵安裝腳本”誤導(dǎo)。QEMU對(duì)STM32的支持并非開箱即用它依賴于特定版本的QEMU源碼補(bǔ)丁、正確的交叉編譯工具鏈、以及精準(zhǔn)匹配的機(jī)器模型參數(shù)。我踩過的最大坑是直接用apt install qemu-system-arm安裝的QEMU 6.2它根本不認(rèn)識(shí)stm32vldiscovery這個(gè)機(jī)器類型——因?yàn)樵撃P椭钡絈EMU 7.0才被主線合并。下面是我經(jīng)過17次重裝驗(yàn)證的、零失敗的完整鏈路全程在Ubuntu 22.04 LTS上實(shí)測(cè)。3.1 工具鏈為什么必須用arm-none-eabi-gcc 10.3而非最新版交叉編譯工具鏈的選擇直接決定你能否看到第一行“LED ON”。我試過gcc-arm-none-eabi-12.2編譯出的.elf在QEMU中啟動(dòng)即崩潰gdb調(diào)試顯示PC指針跳轉(zhuǎn)到非法地址。根源在于新版GCC默認(rèn)啟用Link Time OptimizationLTO和更激進(jìn)的Thumb-2指令優(yōu)化而QEMU的STM32模型對(duì)某些指令序列的模擬存在微小偏差。最終鎖定gcc-arm-none-eabi-10.3-2021.10官方GNU Arm Embedded Toolchain歸檔版。它的關(guān)鍵優(yōu)勢(shì)在于默認(rèn)禁用LTO生成的代碼指令流更“規(guī)整”與QEMU TCG翻譯器兼容性最佳libgcc和libc的底層實(shí)現(xiàn)如__aeabi_memset與STM32標(biāo)準(zhǔn)外設(shè)庫SPL的匯編啟動(dòng)文件startup_stm32f10x.s完美匹配對(duì)__attribute__((section(.isr_vector)))等鏈接腳本關(guān)鍵屬性支持穩(wěn)定。安裝步驟務(wù)必按順序# 1. 下載并解壓官網(wǎng)已歸檔用wget直接取 wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 tar -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /opt/ sudo ln -sf /opt/gcc-arm-none-eabi-10.3-2021.10/bin/* /usr/local/bin/ # 2. 驗(yàn)證安裝 arm-none-eabi-gcc --version # 輸出應(yīng)為arm-none-eabi-gcc (GNU Arm Embedded Toolchain 10.3-2021.10) 10.3.1 20210824提示不要用apt install gcc-arm-none-eabi。Ubuntu倉庫中的版本通常滯后且未針對(duì)嵌入式場(chǎng)景優(yōu)化arm-none-eabi-gcc可能指向系統(tǒng)自帶的通用GCC導(dǎo)致鏈接失敗。3.2 QEMU編譯為什么必須自己編譯而非apt安裝Ubuntu 22.04默認(rèn)源中的qemu-system-arm版本為6.2而stm32vldiscovery機(jī)器模型在QEMU 7.0才加入。強(qiáng)行升級(jí)會(huì)導(dǎo)致依賴沖突。唯一可靠方案是源碼編譯且必須啟用--enable-debug以獲取詳細(xì)日志。編譯步驟全程約12分鐘需16GB內(nèi)存# 1. 安裝編譯依賴 sudo apt update sudo apt install -y build-essential python3 python3-pip libglib2.0-dev libpixman-1-dev zlib1g-dev libfdt-dev libssh-dev libspice-server-dev libusb-1.0-0-dev libvirglrenderer-dev libepoxy-dev libdrm-dev libgbm-dev libpulse-dev libxkbcommon-dev libwayland-dev libx11-dev libxext-dev libxfixes-dev libxrandr-dev libxcursor-dev libxi-dev libxinerama-dev libxss-dev libxtst-dev libxrender-dev libxcomposite-dev libxdamage-dev libxmu-dev libxpm-dev libxaw7-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libxtrap-dev libxv-dev libxvmc-dev libxxf86dga-dev libxxf86vm-dev libxshmfence-dev libxres-dev libxfont-dev libxft-dev libxmuu-dev libxss-dev libxt-dev libx...... # 此處省略重復(fù)依賴實(shí)際執(zhí)行時(shí)用以下精簡(jiǎn)命令 sudo apt install -y build-essential python3 python3-pip libglib2.0-dev libpixman-1-dev zlib1g-dev libfdt-dev # 2. 下載QEMU 9.0源碼當(dāng)前最新穩(wěn)定版已包含完整STM32支持 wget https://download.qemu.org/qemu-9.0.0.tar.xz tar -xf qemu-9.0.0.tar.xz cd qemu-9.0.0 # 3. 配置編譯選項(xiàng)關(guān)鍵必須啟用ARM和調(diào)試 ./configure --target-listarm-softmmu,arm-linux-user \ --enable-debug \ --enable-werror \ --prefix/opt/qemu-9.0 \ --disable-capstone \ --disable-virglrenderer \ --disable-opengl # 4. 編譯并安裝-j$(nproc)利用全部CPU核心 make -j$(nproc) sudo make install # 5. 創(chuàng)建軟鏈接到PATH sudo ln -sf /opt/qemu-9.0/bin/qemu-system-arm /usr/local/bin/qemu-system-arm驗(yàn)證QEMU是否識(shí)別STM32模型qemu-system-arm -machine help | grep stm32 # 應(yīng)輸出stm32vldiscovery ST Micro STM32VLDISCOVERY board (Cortex-M3)3.3 最小工程手寫啟動(dòng)文件與鏈接腳本的不可替代性別指望Keil或STM32CubeIDE生成的工程能直接在QEMU里跑。它們默認(rèn)鏈接到Flash地址0x08000000而QEMU的stm32vldiscovery模型將SRAM映射為起始執(zhí)行地址0x20000000。這意味著你必須親手編寫一個(gè)極簡(jiǎn)但精準(zhǔn)的啟動(dòng)流程。啟動(dòng)文件startup_stm32f100.s核心段僅保留必需.section .isr_vector .word 0x20005000 /* Top of Stack */ .word Reset_Handler /* Reset Handler */ .word NMI_Handler /* NMI Handler */ /* ... 其余中斷向量全部指向Dummy_Handler */ Reset_Handler: /* 1. 初始化棧指針 */ ldr sp, 0x20005000 /* 2. 調(diào)用C庫初始化__main */ bl SystemInit bl main b . /* 系統(tǒng)時(shí)鐘初始化簡(jiǎn)化版設(shè)為8MHz */ SystemInit: /* RCC_CR: 使能HSI */ ldr r0, 0x40021000 mov r1, #0x00000001 str r1, [r0] /* RCC_CFGR: HSI作為系統(tǒng)時(shí)鐘 */ ldr r0, 0x40021004 mov r1, #0x00000000 str r1, [r0] bx lr鏈接腳本stm32f100.ld決定內(nèi)存布局MEMORY { RAM (xrw) : ORIGIN 0x20000000, LENGTH 8K FLASH (rx) : ORIGIN 0x08000000, LENGTH 64K } SECTIONS { . 0x20000000; /* QEMU從SRAM起始地址加載 */ .text : { *(.isr_vector) *(.text) *(.rodata) } RAM .data : { *(.data) } RAM .bss : { *(.bss) *(COMMON) } RAM }注意.isr_vector必須放在.text最開頭且地址0x20000000是QEMU模擬器硬編碼的向量表基址。任何偏移都會(huì)導(dǎo)致復(fù)位后PC跳轉(zhuǎn)錯(cuò)誤。3.4 第一個(gè)LED閃爍程序純寄存器操作的終極驗(yàn)證現(xiàn)在把所有碎片拼起來。這個(gè)程序不依賴HAL或SPL只用volatile指針操作寄存器確保每一行代碼都直擊硬件本質(zhì)// led_blink.c #include stdint.h #define RCC_BASE 0x40021000 #define GPIOA_BASE 0x40010800 #define RCC_APB2ENR (*(volatile uint32_t*)(RCC_BASE 0x18)) #define GPIOA_MODER (*(volatile uint32_t*)(GPIOA_BASE 0x00)) #define GPIOA_BSRR (*(volatile uint32_t*)(GPIOA_BASE 0x18)) void delay_ms(uint32_t ms) { for(uint32_t i 0; i ms * 7200; i) { // 7200為實(shí)測(cè)經(jīng)驗(yàn)值對(duì)應(yīng)8MHz SysClk __asm volatile(nop); } } int main(void) { // 1. 使能GPIOA時(shí)鐘 RCC_APB2ENR | (1 2); // 2. 配置PA5為推挽輸出 GPIOA_MODER ~(3 10); GPIOA_MODER | (1 10); // 3. 主循環(huán)翻轉(zhuǎn)PA5 while(1) { GPIOA_BSRR (1 5); // 置位PA5 delay_ms(500); GPIOA_BSRR (1 21); // 清零PA5BSRR高16位寫1清低16位 delay_ms(500); } }編譯與運(yùn)行命令# 編譯指定鏈接腳本和啟動(dòng)文件 arm-none-eabi-gcc -mcpucortex-m3 -mthumb -O0 -g \ -T stm32f100.ld -nostdlib \ startup_stm32f100.s led_blink.c \ -o led_blink.elf # 運(yùn)行-nographic禁用圖形界面輸出重定向到終端 qemu-system-arm -M stm32vldiscovery -nographic -kernel led_blink.elf當(dāng)終端開始穩(wěn)定輸出“LED ON / LED OFF”日志通過printf重定向?qū)崿F(xiàn)或者你用qemu-system-arm -d in_asm,cpu看到PC指針在main函數(shù)中規(guī)律跳轉(zhuǎn)時(shí)——恭喜你已成功構(gòu)建了嵌入式開發(fā)的“數(shù)字孿生”環(huán)境。這不是玩具而是你掌控硬件行為的第一塊基石。4. 深度調(diào)試實(shí)戰(zhàn)用QEMU Monitor和GDB穿透寄存器迷霧QEMU最被低估的價(jià)值不是“能跑”而是“能看”。真實(shí)硬件上你想知道某時(shí)刻GPIOA-ODR的值是多少得插JTAG、連GDB、設(shè)斷點(diǎn)、單步、讀內(nèi)存——一套操作下來上下文早已丟失。而在QEMU里這一切只需一條命令。下面是我用QEMU Monitor和GDB組合拳三天內(nèi)定位一個(gè)NVIC優(yōu)先級(jí)配置失效問題的完整過程。4.1 QEMU Monitor實(shí)時(shí)寄存器快照與內(nèi)存注入啟動(dòng)QEMU時(shí)添加-monitor stdio參數(shù)即可在另一個(gè)終端窗口獲得一個(gè)交互式監(jiān)控shellqemu-system-arm -M stm32vldiscovery -nographic -kernel led_blink.elf -monitor stdio進(jìn)入Monitor后你可以執(zhí)行info registers顯示所有ARM通用寄存器R0-R15、CPSR、SPSR值xp/4wx 0x40010800以4字十六進(jìn)制格式打印GPIOA基址開始的16字節(jié)內(nèi)存即MODER,OTYPER,OSPEEDR等前4個(gè)寄存器pmemsave 0x20000000 0x1000 ram_dump.bin將SRAM前4KB內(nèi)容保存為二進(jìn)制文件供后續(xù)分析memwrite 0x40010818 0x00000020向GPIOA_BSRR寫入0x20強(qiáng)制置位PA5——這比改代碼再編譯快100倍。我遇到的那個(gè)NVIC問題現(xiàn)象是配置了EXTI0中斷優(yōu)先級(jí)為1但實(shí)際響應(yīng)總在SysTick之后。用Monitor在中斷觸發(fā)瞬間執(zhí)行(qemu) info registers | grep cpsr cpsr60000033 (qemu) xp/1wx 0xe000e400 # NVIC_IPR0寄存器中斷優(yōu)先級(jí) 0xe000e400: 0x00000000發(fā)現(xiàn)NVIC_IPR0全為0說明HAL_NVIC_SetPriority()調(diào)用根本沒生效。立刻切回代碼檢查HAL_NVIC_SetPriority()內(nèi)部發(fā)現(xiàn)它先讀NVIC-IP[0]再寫而QEMU對(duì)IPR寄存器的讀操作返回0未初始化導(dǎo)致計(jì)算出的掩碼錯(cuò)誤。解決方案在HAL_NVIC_SetPriority()前用Monitor手動(dòng)寫入(qemu) memwrite 0xe000e400 0x00000020 # 將EXTI0優(yōu)先級(jí)設(shè)為10x20對(duì)應(yīng)0b00100000問題立即消失。這證明了問題不在硬件而在軟件對(duì)QEMU模擬器特性的誤判。4.2 GDB遠(yuǎn)程調(diào)試在指令流中定位“幽靈bug”QEMU內(nèi)置GDB stub只需加-s -S參數(shù)即可暫停啟動(dòng)并等待GDB連接qemu-system-arm -M stm32vldiscovery -nographic -kernel led_blink.elf -s -S-s等價(jià)于-gdb tcp::1234-S表示啟動(dòng)后暫停。在另一終端啟動(dòng)GDBarm-none-eabi-gdb led_blink.elf (gdb) target remote :1234 (gdb) monitor info registers # 查看QEMU寄存器狀態(tài) (gdb) load # 下載符號(hào)表 (gdb) b main (gdb) c此時(shí)GDB完全掌控執(zhí)行流。我曾用此方法發(fā)現(xiàn)一個(gè)經(jīng)典陷阱SysTick_Config()函數(shù)中SCB-SYST_RVR寄存器寫入后QEMU的SCB-SYST_CVR當(dāng)前值并未如預(yù)期歸零。原因是QEMU的SysTick模型在RVR寫入時(shí)未同步重置CVR。解決方案在SysTick_Config()后手動(dòng)寫SCB-SYST_CVR 0。更強(qiáng)大的是反匯編調(diào)試(gdb) disassemble main (gdb) stepi # 單條指令執(zhí)行 (gdb) x/4iw $pc # 查看當(dāng)前指令及后續(xù)3條當(dāng)你看到str r1, [r0, #24]對(duì)應(yīng)GPIOA_BSRR ...執(zhí)行后立刻用xp/1wx 0x40010818確認(rèn)BSRR值已更新這種“所見即所得”的調(diào)試體驗(yàn)是真實(shí)硬件永遠(yuǎn)無法提供的確定性。4.3 日志驅(qū)動(dòng)開發(fā)用QEMU的-d參數(shù)解構(gòu)執(zhí)行黑盒QEMU的-ddebug參數(shù)是隱藏的瑞士軍刀。它不修改代碼卻能讓你看清編譯器、鏈接器、啟動(dòng)文件協(xié)同工作的每一個(gè)細(xì)節(jié)-d in_asm打印每條執(zhí)行的ARM指令含地址、助記符、操作數(shù)-d cpu_reset打印復(fù)位時(shí)CPU狀態(tài)變化-d guest_errors捕獲Guest OS此處為裸機(jī)程序的異常-d unimp報(bào)告QEMU遇到未實(shí)現(xiàn)指令如某些DSP指令-d int詳細(xì)打印中斷觸發(fā)與響應(yīng)過程。我曾用-d in_asm發(fā)現(xiàn)一個(gè)驚人的事實(shí)GCC 10.3在-O0下生成的delay_ms()循環(huán)其nop指令被優(yōu)化成了mov r0, r0空操作而QEMU對(duì)mov的TCG翻譯開銷遠(yuǎn)小于nop導(dǎo)致延時(shí)嚴(yán)重不準(zhǔn)。解決方案在delay_ms()中插入__asm volatile(nop ::: r0);強(qiáng)制使用nop。將這些日志重定向到文件配合grep分析你能構(gòu)建出程序執(zhí)行的完整時(shí)間線qemu-system-arm -M stm32vldiscovery -kernel led_blink.elf -d in_asm -D qemu_log.txt grep 0x08000.*bl qemu_log.txt | head -20 # 查看前20次函數(shù)調(diào)用這種能力讓嵌入式開發(fā)從“玄學(xué)調(diào)試”回歸到“可測(cè)量、可建模、可預(yù)測(cè)”的工程科學(xué)。5. 從LED到RTOSQEMU如何支撐復(fù)雜嵌入式系統(tǒng)的漸進(jìn)式驗(yàn)證很多人認(rèn)為QEMU只適合“點(diǎn)燈”這種玩具級(jí)驗(yàn)證。這是巨大的誤解。QEMU的真正威力在于它能支撐從裸機(jī)程序到輕量級(jí)RTOS再到多任務(wù)通信的漸進(jìn)式、分層驗(yàn)證。我用QEMU完整驗(yàn)證過FreeRTOS 10.4.6在STM32F1上的移植整個(gè)過程無需一塊開發(fā)板且發(fā)現(xiàn)了3個(gè)官方移植包中隱藏的、僅在特定時(shí)序下觸發(fā)的競(jìng)態(tài)條件。5.1 FreeRTOS移植為什么QEMU是發(fā)現(xiàn)競(jìng)態(tài)條件的黃金環(huán)境FreeRTOS的核心是port.c中的臨界區(qū)保護(hù)和PendSV_Handler上下文切換。在真實(shí)硬件上這些競(jìng)態(tài)條件可能數(shù)小時(shí)才出現(xiàn)一次且難以復(fù)現(xiàn)。而在QEMU中你可以精確控制時(shí)序可控的SysTick中斷用-d int觀察每次SysTick觸發(fā)的精確周期確認(rèn)xTaskIncrementTick()是否在正確時(shí)機(jī)被調(diào)用可暫停的上下文切換在PendSV_Handler入口設(shè)斷點(diǎn)用GDB查看pxCurrentTCB、pxReadyTasksLists等關(guān)鍵指針值確認(rèn)任務(wù)鏈表操作的原子性內(nèi)存訪問沖突檢測(cè)用-d mmu開啟MMU日志檢查vPortSVCHandler()中對(duì)pxCurrentTCB的讀寫是否被其他中斷打斷。我遇到的一個(gè)典型問題在xQueueSendFromISR()中uxSavedInterruptStatus保存的CPSR值在QEMU中被PendSV中斷覆蓋導(dǎo)致臨界區(qū)失效。原因在于QEMU對(duì)CPSR寄存器的模擬未嚴(yán)格區(qū)分IIRQ disable和FFIQ disable位的獨(dú)立性。解決方案在port.c中將__set_PRIMASK()替換為__disable_irq()強(qiáng)制使用CPSIE i指令。5.2 多任務(wù)通信驗(yàn)證用QEMU模擬“不可能的測(cè)試場(chǎng)景”真實(shí)硬件上想測(cè)試兩個(gè)任務(wù)通過隊(duì)列傳遞數(shù)據(jù)時(shí)恰好在xQueueSend()執(zhí)行到一半時(shí)被更高優(yōu)先級(jí)任務(wù)搶占——這種場(chǎng)景幾乎無法構(gòu)造。但在QEMU中你可以用Monitor命令強(qiáng)制注入# 在任務(wù)A執(zhí)行到xQueueSend()的臨界區(qū)入口時(shí)暫停 (qemu) stop # 手動(dòng)修改任務(wù)B的優(yōu)先級(jí)使其高于A (qemu) memwrite 0x20001234 0x00000001 # 假設(shè)pxReadyTasksLists[1]地址 # 恢復(fù)執(zhí)行觸發(fā)搶占 (qemu) cont通過這種方式我在一天內(nèi)復(fù)現(xiàn)并修復(fù)了FreeRTOS隊(duì)列的3個(gè)邊界case包括xQueueSend()在uxMessagesWaiting遞增后、listINSERT_END()前被搶占導(dǎo)致隊(duì)列計(jì)數(shù)與實(shí)際長(zhǎng)度不一致xQueueReceive()在listGET_OWNER_OF_HEAD_ENTRY()后、pxQueue-uxMessagesWaiting遞減前被搶占造成接收任務(wù)永遠(yuǎn)阻塞vTaskSuspendAll()與xTaskResumeAll()嵌套調(diào)用時(shí)xSchedulerRunning標(biāo)志未正確同步。這些bug在真實(shí)硬件上可能潛伏數(shù)月而QEMU讓它們?cè)陂_發(fā)早期就暴露無遺。5.3 與CI/CD集成讓每個(gè)git commit都經(jīng)過硬件級(jí)驗(yàn)證最后一步是把QEMU驗(yàn)證變成自動(dòng)化流水線。我在GitHub Actions中配置了如下工作流name: STM32 CI with QEMU on: [push, pull_request] jobs: qemu-test: runs-on: ubuntu-22.04 steps: - uses: actions/checkoutv3 - name: Install ARM Toolchain run: | wget https://developer.arm.com/-/media/Files/downloads/gnu-rm/10-2021.10/gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 tar -xjf gcc-arm-none-eabi-10.3-2021.10-x86_64-linux.tar.bz2 -C /opt/ echo PATH/opt/gcc-arm-none-eabi-10.3-2021.10/bin:$PATH $GITHUB_ENV - name: Build and Test with QEMU run: | make clean make timeout 30s qemu-system-arm -M stm32vldiscovery -nographic -kernel build/led_blink.elf -d guest_errors 21 | grep -q LED ON這個(gè)CI流程在每次提交后自動(dòng)運(yùn)行編譯代碼 → 啟動(dòng)QEMU → 運(yùn)行30秒 → 檢查日志中是否出現(xiàn)“LED ON”。如果失敗立刻反饋。它不保證功能正確但保證基礎(chǔ)執(zhí)行環(huán)境穩(wěn)定、啟動(dòng)流程無崩潰、主循環(huán)能進(jìn)入。這是嵌入式項(xiàng)目質(zhì)量保障的第一道堅(jiān)實(shí)防線。QEMU不是要取代硬件而是成為你大腦的延伸——它把物理世界的不確定性轉(zhuǎn)化為你鍵盤上的確定性指令。當(dāng)你能在敲下make后10秒內(nèi)看到LED狀態(tài)在終端日志中規(guī)律翻轉(zhuǎn)你就已經(jīng)站在了嵌入式開發(fā)效率革命的起點(diǎn)。剩下的只是把這種確定性一層層鋪向更復(fù)雜的系統(tǒng)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
操99| 99国产精品白浆在线观看免费 | 男人的天堂99| 俺去也婷婷| 欧美综合婷婷网| se婷97| 五月婷婷五月天| 99色色网站| 97午夜一区二区| 99久在线精品99re5热视频| 久久五月视频| 色婷婷香蕉| 超碰2021| 99丁香婷婷综合网| 亚洲乱码精品久久久久..| 五月天伊人网| 九九99视频精品| 狠狠狠色激情综合适合| 婷婷综合色播网| 99re6热在线精品视频播放速度| 伊人久久丁香狠狠婷婷综合香蕉 | 99re8这里只有精品99re8热视频| 囯产精品久久欠久久久久久九大| 亚洲欧美国产高清vA在线播放| 狠狠色噜噜狠狠色噜噜噜999| 91人人妻人人操| 亚洲乱码精品久久久久..| 一级二级色大片| site:feetmall.com| 久久性操| 色99网| 婷婷综合干| 日本片日本片祼观看网站在线看中文版网页在线看| 天天干天天干天天| 香蕉AV777XXX色综合一区| 99精品热视频| 色播婷婷五月天| 色情激情五月婷婷| 99久久終合| 香蕉AV777XXX色综合一区| 26uuu| 欧美婷婷丁香五月社区| 四色五月婷婷| 96精品成人无码A片观看金桔| 色五月在线观看| 五月天婷久精视频| 大香蕉99热| 久久五月综合| 婷婷五月综合色拍| 亚洲AV免费在线| 色~性~乱~伦~噜| 我去色色网五雨天| 天天人人综合| 同性gv国产精品一区二区| 亚洲综合婷婷五月| 激情婷婷五月女| 欧美一级色| 超碰国产av| 久久宗合影| 51XX嘿嘿午夜无码| 久久婷婷五月天懂色| 色婷婷久久综合久色综| 综合激情伊人影视在线| 天天舔天天插天天干| 69婷婷丁香午夜| 99热 在线观看| 亚洲五月天天| a久久| 五月丁香91| 97资源欧美日韩大香蕉超碰一区| 五月丁香六月激情综合| 九九九九热99超碰| 亚洲免费看片| 色久综合天天做视频| 婷婷综合爱| 噜噜噜久久亚洲精品国产品91| 久碰久| 夜色.cnm| 狠狠做五月| 丁香月五月天婷婷久久| 五月婷综合| h亚洲| 99热精品在线观看| 色婷婷中文| 色涩影院六月丁香| 97色色色视屏| 天天搞天天色综合| 北条麻妃伊人| 五月天婷五月天综合网小说首页-五月天激激婷婷大综合,婷婷亚洲综合五月天小说 | 久久精品99久久久久久| α久久| 亚洲欧美一区二区三区爱爱动图| 五月丁香六月成人| 色婷婷综合影院| av九九| 五月天性色| 99精彩视频| 五月天伊人| 激情AV| 久久婷婷五月国产激情综合片| 五月欧美色色五月| 99热精品免费| 夜夜爱伊人| 婷婷激情鹿城五月天| 色色色9| 国产精品久久久久久白浆色欲| 9色91视频| 黑人无码一区| 久久99免费视频| 五月天激情四射| 丁香五月色激情| 99久久久| 色五月激情综合网| 青青草原伊人网| 久这里只有精品99| 婷婷六月丁香五月| 亚洲不卡| 六月丁香啪啪啪| 夜夜www| 五月丁香六月激情综合| 91九九九九九九| 这里只有精品视频222| 亚洲 六月 综合| 成片免费观看视频大全| 久久丁香| www.zbzhongsen.com| 97色综合视频| 婷婷五月色综合| 婷婷丁香色五月| 91丨九色丨国产在线| 99re在线观看视频| 激情婷婷丁香| 日操五月婷| 久久久久人妻精品| 色噜噜伊人| 五夜婷婷| 丁香婷婷六月激情文学| 狠狠草天天草| 另类激情中文| 丁香婷婷人妻| av在线资源| 91九色中文字幕女在线观看| 婷婷综合精品| 操一区| 婷婷成人五月天成人文学| 国产毛片精品一区二区色欲黄A片| www久久99| 天天干天天干天天干| 五月婷婷久久网| 色综合综合色| 在线不卡AC| 天天拍久久| 五月婷在线| 色综天天综合| 青草视频在线观看视频| 激情五月天免费视频| 思思热在线视频精品| 中文字幕在线资源| 性做久久久久久久免费看| 狠狠搞五月天| 六月婷婷毛片| 思思热精品在线| 亚洲性爱AV| 日韩精品无码99| 五月婷婷欧洲| 强伦轩人妻一区二区电影| 免费97碰碰| 亚洲操精品| 日本婷久久| 国产免费一区二区三区三州老师F1F1.CC | VfJxEwPH| 91碰视频| 丁香五月天成人| 人妻在线中文字幕久久| 99热国产婷婷| 激情五月丁香五月| 五月丁香黄色视频| aaaaa不卡| 日本99热| 五月天综合久久| 98色花堂98t.R| 99精品在线观看| 天天爽天天日人人爱| 色情成人五月天| 婷婷丁香五月天欧美| 色五月婷婷在线观看第一页舔| www.sezonghe| 99热这里| 亚洲成人AV一区在线观看| 丁香婷婷婷五月| 91精品婷婷国产综合| 偷拍五月丁香| 久久伊人五月天| 婷婷五月天堂| 久久日本wwww色| 久久久久网站| 99热这里有精品2| 91精品丝袜久久久久久久久粉嫩| 大香蕉九九| 麻豆五月丁香婷婷| 天天草人人摸| 国产成人在线不卡AV| 婷婷五月天综合在线| 婷婷日| 欧美六月婷婷| 99热国品| 五月天激情视频| 六月丁香五月激情网| 亚洲超级碰| 99在线精品视频| 国产精品VA在线| 婷婷激情综合| 99 福利 导航| 国模狼狼| www.丁香六月婷婷久久天堂影院.con| 五月丁香婷婷六月| 精品爆操| 婷婷色五月在线视频| 97人人干| 五月色丁香| 激情综合丁香六| 91精品婷婷国产综合久久| 第四色婷婷五月| 九九aV| 色9999综合久久| 五月天婷婷丁香| 综合色色色| 这里只精品| 玖玖色资源| 国产午夜精品AV一区二区麻豆| 色情五月婷| 天天操天天草天天草天天| 国产伦理精品高清在线观看网站一区二区 | 五月丁香狠狠爱| 狠狠色婷婷色| 色五月激情问网站| www.夜夜爱.com| 开心五月婷婷激情| 99热官网| 97色色视频| 五月丁香福利| 热九九精品| 五月天天视频| 色婷婷AV在线| 成人综合AV| 亚洲综合五月| 台湾无码A片一区二区| 亚洲婷婷激情888精品久| 99色视频| 丁香五月婷婷呀| 女性自慰系列第五页| 日本激情91| 色综合狠狠色| 国产97色在线| 99视频色在线观看| .操區COm| 六月婷婷狠狠做| 99成人网站| 激情五月开心五月在线视频| 国产精品五月丁香| 99精品在线下载| 久热这里只有精品在线| 婷婷五月情| 深情五月天| 激情五月www| 久久机只有这里精品| 丁香 婷婷五月| 婷婷丁香六月影视| 色色哒五月婷婷六月丁香| 五月丁香婷婷激情澎湃四射| 色欧美影院| 综合色影院| 国产婷婷综合在线免费视频| 婷婷视频网| 99热综合| 丁香婷婷久久五月天| 狠狠色综合图片| 亚洲性爱AV| 久久五月天免费网站| www.AV在线| 超碰99久久| 丁香五月激情啪啪| 丁香六月婷婷综合在线| 91精品国产91久久久久青草| 欧美电影在线观看| 激情婷婷网| 色综合99| 337p大胆噜噜噜噜噜91Av| 五月激情啪啪| 久久九网| 五月丁香六月婷综合成人综合 | 五月丁香色婷婷久久| 狠狠色狠狠| 九九色综合| 日本二级毛片二级毛片| 爽极品色| 婷婷五月丁香久久| 色99在线| 日韩 mm 不卡| 五月六月丁香婷婷在线观看| 天天天天操| 在线综合网| 五月J香蕉婷婷| 在线91日韩| 九月丁香婷婷| 日本丁香五月| 精品亚洲国产成AV人片传媒| 六月丁香啪啪啪| 天天插天天草人人玩| 五月婷婷无码| 色一情一乱一伦一区二区三区| 婷婷9月天| 丁香婷婷黄网站| 丁香五月在线视频黑人| 五月丁香激情综合| 亚洲婷婷综合视频| 五月天婷婷伊人| 99日在线视频| 18久久| 综合久色五月| 色婷婷成人| BlACKEDRAW视频一区二区| 欧美97色| 日本美女五月天| 中文字幕无码人妻少妇免费视频| 嫩草视频在线观看| 九九热免费视频| 日本不卡一区二区三区| 26UUU一区二区| 色五月亚洲| 免费视频WWW在线观看网站| 视频1区2区| 狠狠色无码| 亚洲日日操| 极品九九九九九九| 五月天综合在线观看| 婷婷大香蕉| 97色片| 开心五月婷婷婷美女| 1024在线一区| 巴基斯坦粉嫰无码视频| 99热精品在线| 开心婷婷五月天电影院| 婷婷色色网| 97av在线视频| 五月丁香天堂网| 一区二区免费看| 丁香五月婷婷在线观看| 超碰永久在线| 五月天婷婷在线视频| 大香蕉网 久久| 婷婷六月色丁香视频在线观看| 超碰99在线观看| 男人的天堂五月丁香| 激情五月开心五月丁香五月| 亚洲在线播放| 天天射色五月天| 色色色在线观看| 亚洲超碰青涩| 丁香婷婷十月| 狠狠婷婷日韩| 丁香六月婷婷综合欧美| 91怕怕网| 天天日天天爽| 91婷婷丁香| 久热综合| 99热这里只有精品国产免费| 五月香婷婷| 婷婷五月花| 97人人超| 人妻丰满精品一区二区A片| 99久久66| 在线视频婷婷| 天天综合网站| 无码se| 成人日韩欧美| 久久成人精品视频| 狠狠草网| 婷婷五月激情综合| 中文字幕日韩无码制服诱或| 婷婷色色宗合网| 色欲色香伊人| 亚洲网视屏| 丁香六月婷婷综合| 欧美va亚洲va在线播放| 日韩精品超碰在线观看| 色综合色综合网| 五月综合777| 精品9l九九九九九77777| 人人爽欧美婷婷久久久五月丁香| 成人综合视频在线| 风流少妇A片一区二区蜜桃| 色婷婷香蕉丁丁网| 九九九九国产| 1024人妻无码中文字幕| 久久9久| 丁香五月婷婷久久综合激情网 | 亚洲色另类| 91精品久久久久久久| 亚洲色五月婷婷| 丁香六月激情综合网| 97成人在线视频| 日本天堂爱爱| 国模淫穴色图| 五月丁香六月在线欧美| 婷婷丁香五月基地| 97天堂| 午夜做爱影院| 五月婷婷久久内射| 久久久18| 很很色丁香久久停停| 成人丁香五月| 天天在线XXX| 久久这里只有国产| 99热99极品观看| 成人午夜视频精品一区| 婷婷五月天堂| 婷婷五月天视频亚洲| 九九这里只有精品在线视频| 人人叉久| 婷婷五月丁香亚洲| 99热综合网| 人人草人| Www,五月天| 丁香五月 综合| 538任你爽视频不一样的| 人人爱操| 伊人色综合网| 超碰免费人人| 9有码中文| 五月天婷婷乱| WWW色五月天| 综合五月丁香六月婷婷| 欧美久久久中文字幕| 人妻少妇色综合| 九九精品热| 五月婷婷丁香六月| 性视频久久| 99视频只有这里精品| 秋霞电影一级黄| 性高潮久久久久久-九九九九九九九九九九热-成人AV | 五月天开心激情综合网| 激情五月五月五月婷婷| 色婷婷在线视频久| 人人色婷婷五月天| 99re最新地址视频| 人妻操逼视频。| 色私五月婷婷| 超碰成人av| 人人操碰| 在线亚洲综合| 996热re视频在线观看视频| 一本大道嫩草AV无码专区| 99热99干| 天天狠天天叉| 婷婷爱五月天| 久久婷婷五月综合| 北京熟妇搡BBBB搡BBBB| 另类视频在线| 婷婷综合视频| 欧美日本韩国亚洲| W色综合| 麻豆AV一区二区三区| 久99热| 天天搞天天爽| AV大香蕉| 日日操天堂| 天天插操| 五月色丁香婷婷综合| 久草九一| 欧洲MV日韩MV国产| 色色色色网| 99精品自拍| 激情五月婷婷| 91打屁股免费看| 色了色综合| 熟女网站久久| 久久XX日本综合| 日本在线视频播放91| 夜夜人妻五月天| 九九久久久综合| 九月丁香婷婷| 九色啦蜜臀| 日韩人妻无码一区二区| 激情图片久久| 97色射| 97在线视频观看| 色情综合网| 婷婷五六月丁香| 激情丁香久久| 热99玖玖99玖玖99九九| 久热只有精品| www.五月婷婷.com| 丁香五月Av| 狠狠色性| 热99这里只是精品| 亚洲99在线| 激情五月天婷婷播播久久综合91| 婷婷丁香五月亚洲| 99精品无码| 五月婷六月丁| 亚洲色情一区二区三区四区| 99热婷婷| 激情婷婷五月| 欧美日韩国产一区二区| 99久99久| 亚洲无AV在线中文字幕 | 色婷婷色久综| 成人短视频在线观看| 色99www.| 婷婷伊人綜合中文| 五月婷婷影视| 国产婷婷婷| 五月婷婷综合激情| 九九精品热| 激情五月天色色网| 99色干| 亚洲性视频| 婷婷亚洲欧美丁香五月| 五月WWW| 色播五月丁香综合| 激情网 五月天| site:xiongshengzz.com| 国产精品社区| 99热e| 久热99热| 婷婷综合精品| 深夜男女福利刺激影院一区完整| 99热国内精品| 欧美视频五区| caop在线| 欧美色婷婷| 九九久久五月天| 9久久久久| 热99精品视频五月| 色婷婷小说| 99久热这里只有精品| 天天爱天天狠天天透| 五月天网站亭亭| 中文乱子伦视频| 欧美日韩AAA| 六月丁香成人网| 婷婷色情五月| 色噜噜五月天| 久久看婷婷| 综合另类视频| 五月丁香六月激情欧美综合| 国产67194| 丁香六月激情综合| 91在线操逼视频| 色在线免费观看| 精品无码片| 亚洲AV成人无码电影| 五月婷婷草| 玖玖色综合网| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 五月丁香无码| 激情五月婷黄版| 久久婷婷综合基地| 九九色综合| 五月激情丁香啪啪| 99日在线观看视频| 婷婷丁香五月综合| 狠狠干激情五月| 激情小说五月欧美亚洲丁香| 香蕉视频91| 色丁香五月| 久久精品99国产精品日本| 色婷婷成人做爰A片免费看网站| 激情五月黄色| 中文字幕av在线播放| 狠狠爱综合网| 日逼免费视频| 五月婷婷激情| 精品久久人妻| 超91热| g00d人体西西| 国产五月丁香在线| 色综合激情| 久久九区| 丁香五月婷婷激情四射深爱激情| 大香蕉五月丁香| 九九热最新| 五月综合激情网| 丁香五月区| 天天操九九插| 五月综合丁香婷婷| www.9操| 99ri视频在线播放| 五月激情婷婷色| 五月天六月色| 熟女人妻一区二区三区免费看 | 婷婷五月婷婷五月天| 天天操综合网| 人妻丰满精品一区二区A片| 婷婷综合九月| 五月婷婷久久内射| 久久久久久综合88| 五月天啪啪网| 天天爽夜夜爽夜夜爽精| 99精品无码| 女人被躁到高潮嗷嗷叫小| h亚洲| www.五月天。com| 亚欧州精品视频| 伊人高清无码| 色六月丁香婷婷啪啪啪| 五月婷婷av| 精品一二三区久久AAA片| 99热这里有精品首页10| 91dy.av| 激情婷婷久久| 五月色婷丁香| 思思热精品免费视频| 九九九九毛片| www.久9| 色青五月天| 丁香五月播播| 2017人人操| 久久人妻高清中文| 五月婷婷六月天| 在线成人网址| 99热这里只有精| 久久免费高| 99高级会所久久| 国产 亚洲 在线| 九九色图| 色欲色香综合网站| 思思综合热| 亚洲综合五月天婷婷丁香| 大香蕉五月| 五月天激情亚洲| 91人在线观看| 色综合播放| 五月天激情久久| 九洲一级A片| 天天爽夜爽| 九九色婷婷Av| 天天影视色综合网| 日本二级毛片二级毛片| 婷婷五月天天| 桃色成人网| 亚洲婷婷五月天综合| 五月丁香婷婷色色| 九色91视频| 成人va在线播放| 色婷婷亚洲综合天堂| 欧美噜一噜| 国产精品久久久爽爽爽麻豆色哟哟| 看婷婷五月天网| 久久亚洲激情五码| 婷婷97| 91久热| 超碰成人电影| 九九伊人网| 久九色| 91色久| 婷婷五月大| 丁香五月婷婷网| 婷婷激情四射| 成人av免费观看| Xx色综合| 天堂草在线观| 蜜臀av 粉嫩av 懂色av| 丁香五月婷婷色偷偷| 97超级免费无码| 五月婷婷中文字幕| 9久久精品视频| 婷婷五月天网址| www色五月| www久久久| 亚洲五月天色| 一本大道熟女人妻中文字幕在线 | 97人妻碰碰碰久久久久-最近国语高清| 直接看的AV| 青青久久大香蕉| www.yw色| 久久草人妻| 中字幕视频在线永久在线观看免费| 成人欧美一区二区三区在线观看| 日B日潘金莲BB| 激情五月丁香六月综合AVXXXX| 九九精品少妇| 婷婷色网站| 婷婷丁香五月亚洲欧美| 日本操天堂| 色99热| 99久超碰| 久久思思热| 五月婷婷丁香狠狠撸久久| 婷婷中文网站| 婷婷伊人网| 五月天色综合服务平台| 日韩欧美婷婷丁| 91在线日| 国产一级婬片毛片| 激情图片99| 丁香五月婷婷色| 91碰碰碰久久久久| 激情四射婷婷| 激情纯色婷婷五月天在线不卡视频| 99热伊人综合| 9|无码久久久久久| 欧美Va在线| 丁香五月色五月| 777精品久无码人妻蜜桃| 婷婷五月色網站| 99福利导航| 大地9中文在线观看免费高清 | 色10月婷婷视频| 婷婷五月激情欧美大胆视频| 婷婷综合视频| 啪啪啪五月天| 99热久草| 一本久久婷婷| 啪啪91| 99热99干| 99噜噜噜在线播放| 欧美在线视频9| 激情久久久| 免费在线观看欧美激情xx小视频| 五月丁香五月丁香| 九九热在线99| 五月综合激情啪啪啪啪啪| 美女激情综合| 996日日爱| 日日噜人人人做人| 99视频在线啪| co超碰在线观看| 在线视频你懂得| 伊人AV五月婷| 狠狠久久婷五月综合色| 婷婷激情九月| 人妻中文字幕精品| 日本精品人妻无码77777| 色婷婷中文在线| 国产精品成人网站| 天天射影院| 国产成人av在线| www99热| 六月丁香婷婷网| 欧美一级色| 九九色天堂| 大香蕉 婷婷| 色五月综合| 色天堂在线| 激情婷婷啪啪| 亚洲综合婷婷| 久久黄色网扯| 久久婷婷五月综合97色一本| 99资源在线视频| 韩国97天堂| 激情文学综合婷婷五月天丁香花| 99视频| 婷婷永久在线| 九九精品热播| 亚洲第一综合| 天天插天天插天天插天天插| 丁香五月综合亚洲| 丁香六月色情| 99热99热在线观看| 亚洲人成网亚洲欧洲无码久久| 久久伦乱| 日韩精品成人在线| 97婷婷在线| 丁香五月婷婷色偷偷| 超碰2021| 亚洲图片 丁香婷婷| 秋霞av吧| 婷婷激情五月综合| 六月香五月婷| 亚洲乱码日产精品BD| 色色图五月天| 五月停视频天堂| 亚洲无AV在线中文字幕| 在线99热| 99性爱视频| 亚洲小说五月婷婷| 五月丁香综合| 97色在线| 丁香五月天在线观看视频| 99爱爱| 色婷婷操逼| 色婷婷狠| 热99国产精品| 色噜噜狠狠色综合伊人| 九九热这里精品| 狠狠人人| 丁香婷婷六月激情综合| 五月丁香六月婷婷手机无线| 99爱免费视频在线观看| 爱婷婷五月| 五月婷婷激情四月| 久久小片| 国产美女视频久| 大香蕉99热| 4399成人黄A片| 色丁香五月| 五月天精品| 亚洲黄网AV| 五月综合激情网| 97操| 婷婷丁香在线| 性爱在线播放av| 夜夜操少妇| 久色资源网| 久久久噜噜噜久久人妻| 91九色国产在线| 深爱开心激情| 欧美性生交XXXXX无码小说| 99热人人艹| 久久久A级视频| 五月久久婷婷| 久久婷婷五月草视频在线播放| www.五月婷婷久久.com| 婷婷.com| 色域五月婷婷丁香| 99性爱视频| 丁香五月伊人| 91人人网| 99热99热在线观看| 日日日天天干| 三级三久久线久久99久目本WW| 狠狠操狠狠爱| 五月婷婷激情在线| 色婷婷丁香综合中文字幕| 激情四射五月天偷偷看婷婷| 日本AAAAAAAAAAAAAA片| 天堂综合久久| 开心五月婷婷激情| 丁香五月激情啪啪啪| 丁香五月综合婷婷| 天天日天天操天天干| 五月天久久综合婷婷| 婷婷五月情| 91丨九色丨首页| www.91九色| 新激情五月开心五月婷婷五月丁香五月| 日婷婷久久开心| 99精品免费视频| 久久天堂女人| 久久久久久久综合狠狠综合| 久久人妻人人槡| 99色热视频| 婷婷99视频在线| 婷婷99中文字幕| 丁香六月天婷婷开心综合| 91AV婷婷| 20253AV| 久久丁香| 狠狠草在线观看| 开心五月激情网| 色综合香蕉视频| 激情婷婷亚洲五月| 成人综合AV| 久操乱| 开心五月婷婷五月| 日日夜夜狠狠| 综合色、色综合| 日韩啪啪视频| 草综合14| 5月丁香综合图区| 婷婷五月天堂网| 开心五月深爱五月| 亚洲成人在线在线| 久久99综合| 99色色网| 9九九久久精品无码专区| 五月天婷婷色色| 婷婷激情六月| 操逼五月婷婷| 亚洲激情丁香五月天色| 91碰碰视频| 国产三级在线播放| 91操操操| 激情丁香婷婷| 九九九日本熟女| 婷婷色五月在线视频| 丰满少妇猛烈A片免费看观看| 九月丁香亭亭| 欧美激情VA永久在线播放| 国产av天天插天天操天天爽| 狠狠草天天草| 色婷婷AAA| 丁香五月777| 久久色五月天综合网| 成人做爰A片免费看视频| 另类视频一区| 日韩操逼大片| 久久婷综合网| 日本啪啪网| 丁香五月播播| www.seqingwuyuetian| 亚洲精品五十一区| 久久九九色| 337p大胆噜噜噜噜噜91Av| 97se视频在线| 色婷婷精品视频| 99热这里只有精品66| 色五月丁香91| 精品少妇蜜臀91| 99视频在线观看地址| 日韩狠狠色婷婷| 婷婷五月天AV| 天天操夜夜啊| 91一起操| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 五月久久婷婷| 99re免费精品视频| 久久女人天堂| 人妻熟妇国产精品| 97综合在线| 丁香五月婷婷基地| 另类视频一区| 婷婷爱五月天| 激情五婷精品网在线观看网址| 日韩无码色色| 深爱丁香网| 中文字幕无码人妻少妇免费视频| 99热成人精品| 2018国产大陆天天弄| 婷婷五月综合欧美在线播放| 国产精品一区在线观看你懂的| 思思热久在线观看视频| 日日夜夜干| 伊人五月网| 婷婷激情五月天桃花网| 亚洲天天| 成人五月天丁香婷| 人妻av在线| 色婷婷狠狠干| 国产午夜成人AV在线播放| 婷婷播播五月天| 一区二区无码视频| 亚洲热热视频| 黄色五月婷婷| www狠狠| 99久久思思| 97偷拍对白视频| 亚洲无码99| 91欧美日韩综合| 日日夜夜干| 国产热精品| WWW色色色COM| 99丁香五月婷| 亚洲婷婷在线播放十月| 香蕉AV777XXX色综合一区| 亚洲激情精品| 日本WWW九九九| 79精品视频在线观看,| 五月激情综合婷婷| 色色色1网址| 五月天开心色情网| 亚洲色五月天在线| 色色综合五月| 色婷婷视频| 婷婷免费无视频| 99日在线观看视频| 美女五月天| 深爱激情久久| 超碰国产av| 丁香六月婷婷久久综合| 无码色色| 色五月首页| 无码视频国内精品久久久| 99久视频| 成人婷婷桔色| 大香蕉懂9| 激情五月天在线视频| 天天添天天摸天天天天做| se99热久久一本| 色婷婷综合网站| 久久这里有精品视频| 7超碰自拍| 婷婷五月天综合亚洲| 99热最新精品| 91大屁股| 乱码操操| 337久久| 久久综合婷婷| 亚洲色情在线| 丁香五月情色| 亚洲婷婷丁香五月| 色999五月色| 狠狠搞狠狠操| 狠狠操天天操综合| 操九色| 六月婷五月丁香| 五月激情网站| 人碰人人人玩91| 六月激情婷婷| 五月婷婷影| 五月色丁香综合| www.sebowuyue| 成人在线观看国产| 婷婷中文字幕| 99热精品无码| 超碰renrenai| 综合激情五月天| 五月丁香日逼| 青草青草视频2免费观看| 综合久久影院| 婷婷五月天精品| 狠狠色丁香99| 99综合免费视频| 国洲夜色亚热在线久久| 午夜69成人做爰视频| 99久久99久久综合| 深爱综合网| 另类综合国产| 久久国产性爱A V| 久久大香蕉同僚| 亚洲成人综合网在线免费观看| 超碰人人草| 激情av在线| 人人干人人操人人摸| www 五月天 com| 99这里只有精品视频免费| 人人操人人干AV| 色色色色色日韩午夜激情| 日韩一区二区A片免费观看| 丁香色婷婷五月天| 丁香 亚洲 久久| 婷婷五月激情视频| A A色色| 99热国产在| 激情五月婷婷丁香六月| 欧美日韩国产伦精品日韩人妻一| 五六月婷婷久久| 亚洲V国产V欧美V久久久久久| 色婷婷五月天在线观看| 国产熟女一区二区三区五月婷| 久久久性爱视频| 日日日日操| av在线色五月丁香婷区久| 婷婷丁香成人在线视频| 丁香五月六月久久综合 | 激情网战码亚洲A| 91精品久久久久久久| 2017人人操| 日韩日比视频| 九九视屏| 久久婷婷五月综合成人d啪| 91se在线观看| WWW久| 五月婷婷六月综合| 97操碰人人| 色婷婷激情五月天| 玖玖婷婷色| 激情视频综合| AV无码免费| 激情婷婷丁香五月天| 五月丁香六月综合基地| 激情久久肏屄视频| 国产在线黄色| 91久久久久久久| 激情婷婷五月久久| 婷婷在线观看五月天在线视频| 激情五月天色色| 五月天激情播播网| 久久视频这里都是精品| www.色婷婷。com| 操逼在线视频| 色区域网站视频| 五月天六月婷婷电影| 精品成人a v无码内射| 五月天久久91| 色婷婷综合影院| 97久久人人| 日本欧美成人片AAAA| 五月天色色网站| 无码人妻AV久久久一区二区三区 | 婷婷字幕在线| 婷婷五月精品中文| 在线成人视频免费| 国产熟女一区二区三区五月婷| 久久婷婷热| 99丁香五月婷| 五月丁香网中文字幕| 五月天深爱激情网| 欧美va在线观看| 在线视频你懂得| 开心五月婷婷激情| 秋霞少妇AV网站| 狠狠干狠狠操狠狠爱| 六月丁香停| 日韩人妻无码专区| 中文字幕丰满孑伦无码专区| 久久38视频| 久久久jd| 欧美大奶熟女噜噜噜噜| 天天干夜夜欢| 婷婷五月天在线视频网站| 色婷婷网| 欧美性生交XXXXX无码小说| 天堂在线伊久| 国产操B视频| 九九家庭影院| 人人看人人摸人人| 欧美色色色色色色| 操一区| 9色小视频在线观看| 天堂久久婷婷| 五月天开心成人网| 成人开心五月天| 五月天色图| 日本人妻伦在线中文字幕| 熟女国产在线一区二区三区四区| 五月丁香亭亭操逼| 热久久77777| 久久草大香蕉| 久草网大香视频| 色色网站| 五月六月丁香婷婷在线观看| 极品人妻VIDEOSSS人妻| 碰碰91| 激情婷婷五月亚洲| 五月婷婷99热| 99热99天堂| 好吊兆人妻| 国产肥白大熟妇BBBB视频| 日本三级中国三级99人妇网站| 亚洲色色香蕉| 激情都市五月天| 国内裸舞二区| 天天综合久久| 激情小说五月天社区丁香| 婷婷色九月| 九九热大香蕉| 第四色五月婷婷| 超碰AV成人| 丁香五夜激情四射夜夜夜| 国模九区| 色五月婷婷777| 午夜天堂一区人妻| 亚洲成av人影院| 丁香五月婷婷色| 99精品无码| 精品人妻久久久久久| 99性视频| 99热8| 色五月激情网| 成人国产欧美大片一区| 丰满老熟妇BBBBB搡BBB| 做爰丰满少妇1313| WWW.久久.COM| 丰滿爆乳一区二区三区| 丁香婷婷五月综合欧美另类| 在线不卡的视频| 久久九九re热| 婷婷五月天中文字幕| WWW色色色COm| 亚洲午夜AV| 天天艹天天综合网| 色99亚洲| 日日噜狠狠色综合久久| 久久婷婷五月综合啪| 玖玖热视频| 久久久久久97| 99综合视频| 国产人妻人伦精品一区二区| 综合久久丁丁香婷| 97超级碰碰碰久久久| 伊人五月天97| 99视频内射三四| 都市激情五月婷婷综合| 毛片新网地| 激情五月天com| 色婷婷www| 九九成人视频| 欧美日韩一区二区三区四区| 亚洲Av成人在线观看| 超碰chaompinm| 欧爱综合视频| 亚洲国产精品二二三三区| 久久免费少妇高潮99精品| 99啪视频在线观看| 久久婷婷网| 清色五月天| 五月丁香色色| 久久久国产精品黄毛片| 百度一下国产精品A| 色婷婷情片| 激情深爱综合| 激情婷婷色五月| 色婷婷综合久久久久| 亚洲五月天激情| 香蕉中文在线| 五月开心婷婷网| 丁香网五月天激情| 91美女被操| 日本操B视频在线观看| 久久九九国产| 狠狠操天天操天天操| 996er热| 久碰视频| 久久婷婷人人| 伊人丁香婷婷东京| www.maotanji.com| 97夫妻超碰| 99免费热视频在线| 六月丁香综合网| 991精品在线视频| 欧美日韩精品人妻狠狠躁免费视频| 九九久久精品國產| 欧美日韓成人亚洲精品另类| 婷婷五月情| 噼里啪啦完整版中文在线观看| 日本WWW九九九| 99热在线中文字幕| 午夜激情婷婷| wuyuedingxiang| 开心 五月 综合| 激情图片五月天| 亚洲精品一区无码A片| 9久热在线视频精品| 色五月婷婷天天操夜夜操| 丝袜大香蕉| 综合久久首页| 五月天婷婷丁香蜜桃91| 999婷婷综合| www.9色色色| 天天噪夜夜爽| 婷婷性爱| 色婷在线视频| 蜜臀嫩草| 美日韩成人| 91viP在线看| 26uuu成人网| 爱操天堂| 激情五月亚洲综合网| 天天艹夜夜艹| 五月丁香久久久久| 五月伊人婷婷999| 99re这里只有精品视频了| 97caop| 五月丁香啪啪啪啪| 亚洲婷婷欧美婷婷| 91re色综合视频| 伊人丁香五月| 久久这里只有精品8| 激情五月婷黄版| 日本va欧美va欧美va| 超碰97在线操| 亚洲精品操一操、噜一噜、摸一摸、爽 | 欧美噜噜免费观看 | 五月色亚洲| 97婷婷丁香| 99热在线观看| 色综合久久88色综合天天| 久久99这里只有精品视频| 99精品视频在线观看| 五月婷婷无码| 五月丁香六月婷综合成人综合| 国产三级在线播放| 成人丁香婷婷五月天| http://www.com久久久精品一区| AV五月丁香| 天天干,夜夜爽| 天天综合久久| WWW.国产| 青草视频在线蜜臀| 中文字幕人成乱码在线观看| 99热国产这里只有| 亚洲精品久久久久久久久久吃药| 丁香五月婷婷亚洲色图|