99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

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| 九九热9| 欧美va欧美va差| 97涩婷婷婷婷基地| 国产乱妇无乱码大黄AA片| 五月开心激情网| www.久9| 成人短视频在线观看| 五月激情网站| 国产超碰av| 五月亭亭综合五码| 婷婷狠狠久久| 人妻性爱av网站| 99久久综合狠狠综合久久| 色偷偷五月天| 99操逼| 久久久妻人人人| 五月久久丁香| 成人精品视频99在线观看免费| 丁香六月婷婷色XXXXX| 激情久久丁香| 超碰精品国产首页| 丁香九月激情在线视频| www.超碰97| 噜噜狠狠色| 九九热亚洲中文在线观看免费| 丁香婷婷浪潮AV久久综合| 91婷婷色 | 婷婷五月天六点丁香五月| 日韩aaa| 久99久在线| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 亚洲日韩久久婷婷伊人| 国产成人精品亚洲线观看| 欧美激情综合五月色丁香| 国产性av| 五月天婷婷综合网| 人妻丰满精品一区二区A片| 伊人久久婷婷五月综合97色| 五月丁香婷婷六月| 丝袜大香蕉| 伊人久久大香天蕉亚洲特级| 丁香激情久久| www.五月天婷婷| 艹| 狠狠大香婷婷爱| 色综合久久综合| 无遮羞AV| 99热在线极品极品| 一级韩国产精品毛| 伊人狠狠色婷婷综合丁香一区| 乱抡小BB| 99re资源在线视频导航| 亚韩在线视频| 日本色天堂| 麻豆雪千夏| 婷婷五月天开心激情网| 日韩无码色色| 丁香五月社区| 九热视频精品| 色婷五月天| 黄色精品五月婷婷| 天天干,天天舔| 激情六月天婷婷| 五月婷中文娱乐综合| wwwav大香蕉| 一区二区成人电影免费播放| 丰满少妇猛烈A片免费看观看| 婷婷久久精品| 日本久久网| 伊人婷婷大香蕉| 日本久久精品18| AV在线免费观看不卡| 婷婷五月天改成什么了| 啪啪日本欧美| 国产SUV精品一区二区883| 久热人妻| 九九无码| 极品五月天| 亚洲成人丁香花| WWW.HENHENL.| 婷婷丁香六月| 激情亚洲色图片丁香综合| 人人看人人草人人摸| 亚洲XX日本| 色五月婷婷丁香国产在线| 中文字幕丰满乱孑伦无码专区| 丁香色五月婷婷17C| 超碰免费人人| 色婷五月| 狠狠干,狠狠操| 婷婷丁香六月| 成年人99热| 播五月丁香六月| 丁香五月,激情五月,深爱五月| 中文不卡av| 丁香五月AV在线| 碰碰人人漕| 精品国产a| WWW,五月| 色色色色色日韩午夜激情| 久久ri精品| 97成人超碰免| 99免费视频久久| 婷婷日日天天| 超碰av在线| AA片在线观看视频在线播放| 久99视频| 97色色色| 亚洲成AV人片在线观看| 婷婷五月激情的图片| 婷婷综合六| 色爱99| 色婷婷99| AV在线免费播放| 热的国产,热的综合,热的有码| av免费人人| 久热超碰91| 五月婷视频| 日本波多野结衣视频| 综合亚洲AV| 日日噜狠狠色综| 婷婷五月天在线观看免费 | 日日干日日s| 五月天涩涩| 99热官网精品在线| 久久性刺激| 狠色狠色狠色狠色狠色网| 天天激情欧美美女| 91操女| 婷婷五月天黄色网址| 99婷婷| 97久久婷婷色| 色五月丁香激情视频| www.夜夜操.com| 国产看真人毛片爱做A片| 五月婷婷日本| 99热这里只有精品8| 丁香五月婷婷基地| 丁香五月婷婷五月天在线| 婷婷五月另类网站| 激情婷婷狠狠干综合| 日本熟女啪啪| 伊人啪啪网| 精品无码久久久久久久久| 色婷婷啪啪啪啪啪啪| 精品皮股午夜AV| 五月天桃色深爱网| 久久婷婷五月天激情新地址| 婷婷中文字幕| 狠狠色狠狠干| 国产人妻777人伦精品HD| 丁香五月自拍| 深爱激情综合| 六月亚洲| 99热只有| 婷婷永久在线| 色色色com| 天天草婷婷五月| 激情丁香五月婷婷| 色情播放| 中文字幕人妻一区二区| 天天色综合网吨吧| 久久天堂加勒比| 99成人精品视频| 午夜69成人做爰视频| 人妻熟妇国产精品| 狠狠综合| 久久人人人人妻| 国产乱子轮XXX农村| 色综合xx| 日本97在线观看| 日日艹思思热| 婷婷五月,偷窥偷拍网| 久久婷婷六月综合| 婷婷丁香97| 激情综合五月| 26uuu激情五月天| 五月天成人在线精品| 97精品人人A片免费看| 亚洲色欲欧美一区二区三区| 欧美精品狠狠色丁香婷婷| 五月天激情综合10p| 九九9久九9国产视频| 色五月丁香一区在线| 国外亚洲成AV人片在线观看| 涩涩涩婷婷| 婷婷色导航| 六月丁香婷婷天堂| 97se视频在线| 色亚洲中文| 欧美顶级少妇做爰HD| 色婷婷深爱五月| 97在线观视频免费观看| 性色婷婷| 婷婷娱乐丁香综合网| 亚洲av成人一区二区电影在线| AV五月婷婷露脸| 色综合久久88| 九月色婷婷| 色色综合网络| 色色99| 无码激情AAAAA片-区区| 丁香月六月| 五月丁香六月婷婷激情视频在线观看免费| www.五月婷婷.com| 成人无码免费一区二区中文| 成人电影在线免费试看| 天天擼久久擼在线| 久久婷婷影院| 日韩一区二区A片免费观看| 99久久久| 欧亚中文A V| 五月天之色情综合网| 激情綜合網址| 丁香五月婷婷在线视频| 色婷婷五月天激情| 亚洲日韩成人三级av| 婷婷五月天视频亚洲| 九九99九九99偷拍视频免费看| 五月丁香啪啪| 五月天婷婷丁香基地在线观看| 五月天丁香婷| YW无码| 操碰97| 天天操天天草天天草天天| 九色PORNY自拍成人精彩视频| 狠狠操在线视频| 五月丁香六月香香蕉| 玖久精品视频9| WWW、日本色丁香、co m| WWW久久久| 五月丁香在线国产| 激情 五月 婷婷 丁香| 丁香五月婷婷高清| 日韩一级一片内射视频4K| 色婷婷免费视频| 99色播| 欧洲亚洲免费视频9| 狠狠ri| 超碰国产AV| 插插网爽妇五月丁香| 狠狠色97| 欧美日韩成人在线免费| 国产4P视频精品五区| 亚洲第一成人无码A片| 超碰在线人人| 丁香六月啪| 几激情五月婷婷色五月色天堂| 久久五月天合网| 国产肏屄大片| 91久久九九| 日韩av一区二区在线/日产精品久久久| 久久激情五月| 婷婷性爱五月天| 五月天婷婷在看| 婷婷五月天激情五月天深爱五月天| 青青草Avb在线| 91一起操| 精品久热| BBWCUCKOLD精品熟妇| 9久视频| 五月成人网站| 五月天最新网| 婷婷色综合| 久久久精品人妻录| 婷婷五点亚洲| 91精品综合久久久久久五月丁香| 婷婷五月av| 欧美成人AAA片一区国产精品| 五月丁香激情啪啪| 九九在线精点品| 狠狠搞狠狠操| av操逼网| 丁香五月欧美色综合| 99久久极情精品一区| 人人操人人爰人人一天天碰夜夜拍夜夜爽-中国A级毛片天天看天天谢… | 婷婷五月天久久久| 高清无码网址| 日本九九九九| 少妇熟女视频一区二区三区| 夜夜穞天天穞狠狠穞AV美女按摩| 欧美成人在线观看| 黄色五月婷| 欧美在线视频9| 综久久久| 91色五月| 久色中文| 这里只有精彩视频| 色婷婷丁香五月| 欧洲色| 激情内射人妻1区2区3区| 九九婷| 变态另类色图| 欧美日韩91| 无码人妻激情| 最新高清无码专区| 狠狠干狠狠操狠狠爱| 天天做天天爱天天爽夜夜揉| 欧美超碰亚洲| 91人人爽狠狠狠| 99熟女| a在线观看| 五月天婷婷色| 色五月激情五月丁香五月婷婷啪啪综合 | 9久久精品| 综合色色网| 久爱综合| 台湾无码A片一区二区| 思思99热这里只有精品| 天天插天天插天天插天天插| 久久草大香蕉| 97操女视频| 五月丁香久人妻中文| 天天拍夜夜撸| 久久狼人天堂| 激情婷婷五月在线合集| 免费播放AV| 天天天摸夜夜夜玩| 午夜69成人做爰视频| 岛国在线观看91| 五月丁香啪啪网| 草草影院爱爱| www,8050,午夜三级| 五月色丁香婷婷中文字幕| 色色色色色色97| 五月天婷婷丁香| 色人久久| 日本少妇AA一级特黄大片| 五月婷婷偷拍| 第一区久久网站| 欧美成人无码高清一区二区三区| 婷婷五月色亚洲| 激情综合99| 无码色| 97一区二区| 丁香五月日韩| 热99热9| 超碰成人电影| 色色色色色色色色色色色色色色,网站| 婷婷伊人久久无码色五月| 久久大香蕉视频| 久久与婷婷| 综合成人小说婷婷| 91九色最新视频| 99精品国产在热久久婷婷| #NAME?| 开心婷婷五月激情网小说| 丁香五月天五码婷婷| 日韩一66精品| www.91久久| 久热伊人在91| 丁香婷婷综合激情五月色| 婷婷天堂综合| 极品另类| 人妻久久久久久| 国产真实乱对白精彩| 婷婷色情网| 思思热在线播放| 成人做爰A片免费看视频| 亚洲无码11| 五月丁香狠狠| 日本人人超碰| 亚洲AAA| 色播丁香| AV在线资源| 人人播| 免费色婷婷| 2023天天日夜夜爽| 激情婷婷丁香五月| 亚洲九九在线| 热日韩欧美| 这里只有精9| 99热9| 五月天社区婷婷丁香社区| 国产日日操夜夜操的肉棒视频| 天天做天天爱天天高潮| 美女亚洲五月丁香| 无码色| 久久久er热| 深爱五月婷婷| 热的国产,热的综合,热的有码 | 大香蕉五月婷婷| tingtingzonghewang| 深爱婷婷网| av久热| 久re热视频| 色色婷婷色色| 久久久91| 色5在线| www.色五月| 伊人五月婷婷| 夜夜撸日日操| 亚洲精品视频在线| 九九色热| anquye五月| 天堂久久丁香| 五月丁香六月激情视频| 91色在线/日韩| 99操逼视频| 97亚洲精品| 五月开心激情网| 欧洲亚洲精品| 最新亚洲色色网| www.99色在线| 激情内射p| 亚洲一区二区无遮挡A片| 9热在线观看| 丁香五月色色| 五月婷婷丁香| 久久狠色噜噜狠狠狠狠97| 99在线精品免费视频| 五区毛片七区毛片| 日本系列_4页_777FP| 色欲色香综合网| 久久亚洲A| 成人无码精品1区2区3区免费看| 亚洲色色在线| 91jiuseshunv| 天天操夜夜操| 色视频五月天| 看黄的网站18禁| 亚洲日韩久久婷婷伊人| 中文久久婷婷| 五五月五月| 婷婷五月综合色中文字幕| 99精品久久| 婷婷五月天伊人网在线观看视频| 婷色视频| 日欧一片内射VA在线影院| 婷婷综合精品视频97| 五月丁香激情婷婷| 九九九九热99超碰| 99视频精品在线| 九九色99| 大香蕉伊在| 99九九精品| 99色精品| 艹| 丁香五月偷拍| 色色免费网战视频| 久9热插入| 亚洲99热| 性色综合网| 99爱爱| 色噜噜狠狠色综| 婷婷五月天综合久久日美女| 婷婷久久草| 青青热久久综合| 久草五月丁香婷婷综合| 丁香五月av| 国产九九一区二区三区| 青青草原福利在线| 蜜乳.comcom| 亚洲无码11| 婷色影院| 国产在这里只有精品| 亚洲亚洲永久无码777777| 第四色五月激情网| 91色色色视频| 五月婷丁香| 色婷婷精品视频| 色情免费视频播放| 国产精品-第3页-91JQ就要激情网91JQ5.JQJQ926.XYZ | 亚洲婷婷激情综合激情999精品| 久久一级片| 少妇性按摩无码中文A片| 丁香久久| 久色网| 91视频五月丁香| www,婷婷| 99热日韩| 精品草原久久视频| 亚洲AV成人在线| 激情骚五月| 婷婷五月天久草在线| 99∨VTV| 亚洲激情四射| 男女99免费视频| 天天做天天爱天天高潮| 天天干天天干天天| 日韩在线99| 综合久久99| 人人射人人高潮| 激情婷婷综合五月少妇| 日日舔夜夜操| 涩涩涩五月天| 精品久热69| 婷婷涩涩五月天| 色婷婷六月天| 色999;丁香五月| 五月天色不卡| 狠狠插狠狠插| 91肏| 激情99| 97碰| 国产毛片精品一区二区色欲黄A片| 激情网婷婷婷| 深爱五月激情| 无码人妻电影| 欧美色色色色色色色色色色| 中文字幕av在线| 久久婷婷网| 97人人干| 五月停视频天堂| 狠狠色综合网站久久久久| 大天天伊人| 久久久999精品| 久久久久久久综合狠狠综合| 五月婷婷在线观看| 色播丁香| 中日韩美欧成人一区二区精品在线| 最新国产AV| 久综合| 九九免费精品在线视频| 俺去也五月天| 欧美日综合| 久久久久久久久18久久| 99热在线精品播放| 五月综合777| 99精品视频免费| av九九| 日本三级第一页| 五月天停停日日| 色情五月天视频网| 狠狠狠狠狠狠狠狠| 久久久网站| 婷婷性爱五月天丁香网| 色 免费网站视频| 五月天婷a| 超碰人人超碰| 91熟妇大香蕉| mmm1717.6dbm人人爱人人操| 日日夜夜干| 久久小视频| 另类图片五月天婷婷| 亚洲操精品| 五月五丁香婷婷| 97影院一级片| 丁香五月激情五月色综合| 秋霞免费三级片| 五月天激情av| 亚洲亚洲人成综合网络| 久操人妻| 久青草影院| 艹B高清无码| 级情九色| 99久久精品国产色欲| 婷婷五月欧美综合| 香蕉婷婷色五月| 亚洲视频操| 久久久久9久无码视频| 看婷婷五月天网| 狠狠插狠狠插| 丁香啪啪中文字幕| 小视频一区| 天天干天天干天天操| 亚洲精品网址| 五月之婷婷| 久热大香蕉| 成人五月天丁香婷| 天天日天天舔| 婷婷伊人视婷婷婷| 五月婷婷丁香社区| 农村熟妇高潮精品A片| 原琪琪色影院| 亚洲性视频| 日本少妇AA一级特黄大片| 天天日夜夜夜操操操操| 538在线精品| 婷婷6月综合网| 亚韩在线视频| 婷综合| 婷婷.com| 中文字幕av久久爽| 天天天综合网| 婷婷综合国产| 99热这里只有精品18| 五月花婷婷| 伊人春天av| 怡红院视频| 97人人操人人| 草草视频91| 热九九精品| 婷婷永久在线| 久久99免费视屏| 婷色五月| 丁香午月AV中文字幕| 99网| 五月天成人网婷婷| 丁香五月婷中字在线| 秋霞影音91人妻久久| 五月婷婷电影院| 99性感视频| 欧美日韩成人h| 五月丁香基地| 97se视频在线| 99热精品无码| 五月丁香在线精品| 欧美97超碰| jiqingliuyuetian| 婷婷 伊人 久久| 丁香婷婷影院| 色婷婷香蕉| 91一起操| 天天操夜夜爱| 91视频免费后入强操| 99色热视频| 99欧美| 亚洲精品又粗又大又爽A片| 思思久热6| 五月婷婷日本| 亚洲综合成人网| 激情五月丁香色婷婷| 91麻豆国产三级精品福利在线观看| 久久思思精品| 在线成人网站| 色情终和网| 2025天天日爽| 久久综合网免费视频| 大香蕉综合视频在线| 99这里只有精| 人人色人人摸人人看| 五月天激情四射| 天天爽天天干天天| 激情AV| 玖玖婷婷免费| 久久99久久久久久| 久久精品视频9| 色丁香五月天| 人碰人人人玩91| 五月天丁香网站| 伊人春天av| 韩国不卡AC视频| 色噜噜狠狠色综合成人网| 亚洲天天免费| 六月色播| 婷婷丁香五月天之开心少妇| 综合网色| 婷婷五月天高清无码| site:xiongshengzz.com| www.ywav| 久久婷婷精品| 久艹大香蕉| 色欲日日躁| 97在线/亚洲| 91麻豆国产三级精品福利在线观看| 激情婷婷五月天| 森林影视大全,最好看的2019年视频| 伊人玖玖婷婷| a免费在线| 丁香五月成人网| 五月天偷拍| 国际国外精品欧洲南美洲专区无码不卡| 黄网免费观看| 婷婷五月天丁香激情| 校花娇喘呻吟校长陈若雪视频| 久久激情网| 婷婷五月天中文字幕.| 大香蕉 伊人夜| 97luluse| 免费无码毛片一区二区A片| 色婷婷操逼| 丁香婷婷色| 九九成人精品| 99小精品| 综合在线网| 人妻熟妇国产精品| 久久久精品AV| 九九色之九九色之88| 就爱日五月天| 婷婷综合丁香| 日日噜噜夜夜狠狠久久丁香五月| 激情五月天网站| 丁香五月天堂| 久久只有18视频| 9久久久久| 六月丁香网| 亚洲激情五月| 国产日韩欧美性爱| 亚洲欧美丁香五月天亚洲欧美| 激情小说婷婷五月| 无月播播激情在线观看视频| www.婷婷,com| 99re思思精品在线观看| 伊人婷婷五月| 婷婷日日天天| 亚洲bt丁香五月天婷婷激情小说| 色情五月天A片| 色色色色色色色色色999| 草综合网| 婷婷五月综激情| 色婷婷69| 午夜丁香婷婷| 丁香五月综合色婷婷| 无码九九| 狠狠色丁香99| 亭亭五月激情亚洲在线| 伊人五月成人| 国产密乳av一区二区三区四区| 五月丁香六月情| 色婷婷六月天| 噜噜五月天综合| 婷婷五月天色| 99色综合久久| 99偷拍视频在线日本| 色欲五月婷婷| 久久久妻人人人| 五月丁香色五月| 丁香婷婷中文字幕| 久草狼人| 97色色婷婷| 狠狠爱深色婷婷综合| 色情激情五月婷婷| 五月停停色| 亚洲超碰在线| 五月丁香在线婷婷蜜桃| 婷婷五月激情视频在线| 日本精品99| 精品一二三区久久AAA片| 天天做天天爱天天爽| 深爱五月婷婷| 狠狠狠狠狠狠草| 久久婷婷人人| 涩综合在线 | 色色综合网站| 久久99免费视频网站| 婷婷丁香花五月天| 日日干日日s| 色五月激情| 欧美久热| www.韩日视频| 大香蕉婷婷| 人人操A| 国产亚洲色婷婷久久99精品91| 六月综合婷婷开心伊人| 色婷婷亚洲综合网站| 青青草色在线视频观看| 婷婷婷五月天最新综合你懂的| 婷婷五月天福利| 99综合| 久久桃花网色婷婷| 五月丁香六月成人| 丁香五月六月激情| 色色五月天激情| 婷婷香蕉精品| 99精品热| 99热首页| 色综合综合综合| 中文字幕不卡+婷婷五月| 激情五月天色爱| 色色色色五月天| 日韩aⅴ视频| 国产99美少妇| 久久 婷婷 五月天| 亚洲区在线| 六月激情久久婷婷| 99热综合在线| 国产女生爱爱AA| 玖玖伦理电影| 丁香六月婷婷开心| 青青999| 婷婷开心青青草| 超碰人人草| 欧美伊人9| 激情综合网,五月| 人人摸人人| 丁香婷婷影院| 九九视频精品在线免费| 天天干天天插| 婷婷久久大香蕉| 俺去也婷婷| 色婷婷yy久| 99久久综合网| 中字幕视频在线永久在线观看免费| 久久98热re| 色丁香五月| 99在线资源视频| 另类图片 五月激情| 国产成人+综合亚洲+天堂| 六月五月久久丁香| 色情五月天。| 婷婷五月综合激情免费| 综合狠久久| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 被强行糟蹋的女人A片| 久热九九| 碰97久久| 色婷婷777狠狠| 九九性爱网| 国产女18毛片多18精品| 99性视频| 九月影院義母在线播放| 色狠狠综合网| 影音先锋一区二区三区| 久久性视频| AAA久久久| 色啪影院| 热中文字幕| 狠狠色狠狠操| 亚洲中文丁香| 9l视频自拍9l九色成人| 99在线观看视频蜜臀| 天天日天天操心| 精品一区二区三区四区五区六区介绍| 操碰91| 亚洲综合色网站| www.9操| 久久精品亚洲热| 996黄色片| 天天操婷婷| 婷婷五月丁香国产| 婷婷色欧美激情| 91精品视频男人的天堂| 五月婷婷激情中文字幕| 色哟哟精品| 99这里只有精品| 精品国产va久久久久久久| 色天堂婷婷| 五月婷婷六月丁香色| 成人短视频免费观看| 99热爱爱干干日| 国产精品久久99| 色五月情| 99色精品| 99视频内射三四| 国外亚洲成AV人片在线观看| 天天干天天射色综合| 色五月婷婷AV| 中文av网| 韩国三级五月天婷婷。| 九色 在线| 婷婷丁香18| WWW.桔色成人.COM| 啪啪操操| 五月丁香| 婷婷六月丁香五月| 久久久婷婷婷| 五月婷婷香蕉| 久久久久久97| 天天更新天天亚洲| 五月天丁香综合在线| 五月婷婷六月丁香| 99久久国产成人精品| 久久综合五月天激情小说网站| 五月婷婷av| 亚洲成人AV在线播放| 99精品成人无码A片观看金桔| 看久久性爱99视频| 狠狠狠婷婷五月综合| 亚洲精品第一国产综合亚AV| 91seav| 思思re视频在线| 99久久www| 91av传媒高清在线视频网| 日本在线va| 丁香五月日啪| 日本天堂免费99| 国产精品人成A片一区二区| 五月婷婷激情日本| 天天激情夜夜干| 欧美在线看| 91九色PORNY大屁股| 六月久久婷婷| 天天操夜夜爽| 爱之国产色情综合| 插逼综合网| 狠狠色噜噜狠狠狠777奇米| 九月丁香婷婷| 欧美性丁香色色五月天干干| 欧美性爱特黄一级aaaassss| 婷婷五月丁香久久| 亚洲婷婷丁香五月| 久热在线中文字幕色999舞| 国产成人在线精品| 五月婷在线视频免费看| 丁香五月视频在线观看| 婷婷伊人75| 精品久9| 五月婷婷丁香六月| 99久久99九九九99九他书对| 操人妻视频91| 色婷婷先锋| 色八月婷婷| 久久久久亚洲AV无码网影音先锋| 99色.com| 色婷婷久久7777| 婷婷D区| 夜夜操狠狠操| 五月婷婷婷婷| 五月丁香久久网| 色色AV色色色东莞| 五月停停丁香| 99久久精品国产色欲| 亚洲色婷婷99一9|| 久鲁鲁色网| 日韩人妻无码专区| 天堂色婷婷| 男女免费视频999| 一起操 91N.com| 人妻视频一区而且二区| 色婷五月天| 精品久久久人妻| 久热伊人| 色色色婷婷五月天| 无码人妻电影| 五月色丁香| 大香蕉五月婷婷| www.色色五月天.com| 久久婷婷五月综合啪| 激情网婷婷五月天| 精品无吗va视频免费观看| 热久久99热欧美国产亚洲| 少妇人妻综合色6699| 久久AV电影| 亚洲国产色色| 五月婷婷丁香在线| 色五月婷婷一二| 日日操天天操| 激情综合在线观看| 久草五月| 91丨九色丨43老版熟女| 亚洲亚洲人成综合网络| 色啦啦视频| 4399在线观看免费高清毛片| 五月天婷婷涩涩| 久草丁香婷婷五月天婷| 五月婷中文娱乐综合| A1片久久| av在线免费播放| 青青草原中文字幕| 婷婷 激情 五月| 欧美综合五月丁香五月天| 国产资源91在线| 开心五月网| 在线另类视频| 性爱久久| 日木WWW视频| 亚洲黄色av网站| 久久婷婷五月综合色奶水99啪| 狠狠舔| www 五月天 com| 欧美电影在线播放| 久久久亚洲成人无码A片| 六月丁香成人| 丁香五月久久| 能看的av片| 开心激情播播五月天| 日本久久婷婷| 久久精品99国产精品日本| 久久五月天 91| 色欲丁香| 99惹精品视频| 激情综合国产| 乱精品一区字幕二区| 亚洲乱啪| 日本久久网| 开心激情久久久久久久| 欧美成人网99网| 久色| 亚洲日韩乱码一区二区三区四区| 欧美色色色色色色色色| 欧美va精品va老师va| av网站中文| 婷婷五月av| 国产99久| 婷婷五月天最新综合你懂的 | 久久精品视频在这里有| 亚洲色热| 精品九九婷婷| 五月婷婷开心深| 五月婷视屏在线观看| 99久久综合网| 日韩国产在线精品| 99久久精品亚洲综合| 激情综合网五月天天| 国产精品久久久海的味道| 可以免费观看的av| 久99久视频免费观看| 色五月婷婷丁香婷婷| 色婷婷导航| 在线播放成人| 丁香五月天色综合| 99九九视频精彩在线| 日日干四虎| 91色色色| 五月婷视频| 琪琪色网在线| 美女五月天婷婷| 亚洲 视频 导航 一区| 97操碰人免费| 免费精品66| 超碰精品在线| 丁香五月天啪啪激情综合网| 天天搞天天爽| www.91在线看| 九九热视频思思| 91碰碰| 婷婷天堂综合| 这里只有精品无码| 亚洲成人丁香花| 五月激情婷婷开心五月| 成人视屏在线观看| 日韩一级| 色情五月天首页| 五月丁香啪| www.五月婷婷久久.com| 五月色综合| 五月婷婷9| 99热视精品| 99精品国产在热久久| 天天爽爽日日做做| 欧美人人操| 丁香五月欧美色综合| 日本熟女二区| 亚洲天堂玖玖| 五月激情网综合| 国产午夜精品AV一区二区麻豆| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 狠狠草在线观看| 五月停停色色丁香| 婷婷激情视频| 九九99热| 九九色欲网| 性生活视频98791| www.狠狠| 色婷婷综合综合网| 成人丁香五月天Av| 欧美日韩成人在线网| 五月亭亭狠狠| 成人资源在线| 狠狠操狠狠操| 色婷婷影| 思思久久99| 综合99在线| 五月丁花六月丁香综合| 国产亚洲av片| 久婷五月| 丁香婷婷九月| 婷婷五月天AV| 精品乱码久久久久| 日日噜人人人做人| 亚洲激情av| 亚洲色婷婷网站| 久草婷婷网 | 婷婷九九视频| 成人婷99最新| 99色在线视频观看| 日韩无码专区| 久热这里精品免费| 精品日本视频444| 99色看| 超碰京东热av男人的天堂| 五月天淫乱视频| 嫩草国产| 婷婷激情在线| 五月婷在线观看| 五月丁香啪啪啪| 情婷婷五月天| 五月久久婷婷天堂视频| 波多野结衣AV无码Porn| 天搞天天天天天| 99噜噜噜在线播放| 99热中文字幕久久| 九九99精品视频| 99热啪啪| 天天操屄网| 色丁香五月| 色情综合网| 婷婷,五月天,丁香,第一| 开心五月网| 麻豆五月丁香婷婷| 丁香激情五月少妇| 啪啪婷婷五月天激情| 天天日综合网射| 91人妻九色大屁股| 大婷婷色呦呦噜噜色呦呦噜噜| 思思热久久艹| 五月婷婷操操| 五月丁香影院| 99er6免费视频热播| 亚洲六月综合激情久久下卡| 亚洲99在线| 丁香五月视频在线观看| 91丨九色熟女丨首页| 99视频内射三四| 久久婷婷五月天蜜桃| 天天草人人摸| 婷婷久久欧美| 网站免费一站二站| 《蜘蛛女》梁铮1995| 久久欧洲久久| 五月婷婷黄色网址| 99ri视频在线播放| 久久人妻情侣| 日韩另类| 天色色综合网| site:xmssd.com| 婷婷中文综合网| 天天色色天天| XX色综合| 天天日夜夜夜操操操操| 欧美激情综合色综合啪啪五月| 综合AV网| 人人操AV| 欧美色色色色色色色| 大香蕉狠狠爱主页| 欧洲MV日韩MV国产| 色播五月婷婷| 亚洲最大激情无码| 天天cha成人综合网| 狠狠色丁香婷婷久久综合| 青青久久五月| 久久亚洲婷婷| 激情五月天网| 开心五月天激情| 激情5月舔| 色你久久| 99色在线免费观看视频| 五月开心播播网| 五月综合色| 我去色色网五雨天| 99热这里只有精品搜| 激情综合网,婷婷| 欧美日韩成人在线观看| 国产免费一区二区三州老师F1……| www.99久| 欧美天堂久久| 五月丁香影视| 久久小片| 思思w99| 五月色婷婷综合丁香精品无遮挡| 久久久人妻久久久| 久久色天堂| A级毛片高清免费不卡播放谢谢谢谢| 丁香五月婷婷社区| 久久这里只有精品视频15| 日本不卡一区二区三区| 99免费超碰在线| 操大屄五月天视频| 亚洲欧洲另类图片| 综合另类激情| 婷婷综合偷拍| 亚洲午夜一区二区| 婷婷丁香91| 9 99免费视频| 人妻综合网| 亭亭玉月丁香| 五月婷婷综合久久| 无码se| 五月婷婷,狠狠操| 色99视频| 日韩999| 色五月激情五月| 亚洲精品一区无码A片| 风流少妇A片一区二区蜜桃| 国精产品一区一区三区免费视频| 99re在线播放| www.zbzhongsen.com| 久久精品这里只有精品免费首页| 欧美一级色| 色婷婷99| 久久久久久久人妻| 青草视频在线播放| 色综合色香蕉网| 一区=区操屄高清大全av| 操逼综合网| 综合网天天| 久久婷婷丁香| 99在线观看| 久久精彩免费视频| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 免费播放99性爱视频| 久热这里只有精品99re,久热这里只有精品7| 人妻久久久久| 大香蕉综合网| 婷婷六月开心网| 亚州精品久久久久AV无码| 丁香五月激情在线| 激情五月婷婷| 日韩视频99| 色婷婷成人做爰A片免费看网站| 亚洲无码影音| 日韩在线一级| 激情五月天丁香| 欧美黑人巨大猛烈cuckold| 五月天另类图片| 另类小说色婷婷| 99热免费精品| 日韩AV免费电影在线播放| 日本在线wwww| www久久久| 五月天激情日色在线| 丁香五月婷婷五月| www.操.com| 夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂夂亚洲亚洲亚洲亚洲亚洲亚洲亚洲亚洲色 | 蜜臀av无码久久久久久久久| 六月丁香久久| 国产AV一区二区三区日韩| 日韩中出视频| 五月婷婷色影院| 婷婷五月丁香基| 久久激情五月婷婷| 99自拍视频| 91色性感五月婷婷丁香| 激情综合网激情五月天| 久久亚洲色导航| 激情五月色在线播放| 天天射综合网站| 亚洲欧美婷婷五月色综合| 四季8848精品成人免费网站| 久久精品系列| 五月情综合| 欧美影院| 强辱丰满人妻HD中文字幕| 五月激情婷婷国产精品久久久久久| 婷婷欧美偷拍综合| 亚洲热热视频| 国内一级片| 婷婷综合五月天| 丁香五月激情图片| 狠狠爱综合网| 色综合网页| 欧亚色色| 一本色道久久综合狠狠躁小说| 久久久久久久人妻| 夜夜久久综合网| 天天肏屄夜夜爽| 情婷婷五月天| 激情五月久久| 日本三级大片| 国产九月婷婷| 婷婷的99视频网站| 五月婷婷,六月丁香| 操日视频| 91亚洲免费片| 美英法精品无码免费视频| 国产67194| 久碰久| 性爱电影科技贸易有限公司| 色噜噜婷婷| 久久狼人天堂| 丁香五月激情图片| 四川BBB搡BBB搡多人乱亂| 色婷婷XXXXX| 欧美99热| 97色婷婷| 五月婷婷五月天| 亚洲欧洲国产精品| www91精品| 五月丁香婷婷激情图片| 亚洲区在线| 激情播丁香| 婷婷五月天视频免费在线观看| 性爱五月婷| 激情五月丁香综合网站| 亚洲日韩成人三级av| 91九色PORNY中文啦| 色情综合网| 一本狠婷婷综合| 五月婷婷激情久久| 香蕉五月婷婷| 五月丁香婷在线| 亞洲自怕|