久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

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

CLion+PlatformIO開發(fā)ESP32:從環(huán)境搭建到調(diào)試避坑完整指南

CLion+PlatformIO開發(fā)ESP32:從環(huán)境搭建到調(diào)試避坑完整指南 CLion 自己帶了 PlatformIO 插件這事情知道的人不少真正把它用好、把 ESP32 開發(fā)流程完整跑通的人并不多。如果你還在用 Arduino IDE 寫 ESP32或者一邊開著 VS Code 一邊抱怨代碼補(bǔ)全太弱那這篇文章值得看完。我會(huì)從環(huán)境搭建、工程結(jié)構(gòu)、編譯燒錄、調(diào)試排查一條龍講下來把我實(shí)際踩過的坑和驗(yàn)證過的配置直接擺出來你照著做就行。我自己用 CLion 做 ESP32 開發(fā)已經(jīng)有幾個(gè)月從最初的純命令行 ESP-IDF 裸寫到后來換成 PlatformIO再到把日常主力 IDE 固定在 CLion中間折騰了不少。最大的感受是CLion 對嵌入式開發(fā)的支持遠(yuǎn)比大多數(shù)人想象中成熟PlatformIO 插件也不是簡單套個(gè)殼而是真正把 CMake、工具鏈、燒錄器、串口監(jiān)視器全部整合進(jìn)了 IDE 的圖形界面里。這篇文章不聊虛的直接進(jìn)入實(shí)操。1. 為什么是 CLion PlatformIO工具選型和實(shí)際體驗(yàn)1.1 這個(gè)組合解決了什么痛點(diǎn)先說說這套方案到底解決了什么問題。你用 Arduino IDE 開發(fā) ESP32優(yōu)點(diǎn)是上手快但代碼量一上來就非常難受沒有跳轉(zhuǎn)定義、沒有全局重命名、沒有語法高亮補(bǔ)全更別說多文件項(xiàng)目的自動(dòng)索引。你用 VS Code PlatformIO功能其實(shí)也挺全但 VS Code 對大型 C/C 工程的處理能力不如 CLion 扎實(shí)尤其在頭文件解析、CMake 兼容和遠(yuǎn)程開發(fā)這些場景下差距明顯。CLion 本身就是 JetBrains 出品的 C/C IDE對 CMake 的支持是原生級別的。PlatformIO 在底層用 CMake 組織構(gòu)建流程兩者天然契合。CLion 自己帶的 PlatformIO 插件不是靠外部命令行模擬而是深度集成了pio命令、工具鏈、燒錄器和串口監(jiān)視器。你在 CLion 的 Run 配置里可以直接選 Upload、Monitor 或者 Upload and Monitor點(diǎn)一下按鈕就完成整個(gè)操作鏈全程不需要離開 IDE。我實(shí)測下來還有一個(gè)很實(shí)際的優(yōu)點(diǎn)CLion 的代碼索引比 VS Code 更快更準(zhǔn)。ESP32 的工程里一般會(huì)涉及到 ESP-IDF 的頭文件樹、FreeRTOS 的頭文件、SDK 配置宏這些東西加起來可能有幾千個(gè)頭文件。用 VS Code 打開這種工程經(jīng)常會(huì)出現(xiàn)頭文件找不到、宏定義無法展開的問題CLion 的索引機(jī)制會(huì)把整個(gè)工程樹理得更清楚誤報(bào)少得多。1.2 和 Arduino IDE、VS Code、純 ESP-IDF 的橫向?qū)Ρ群芏嗳思m結(jié)到底用哪套方案我認(rèn)為選擇標(biāo)準(zhǔn)其實(shí)很簡單看你的項(xiàng)目規(guī)模和調(diào)試需求。為了讓你看得清楚我直接做了一張對比表方案代碼補(bǔ)全能力多文件工程管理燒錄與監(jiān)視底層框架控制上手難度Arduino IDE很弱幾乎為零一鍵但功能簡單很弱極低VS Code PlatformIO較強(qiáng)較好一鍵 插件生態(tài)中等中等純命令行 ESP-IDF依賴外部編輯器不適用手動(dòng)輸入命令完全可控較高CLion PlatformIO很強(qiáng)優(yōu)秀深度集成完全可控中等偏高從表里可以看出CLion 組合最大的優(yōu)勢是既保留 PlatformIO 的方便性又獲得接近完整 ESP-IDF 開發(fā)流程的控制力。比如說sdkconfig文件怎么管理、自定義分區(qū)表怎么設(shè)置、FreeRTOS 內(nèi)核怎么裁剪這些在 Arduino IDE 里沒法細(xì)調(diào)的操作在 CLion 里可以直接改配置文件IDE 會(huì)自動(dòng)感知并重新加載。1.3 什么樣的人最適合這個(gè)方案說說適合誰。如果你正在做比較復(fù)雜的 ESP32 項(xiàng)目比如帶 WiFi BLE FreeRTOS 多任務(wù) 外接傳感器集群那么這個(gè)方案會(huì)讓你的開發(fā)效率提升一大截。如果你是有 C/C 基礎(chǔ)、但第一次接觸嵌入式開發(fā)CLion PlatformIO 也合適因?yàn)樗拇a提示能幫你少走很多頭文件路徑和類型聲明的彎路。如果你只是做個(gè) LED 閃爍或者簡單溫濕度讀取那就別折騰了Arduino IDE 五分鐘搞定沒必要為這種小項(xiàng)目上重型 IDE。這里我特別想強(qiáng)調(diào)一點(diǎn)PlatformIO 不等于 Arduino。它不僅能調(diào)用 Arduino 框架還能直接用 ESP-IDF 原生框架以及多種第三方 RTOS 和通信庫。在 CLion 里你完全可以創(chuàng)建基于 ESP-IDF 的 PlatformIO 工程然后獲得原生 SDK 的一切能力。很多人以為 PlatformIO 只是個(gè)庫管理器這是誤解。2. 環(huán)境搭建從安裝到第一個(gè)可編譯工程2.1 前置依賴和版本注意事項(xiàng)先說版本。CLion 建議用 2023.2 以上版本PlatformIO 插件在這之后集成度明顯更好。ESP32 的開發(fā)工具鏈方面PlatformIO 會(huì)自動(dòng)下載工具鏈、SDK 和編譯器你不需要手動(dòng)安裝 ESP-IDF這是它比純 IDF 流程省心的地方。不過在開始之前有幾個(gè)前置條件需要確認(rèn)Python 3.10 以上版本。PlatformIO 的內(nèi)部核心依賴 Python版本太舊會(huì)出各種奇怪報(bào)錯(cuò)。我在 Windows 上實(shí)測Python 3.8 環(huán)境下安裝 PlatformIO 插件后創(chuàng)建工程失敗升級到 3.11 就正常了。確保 CLion 里的 CMake、Toolchain 等設(shè)置項(xiàng)沒有被強(qiáng)制修改。PlatformIO 插件會(huì)接管構(gòu)建流程CLion 的默認(rèn)配置反而最穩(wěn)妥。如果你在 Linux 或 macOS 下開發(fā)建議先安裝 USB 串口驅(qū)動(dòng)。Windows 下大多數(shù) ESP32 開發(fā)板用的是 CH340 或 CP210x 芯片建議提前裝好驅(qū)動(dòng)否則后面燒錄會(huì)卡在端口識別環(huán)節(jié)。2.2 在 CLion 中安裝 PlatformIO 插件安裝過程很簡單。打開 CLion進(jìn)入Settings - Plugins在 Marketplace 搜索 PlatformIO for CLion點(diǎn)安裝重啟 IDE。裝完以后菜單欄上會(huì)出現(xiàn)一個(gè) PlatformIO 圖標(biāo)左側(cè)工具欄也會(huì)多出一個(gè) PlatformIO 面板。到這里插件就算裝好了不需要額外安裝命令行工具因?yàn)椴寮?huì)自己處理pio命令的路徑。這里我要多說一句在標(biāo)題里強(qiáng)調(diào)的“自帶的 PlatformIO”指的就是這個(gè)官方插件。它和你在 VS Code 里裝 PlatformIO 插件是同一套內(nèi)核但 CLion 版本在底層調(diào)用了自家的索引器來處理代碼導(dǎo)航所以整體體驗(yàn)更統(tǒng)一。2.3 創(chuàng)建工程用 PlatformIO 向?qū)н€是手工建目錄我的建議是第一次用的人直接通過 PlatformIO 面板創(chuàng)建工程不要自己手工建目錄再導(dǎo)入。原因是 PlatformIO 有固定的目錄結(jié)構(gòu)要求src、include、lib、platformio.ini通過向?qū)?chuàng)建能保證初始文件齊全。具體操作點(diǎn)擊左側(cè) PlatformIO 圖標(biāo)打開面板。選擇PIO Home - Open然后點(diǎn)擊New Project。項(xiàng)目名稱填好Board 選擇你的開發(fā)板型號。比如 ESP32 Dev Module對應(yīng)的 board ID 是esp32dev。Framework 選擇 Arduino 或 ESP-IDF根據(jù)自己的項(xiàng)目需求來。Location 填項(xiàng)目路徑。注意路徑里千萬不要有中文和空格PlatformIO 對這點(diǎn)要求很嚴(yán)格踩坑概率極高。創(chuàng)建完成后CLion 會(huì)自動(dòng)加載平臺和工具鏈?zhǔn)状螘?huì)比較慢因?yàn)橐螺d編譯器、平臺包等這取決于你的網(wǎng)絡(luò)狀況。有耐心的等完就好不用中斷。2.4 首次索引的等待時(shí)間和常見觀察工具鏈全部就緒后CLion 會(huì)開始對項(xiàng)目做代碼索引。ESP32 工程的索引時(shí)間通常在 20 秒到 5 分鐘不等取決于工程復(fù)雜度。這里有個(gè)經(jīng)驗(yàn)不要在這時(shí)候手動(dòng)去改platformio.ini或刷新 CMake否則會(huì)觸發(fā)重復(fù)索引浪費(fèi)大量時(shí)間。索引完成后你會(huì)注意到 CLion 的代碼高亮和補(bǔ)全明顯變得智能了。#include WiFi.h這種頭文件不再報(bào)紅Serial.begin(115200)也能正確跳轉(zhuǎn)到定義。如果你發(fā)現(xiàn)還是有很多紅色波浪線多半是 PlatformIO 插件沒有正確識別板級 SDK可以檢查一下當(dāng)前工程的 PlatformIO 環(huán)境是否已被 CLion 的 CMake 同步。具體在Settings - Build, Execution, Deployment - CMake里看有沒有生成對應(yīng)的 Profile一般會(huì)有類似PlatformIO Debug這樣的配置項(xiàng)。2.5 把已有 ESP32 工程導(dǎo)入 CLion如果你已經(jīng)有一個(gè)現(xiàn)成的 PlatformIO 工程目錄不需要重新創(chuàng)建。直接在 CLion 里選擇File - Open找到目錄下的platformio.iniCLion 會(huì)識別出這是 PlatformIO 工程并自動(dòng)加載。這個(gè)過程中可能有短暫的文件系統(tǒng)掃描正?,F(xiàn)象。這里要特別注意如果工程里已經(jīng)存在sdkconfig文件CLion 加載時(shí)可能會(huì)有 CMAKE 緩存沖突。遇到這種情況把項(xiàng)目目錄下的build目錄或者是隱藏的.pio目錄刪除再重新加載即可。.pio目錄是 PlatformIO 的本地環(huán)境目錄刪了不會(huì)丟代碼只是需要重新編譯一次。3. 工程結(jié)構(gòu)、配置文件與實(shí)際開發(fā)要點(diǎn)3.1 platformio.ini 逐行拆解platformio.ini是整個(gè)工程的構(gòu)建總?cè)肟诶斫饬怂屠斫饬?PlatformIO 的模式。一個(gè)最基本的 ESP32 工程配置文件長這樣[env:esp32dev] platform espressif32 board esp32dev framework arduino monitor_speed 115200 upload_speed 460800其中platform指定平臺包board指定開發(fā)板定義framework決定用的是 Arduino 還是 ESP-IDFmonitor_speed是串口監(jiān)視器的波特率upload_speed是燒錄時(shí)的波特率。聽起來簡單但實(shí)際開發(fā)里這幾個(gè)參數(shù)有非常多講究。先說upload_speed。ESP32 默認(rèn)燒錄波特率是 460800但在某些開發(fā)板上如果 USB 轉(zhuǎn)串口的芯片質(zhì)量一般或者線材太長這個(gè)速度會(huì)出現(xiàn)燒錄失敗。我自己遇到過用劣質(zhì)數(shù)據(jù)線連接 ESP32 開發(fā)板460800 下 50% 概率燒錄中途報(bào)錯(cuò)把速度降到 115200 后一次通過。建議第一次拿到開發(fā)板或者換了一根新數(shù)據(jù)線時(shí)先 115200 燒錄一次確認(rèn)通路再考慮提速。再說monitor_speed。這個(gè)值必須和你程序里Serial.begin()的參數(shù)一致否則監(jiān)視器里輸出的是亂碼。很多新手在這上面翻車不是代碼寫錯(cuò)只是配置文件和程序不一致。3.2 多環(huán)境配置一套代碼編譯多種硬件PlatformIO 最強(qiáng)大的功能之一就是多環(huán)境配置。假設(shè)你的項(xiàng)目既支持 ESP32 開發(fā)板也要編譯一個(gè)基于 ESP32-S3 的版本。可以這樣寫[env:esp32dev] platform espressif32 board esp32dev framework arduino monitor_speed 115200 [env:esp32s3] platform espressif32 board esp32-s3-devkitc-1 framework arduino monitor_speed 115200 build_flags -DCUSTOM_BOARD_S31這樣在 CLion 里你就能看到兩個(gè) Run Configuration分別對應(yīng)兩種環(huán)境。編譯哪個(gè)就選哪個(gè)代碼里可以用#ifdef CUSTOM_BOARD_S3做條件編譯一套代碼維護(hù)多塊板子非常方便。我在實(shí)際項(xiàng)目中用過這種方案管理四塊不同的 ESP32 系列板子沒有出過問題。3.3 自定義分區(qū)表和 flash 大小ESP32 的 flash 分區(qū)默認(rèn)是 4MB如果你的程序比較大或者要用 OTA那默認(rèn)分區(qū)表就不夠用了。PlatformIO 里可以通過board_build.partitions來指定分區(qū)表文件。比如[env:esp32dev] platform espressif32 board esp32dev framework arduino board_build.partitions huge_app.csv board_build.flash_size 8MBhuge_app.csv需要放在工程的partitions目錄下內(nèi)容類似# Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x5000, otadata, data, ota, 0xe000, 0x2000, app0, app, ota_0, 0x10000, 0x400000, app1, app, ota_1, 0x410000, 0x400000, spiffs, data, spiffs, 0x810000, 0x7F0000,這里有一個(gè)很容易出問題的點(diǎn)分區(qū)表的偏移量和大小必須遵循 flash 扇區(qū)對齊規(guī)則ESP32 的扇區(qū)大小通常是 4KB所以所有地址都應(yīng)該是 0x1000 的整數(shù)倍。隨便寫一個(gè)不對齊的地址燒錄時(shí)不會(huì)報(bào)錯(cuò)但運(yùn)行起來會(huì)燒錄到錯(cuò)誤的位置導(dǎo)致程序無法啟動(dòng)。我建議直接參考官方默認(rèn)分區(qū)表改不要從零自己寫。3.4 lib 目錄和庫管理PlatformIO 的工程里lib目錄是存放項(xiàng)目私有庫的地方。PlatformIO 會(huì)自動(dòng)搜索這個(gè)目錄下的代碼并編譯鏈接到最終固件里。個(gè)人經(jīng)驗(yàn)是凡是復(fù)用可能性超過一次的代碼都放進(jìn)lib里而不是直接丟到src下。這樣后期維護(hù)、移植都很方便。此外 PlatformIO 也支持從platformio.ini里用lib_deps引入第三方庫lib_deps bblanchon/ArduinoJson knolleary/PubSubClient這里要注意版本兼容問題。比如某些庫的最新版本依賴 ESP32 的新的內(nèi)核 API如果你的 Arduino 框架版本太舊編譯時(shí)會(huì)報(bào)一堆 undefined reference。我建議在lib_deps里固定版本號用指定比如bblanchon/ArduinoJson6.21.3。CLion 的 PlatformIO 插件在加載庫后會(huì)自動(dòng)索引庫內(nèi)頭文件補(bǔ)全和跳轉(zhuǎn)都是可用的這比 Arduino IDE 里手動(dòng)管理庫要清爽太多。3.5 在 CLion 中寫代碼的體驗(yàn)設(shè)置用 CLion 寫 ESP32 代碼有幾個(gè)設(shè)置建議提前調(diào)好Settings - Editor - Inspections里把 Included file is not found 的報(bào)錯(cuò)等級從 Error 降為 Warning。雖然正常情況下 PlatformIO 插件能解析全部頭文件但偶爾網(wǎng)絡(luò)波動(dòng)或工具鏈未完全下載時(shí)誤報(bào)會(huì)影響心情。開啟Settings - Build, Execution, Deployment - CMake - Auto-reload。這樣修改了platformio.ini或者CMakeLists.txt后CLion 能自動(dòng)同步構(gòu)建定義。還有一個(gè)個(gè)人習(xí)慣我用 CLion 處理 ESP32 代碼時(shí)一定會(huì)打開自帶的 File Watcher 功能配合clang-format統(tǒng)一代碼風(fēng)格。畢竟 ESP32 工程通常都是多人協(xié)作或者自己長期維護(hù)代碼風(fēng)格的統(tǒng)一能省掉很多 review 成本。4. 編譯、燒錄與串口調(diào)試的完整實(shí)測流程4.1 編譯過程的底層邏輯和界面操作在 CLion 里點(diǎn)擊右上角的 Build 按鈕實(shí)際觸發(fā)的是pio run命令。CLion 的 PlatformIO 插件會(huì)在后臺把編譯輸出完整地捕獲到 IDE 的 Build 窗口里。你看到的輸出格式和命令行下運(yùn)行 PlatformIO 幾乎一模一樣包括每個(gè)編譯單元的編譯進(jìn)度和警告信息。首次編譯會(huì)比較慢動(dòng)輒幾分鐘因?yàn)樾枰烤幾g SDK 和第三方庫。第二次開始PlatformIO 會(huì)啟用增量編譯只編譯變動(dòng)的文件通常幾秒鐘到幾十秒就能完成。我在實(shí)際項(xiàng)目里優(yōu)化過編譯速度最重要的一條經(jīng)驗(yàn)是不要修改 SDK 相關(guān)的頭文件一旦觸發(fā)整個(gè)依賴樹都會(huì)重建。CLion 里還可以快速切換 Debug 和 Release 構(gòu)建類型。在platformio.ini里加build_type debug這樣編譯時(shí)帶-g調(diào)試參數(shù)固件體積變大但配合調(diào)試器可以打斷點(diǎn)。如果不加默認(rèn)是沒有優(yōu)化和調(diào)試信息的燒錄后只看到運(yùn)行現(xiàn)象無法單步調(diào)試。4.2 燒錄操作CLion 按鈕和命令行兩種方式燒錄在 CLion 里非常簡單。Run Configuration 選擇 ESP32 Dev Module Upload點(diǎn)擊 Run 按鈕插件會(huì)調(diào)用pio run -t upload完成燒錄。過程包括編譯、將固件寫入開發(fā)板指定地址、自動(dòng)復(fù)位芯片日志里會(huì)顯示燒錄進(jìn)度條。如果你覺得圖形界面不夠直接或者需要在自動(dòng)化腳本里完成燒錄CLion 里也可以直接打開 Terminal 窗口輸入命令pio run -t upload終端窗口在 CLion 里集成得非常好默認(rèn)會(huì)加載 PlatformIO 的環(huán)境變量不會(huì)有找不到pio命令的問題。我的習(xí)慣是第一次燒錄用圖形化按鈕驗(yàn)證整個(gè)鏈路沒問題后面重復(fù)燒錄直接用快捷鍵調(diào)用 Upload效率更高。4.3 串口監(jiān)視器的正確打開方式CLion 的 PlatformIO 插件提供了串口監(jiān)視器入口就在 Run Configuration 里的 Monitor 選項(xiàng)。點(diǎn)擊后插件會(huì)打開一個(gè)內(nèi)置的串口終端顯示開發(fā)板的串口輸出。需要注意的點(diǎn)串口監(jiān)視器打開后開發(fā)板會(huì)進(jìn)入復(fù)位狀態(tài)或開始運(yùn)行程序輸出會(huì)實(shí)時(shí)刷新到終端窗口。如果波特率設(shè)置不對會(huì)出現(xiàn)大量亂碼。重新設(shè)置monitor_speed后需要停止監(jiān)視器再重新打開才生效。在某些 Windows 系統(tǒng)上打開監(jiān)視器前需要關(guān)閉其他占用串口的程序否則會(huì)報(bào)出 port busy 錯(cuò)誤。我實(shí)際用下來的體驗(yàn)是CLion 的串口終端比 VS Code 終端更像一個(gè)“正經(jīng)終端”支持色彩輸出、時(shí)間戳還支持向上翻頁。對于 ESP32 這種經(jīng)常要打日志來排查問題的場景這個(gè)終端的表現(xiàn)足夠可靠。4.4 串口權(quán)限與驅(qū)動(dòng)的坑位Linux 和 macOS 下開發(fā) ESP32最常見的坑是串口權(quán)限不足。Linux 下需要把當(dāng)前用戶加入dialout組sudo usermod -a -G dialout $USER然后重新登錄否則燒錄時(shí)會(huì)報(bào)Permission denied或直接找不到端口。macOS 下一般不需要額外配置但部分山寨版 ESP32 開發(fā)板的 USB 芯片驅(qū)動(dòng)需要手動(dòng)安裝。在 Windows 下比較常見的問題是串口驅(qū)動(dòng)未安裝成功。設(shè)備管理器里如果看到帶感嘆號的 USB 設(shè)備多半是 CH340 驅(qū)動(dòng)沒裝好。手動(dòng)更新驅(qū)動(dòng)選中驅(qū)動(dòng)文件夾即可。也有部分板子用的是 CP2102 芯片驅(qū)動(dòng)同樣需要單獨(dú)安裝。4.5 一個(gè)完整燒錄日志的現(xiàn)場解析我挑一條典型的燒錄日志來給你拆解方便你知道每一步是在干什么。燒錄時(shí)輸出會(huì)包含這些內(nèi)容Processing esp32dev (platform: espressif32; board: esp32dev; framework: arduino) ------------------------------------------------------------------------------------------------- Verbose mode can be enabled via -v option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32dev.html PLATFORM: Espressif 32 6.3.2 HARDWARE: ESP32Dev 240MHz, 320KB RAM, 4MB Flash DEBUG: Current (cached) debug configuration: esp-prog第一段說明當(dāng)前的平臺和板卡定義加載情況如果這里出現(xiàn)了 unknow board 或者不認(rèn)識的 framework那么這個(gè)環(huán)境本身就有問題了。再看編譯和燒錄Compiling .pio/build/esp32dev/src/main.cpp.o Linking .pio/build/esp32dev/firmware.elf Building .pio/build/esp32dev/firmware.bin Writing Microcode to /dev/cu.usbserial-0001 Uploading firmware...最后一步Writing Microcode出現(xiàn)說明串口已經(jīng)被正確識別。如果你卡在Connecting...這一步大概率是板子沒有正確進(jìn)入下載模式。按住開發(fā)板上的 BOOT 鍵再短按 EN 鍵復(fù)位松開 BOOT 鍵基本都能進(jìn)入燒錄模式。市面上常見的 ESP32 Dev Module 基本都是這個(gè)操作。5. 調(diào)試、日志分析與無線燒錄的進(jìn)階技巧5.1 使用 Debug 模式進(jìn)行單步調(diào)試PlatformIO 支持通過 OpenOCD 和 JTAG 接口對 ESP32 進(jìn)行硬件調(diào)試。當(dāng)然這需要額外的調(diào)試器硬件比如常見的某款 USB 轉(zhuǎn) JTAG 調(diào)試器。在 CLion 里運(yùn)行配置可以選擇Debug插上調(diào)試器后CLion 會(huì)自動(dòng)連接并啟動(dòng)調(diào)試器界面。硬件調(diào)試的實(shí)際作用非常大。比如你懷疑一個(gè)全局變量被某個(gè)中斷意外改寫用斷點(diǎn)觀察變量值變化是最快的方式比到處打日志高效十倍。我自己在調(diào)試 WiFi 重連邏輯時(shí)就是靠硬件斷點(diǎn)直接定位到棧溢出這在純?nèi)罩灸J较潞茈y查出來。缺點(diǎn)也有需要額外硬件且對開發(fā)板連線有要求。對于大多數(shù) ESP32 入門項(xiàng)目來說日志調(diào)試已經(jīng)夠用。硬件調(diào)試建議留到排查內(nèi)存崩潰、棧溢出這一類疑難問題時(shí)再啟用。5.2 日志分級和調(diào)試輸出優(yōu)化ESP32 底層的 ESP-IDF 自帶一套日志系統(tǒng)在 Arduino 框架下可以通過log_e、log_w、log_i這幾個(gè)宏輸出分級日志。PlatformIO 默認(rèn)會(huì)把所有級別的日志都編譯進(jìn)固件建議在正式發(fā)布版本里關(guān)閉 Debug 級別的日志build_flags -DCORE_DEBUG_LEVEL3數(shù)值 3 代表只輸出 INFO 級別以上數(shù)字越小打印越少。生產(chǎn)環(huán)境一般設(shè)置為 1 或 2只保留 WARNING 和 ERROR。Debug 版本保持完整日志輸出方便排查問題。這個(gè)參數(shù)的調(diào)整在 CLion 的代碼解析中也會(huì)同步更新不會(huì)出現(xiàn)日志代碼被誤報(bào)為未使用的情況。5.3 無線燒錄OTA的集成經(jīng)驗(yàn)ESP32 支持 OTA 升級PlatformIO 也提供了相應(yīng)的上傳方式。如果你在開發(fā)室內(nèi)測試OTA 比串口燒錄方便得多——不用每次都插拔數(shù)據(jù)線。在platformio.ini里配置 OTA 信息[env:esp32dev_ota] platform espressif32 board esp32dev framework arduino upload_protocol espota upload_port 192.168.1.100 upload_flags --authpassword這樣在 CLion 的 Run Configuration 中選擇這個(gè)環(huán)境點(diǎn) Upload 就能直接通過 WiFi 燒錄。OTA 的底層原理是把新固件寫入 flash 的 OTA 分區(qū)所以分區(qū)表里必須有 OTA 分區(qū)否則會(huì)報(bào)錯(cuò)。另外OTA 燒錄對網(wǎng)絡(luò)穩(wěn)定性要求較高中途斷開會(huì)導(dǎo)致設(shè)備變磚務(wù)必保證開發(fā)板和電腦在同一局域網(wǎng)的信號良好區(qū)域。這里要提醒一個(gè)隱患OTA 失敗時(shí)ESP32 會(huì)自動(dòng)回退到上一個(gè)可用固件前提是分區(qū)表里配置了兩個(gè) app 分區(qū)。如果你只配置了一個(gè) app 分區(qū)OTA 失敗后只能重新用串口燒錄恢復(fù)。所以我建議所有需要 OTA 的工程都設(shè)置 app0 和 app1 兩個(gè)分區(qū)。5.4 內(nèi)存分析和棧溢出的預(yù)防性檢查ESP32 的內(nèi)存有 520KB SRAM聽起來不小但 WiFi、BLE 協(xié)議棧本身要吃不少內(nèi)存。在實(shí)際開發(fā)中內(nèi)存問題是最常見的崩潰原因。PlatformIO 編譯時(shí)會(huì)打印固件的內(nèi)存占用情況你可以觀察RAM: [ ] 55.2%這一行了解當(dāng)前固件占用多少內(nèi)存。如果接近 80% 以上就要考慮優(yōu)化策略了。優(yōu)先檢查是否有大數(shù)組直接分配在棧上比如uint8_t buffer[4096];這種寫法強(qiáng)烈建議改成static或者用malloc動(dòng)態(tài)分配。另一個(gè)常見問題是 FreeRTOS 任務(wù)棧大小設(shè)置過大或過小。過大浪費(fèi)內(nèi)存過小會(huì)導(dǎo)致棧溢出通常表現(xiàn)為隨機(jī)重啟或輸出Guru Meditation Error。出現(xiàn)這個(gè)錯(cuò)誤信息時(shí)把對應(yīng)任務(wù)的棧大小調(diào)大 200~400 字節(jié)再測試。5.5 使用 CLion 的靜態(tài)分析和代碼檢查CLion 自帶的 Inspection 功能在嵌入式開發(fā)中非常有用。它能檢查未使用的變量、潛在的空指針引用、錯(cuò)誤的類型轉(zhuǎn)換等問題。我每次寫完一段代碼都會(huì)先跑一遍 Inspect Code大部分低級錯(cuò)誤都能被提前發(fā)現(xiàn)。比較特別一點(diǎn)的是CLion 對 C11/C14 特性的支持非常全面你在 ESP32 工程里可以使用std::unique_ptr、std::function、Lambda 表達(dá)式等現(xiàn)代 C 語法編譯和補(bǔ)全都完美支持。比起 Arduino IDE 里寫老式 C 風(fēng)格代碼的體驗(yàn)CLion 是降維打擊。另外CLion 的Refactor - Rename全局重命名功能在嵌入式項(xiàng)目里也非常驚艷。當(dāng)你想把一個(gè)變量從temp改成temperature_celsius它會(huì)自動(dòng)檢查所有引用位置安全地完成重命名。這種功能在純命令行或簡易 IDE 中幾乎是不可能做到的。6. 常見問題速查與避坑手冊6.1 編譯階段的高頻報(bào)錯(cuò)與解決方案報(bào)錯(cuò)內(nèi)容根本原因解決方案fatal error: WiFi.h: No such file or directoryframework 選錯(cuò)或工具鏈未完整安裝確認(rèn)platformio.ini里framework arduino刪除.pio目錄重新構(gòu)建undefined reference to setup/loop入口函數(shù)缺失或文件名不在 src 下確保代碼文件在src目錄且包含setup()和loop()XTENSA compiler not found工具鏈下載不完整在 PlatformIO 面板執(zhí)行pio upgrade或重新安裝平臺包error: unknown type name uint8_t頭文件順序或缺失基礎(chǔ)頭文件文件開頭添加#include Arduino.h或#include stdint.hCMake Error: The current CMake cache is corruptedCLion 緩存與 PlatformIO 沖突刪除項(xiàng)目下的cmake-build-*目錄重新加載 CMake 項(xiàng)目這上面最值得說的是第一個(gè)WiFi.h not found。看起來是頭文件路徑問題實(shí)際很可能是因?yàn)槟阒坝?Arduino IDE 裝過不同版本的 ESP32 內(nèi)核PlatformIO 默認(rèn)下載了另一套獨(dú)立工具鏈。這兩套環(huán)境互不干擾但你如果在platformio.ini里指定了額外的 include 路徑指到了 Arduino IDE 的安裝目錄就會(huì)撞車。6.2 燒錄和串口階段的問題排查燒錄報(bào)錯(cuò)千奇百怪但萬變不離其宗。我把從實(shí)際經(jīng)驗(yàn)里提煉的高頻問題記錄如下燒錄時(shí)報(bào)Failed to connect to ESP32: Timed out...開發(fā)板沒進(jìn)入下載模式。按住 BOOT 再復(fù)位或者檢查數(shù)據(jù)線是否支持?jǐn)?shù)據(jù)傳輸。很多 USB 線只有電源線沒有數(shù)據(jù)線會(huì)直接導(dǎo)致板子有電但無法通信。燒錄時(shí)報(bào)Serial port busy串口被其他程序占用。最常見的是 Arduino IDE 的串口監(jiān)視器沒有關(guān)閉或者 VS Code 的 PlatformIO 插件也打開了同一個(gè)串口。把其他程序占用釋放即可。串口輸出全是亂碼monitor_speed和Serial.begin波特率不一致。統(tǒng)一改成 115200。有一點(diǎn)要注意ESP32 的 ROM 啟動(dòng)日志會(huì)在上電瞬間通過 74880 波特率輸出幾行亂碼然后恢復(fù)正常這是正常的不需要處理。打開串口后開發(fā)板重啟很多 ESP32 開發(fā)板使用 DTR/RTS 線自動(dòng)復(fù)位打開串口時(shí)會(huì)產(chǎn)生電平跳變導(dǎo)致芯片復(fù)位。在platformio.ini中關(guān)閉硬件流控即可monitor_rts 0 monitor_dtr 06.3 運(yùn)行期莫名其妙的復(fù)位問題程序燒錄成功但運(yùn)行不久就自動(dòng)重啟這種情況非??简?yàn)?zāi)托摹H罩纠锶绻蠫uru Meditation Error: Core 0 panic或者Backtrace信息那是內(nèi)存錯(cuò)誤導(dǎo)致的。常見的幾種原因和對應(yīng)排查方向現(xiàn)象可能原因排查方法隨機(jī)重啟日志顯示棧溢出FreeRTOS 任務(wù)棧太小把任務(wù)創(chuàng)建時(shí)的棧大小參數(shù)調(diào)大運(yùn)行幾分鐘后死機(jī)內(nèi)存泄漏檢查malloc后是否free或者用heap_caps_get_free_size()監(jiān)控可用內(nèi)存類似的代碼之前好現(xiàn)在不行flash 壽命或電源不穩(wěn)換數(shù)據(jù)線檢查電源模塊輸出能力一開 WiFi 就重啟WiFi 初始化內(nèi)存不足把初始化放在任務(wù)里并提高任務(wù)棧大小避免占用主循環(huán)棧我在做某個(gè)跨平臺智能家居項(xiàng)目的時(shí)候遇到過一種特別隱蔽的崩潰代碼在本地編譯運(yùn)行正常但客戶反饋每天隨機(jī)死機(jī)。最后通過 CLion 的硬件調(diào)試器和內(nèi)存斷點(diǎn)定位到是某個(gè)字符串拼接操作越界污染了相鄰堆內(nèi)存。這類問題如果不借助調(diào)試工具純靠打日志幾乎不可能排查。6.4 Windows 驅(qū)動(dòng)特殊問題Windows 用戶最容易碰到的一種情況是設(shè)備管理器里能看到 USB 設(shè)備但 CLion/PlatformIO 的串口列表里就是找不到。絕大多數(shù)是因?yàn)?USB 驅(qū)動(dòng)被系統(tǒng)自動(dòng)替換成了通用驅(qū)動(dòng)。解決方法是在設(shè)備管理器里手動(dòng)更新驅(qū)動(dòng)選擇“從計(jì)算機(jī)的設(shè)備驅(qū)動(dòng)程序列表中選擇”然后指向 CH340 或 CP210x 廠商驅(qū)動(dòng)。裝完以后重新插拔開發(fā)板串口就會(huì)正常出現(xiàn)。還有一個(gè)冷門問題老版本的 Windows 10 上某些 USB 轉(zhuǎn)串口芯片在睡眠喚醒后失效。出現(xiàn)這種情況把電腦重啟或者禁用再啟用設(shè)備即可。這不是開發(fā)工具的問題是操作系統(tǒng)和芯片驅(qū)動(dòng)的兼容性 Bug不用糾結(jié)。6.5 網(wǎng)絡(luò)波動(dòng)引起的 PlatformIO 環(huán)境問題PlatformIO 需要聯(lián)網(wǎng)下載工具鏈和第三方庫如果你的網(wǎng)絡(luò)經(jīng)常抖動(dòng)很容易出現(xiàn).pio目錄不完整的情況。典型表現(xiàn)在代碼沒有語法錯(cuò)誤編譯卻報(bào)出各種冗長的內(nèi)部錯(cuò)誤或者某個(gè)第三方庫找不到頭文件。此時(shí)不要反復(fù)試編譯了正確做法是刪除項(xiàng)目下的.pio目錄。打開 CLion 的 PlatformIO 面板執(zhí)行pio system prune清理所有緩存。重新打開工程讓 PlatformIO 重新下載和配置環(huán)境。這一套操作會(huì)花一些時(shí)間但能解決 80% 的環(huán)境詭異問題。我在公司同事的設(shè)備上做過多次這個(gè)流程屢試不爽。7. 用 CLion 做 ESP32 開發(fā)以來的幾點(diǎn)深刻體會(huì)7.1 為什么我會(huì)長期停留在這套組合用了幾個(gè)月后我已經(jīng)把日常主力開發(fā)環(huán)境徹底固定在了 CLion PlatformIO。不是因?yàn)樗亲羁岬姆桨付撬_實(shí)幫我省了最多的時(shí)間。做一個(gè)簡單對比以前用 Arduino IDE 改一個(gè)頭文件全量編譯可能要等半分鐘到一分鐘CLion 配合 PlatformIO 的增量編譯往往幾秒搞定。以前在 VS Code 里遇到那個(gè)區(qū)分大小寫的頭文件路徑解析問題偶爾會(huì)出現(xiàn)CLion 基本不犯這種錯(cuò)。還有日常開發(fā)的“心流”體驗(yàn)。CLion 的代碼提示不是死板的標(biāo)簽提示而是能結(jié)合上下文給出真正合理的推薦。你輸入WiFi.它會(huì)直接列出當(dāng)前版本的 WiFi 庫中存在的所有方法不用翻官方文檔。這種體驗(yàn)對開發(fā)效率的幫助非常明顯。7.2 我最受用的一個(gè)隱藏功能分享一個(gè)不一定寫在官方教程里的用法在 CLion 中按兩次 Shift打開全局搜索直接搜索platformio.ini里的變量名。比如你突然想看看代碼里哪些地方用到了UPLOAD_SPEED這個(gè)配置宏全局搜索可以跨文件定位包括 SDK 配置文件里的定義。這比單純用 grep 找要快得多。另一個(gè)隱藏功能是CLion 的 Run Configuration 支持對同一個(gè) Environment 設(shè)置多個(gè)啟動(dòng)項(xiàng)。我可以配置一個(gè) Upload 和一個(gè) Monitor 的啟動(dòng)項(xiàng)分別綁定不同的快捷鍵。這樣燒錄完按一下 Monitor 的快捷鍵就能快速看串口輸出不用每次點(diǎn)菜單。7.3 建議的下一步方向如果你已經(jīng)跑通了這套環(huán)境下一步可以嘗試把這些經(jīng)驗(yàn)整合到自己的項(xiàng)目工程化流程里。比如用腳本批量燒錄多塊開發(fā)板、在 CI 流程里調(diào)用pio run做自動(dòng)構(gòu)建、或者用 PlatformIO 的 Remote 功能配合 CLion 遠(yuǎn)程開發(fā)樹莓派上的邊緣節(jié)點(diǎn)。這個(gè)組合的天花板遠(yuǎn)比大多數(shù)人預(yù)期的高而你現(xiàn)在已經(jīng)站在了正確的起點(diǎn)上。關(guān)于 CLion PlatformIO 開發(fā) ESP32 的所有關(guān)鍵內(nèi)容到這里就分享完了。如果你在搭建過程中遇到其他問題最有效的解決路徑是先把platformio.ini和編譯日志完整看一遍90% 的問題都會(huì)在里面露出端倪。開發(fā)嵌入式項(xiàng)目本來就是不斷和設(shè)備、工具鏈斗智斗勇的過程穩(wěn)住心態(tài)一步步排查這套環(huán)境會(huì)成為你長期順手的伙伴。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
高清不卡视频| 99国产精品人妻人伦| 热的中文 热的有码 热的国产| 六月丁香久久| 久久久久亚洲Aⅴ无码| 综合欧美亚洲| 日韩欧美三级| 麻豆伊人网| 啊…啊…操我用力操我 | 欧美东京热精品A∨| 日韩91网站| 欧美91精彩| 欧美少妇大量自拍视频在线观看| 国产区性爱在线视频秋霞豆| 日韩美女操b| 欧美性爱精品七区| 天堂网亚洲区手机版| 国产97色在线| 日韩精品高清资源在线| 中文字幕在线观看第二页| 日本黄 R色 成 人网站| 再深点灬舒服灬太大了添视频 | 国产免a费看黄片在线| 欧美性性性| 日韩免费高清大片在线| 女人爽到高潮潮喷18禁网站 | 绑缚麻绳人妻寝取完整版| 91精品黄在线观看| 久久99人妖视频国产| a片偷拍视频| 久操精品| 看日韩黄片| 密乳视频在线| 日本韩高清无砖码22o| 思思热久久成人| 久久精品一区二区三区四区五区| 999久久久免费精品国产牛牛| 超碰色大香蕉| 欧美日韩制服| 欲香欲色综合天天伊人| 91宗合网| 欧美双插| 人人爱人人乐人人操| 国内三级自拍小视频在线观看| 欧美大片天天看| 秋霞Av理论一级在线| 五月天人妻综合| 白嫩国模丰满一二三区| 久久久国产亚洲精品系列| 天堂精品| 少妇极品熟妇人妻无码| 人妻 欧美亚洲| 精品一区二区久久| 热的中文 热的有码 热的国产| 欧美 亚洲 91| 蜜臀一二三区| A级在线视频| 国产黄片精品在线| 日本精品一区二区中文字幕| 久热婷婷| 97视频观看| 日韩天天综合| 国产在线能看的你懂的| 五月丁香激情四射| 国产主播福利| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 婷婷久月| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 久久综合日韩亚洲欧美| 素颜老阿姨乱情色| 国产久久久久久| 国产又黄又爽又刺激久久久久久| 99久久网站| 厕所偷拍在线| 夜夜高潮夜夜爽国产伦精品| AⅤ片水多多| 久久久久成人亚洲国产| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 精品少妇一区二区三区| 99久久99久久免费精品蜜臀| 亚洲欧洲偷拍一区| 日韩欧美~中文字| 中文?日韩?免费?精品| 手机在线A片| 综合久久中文字幕综合日韩精品| 色五月第四色| 日本色日夜干| 殴美大黄片| 日韩天堂av电影在线观看| 99精品丰满人妻无码| 欧美天天射| 天天躁日日躁xxxxx| 97人人干| 久久久久无码| 色婷婷99| 九九九精品色乱九九九| 五月天婷婷在线看| 久久精品欧美一区蜜桃| 97在线免费公开视频| 国产主播福利| 日韩精品第3页| 啊啊啊啊啊啊在线| 国产激情久久久| 91少妇通奸网站| 国产婷婷综合在线观看| 志村玲子视频一区二区| 91少妇高潮| 日韩综合成人免费视频| 99久久久er直播网址| 久热久一区二区三区| 素人伊尹大香蕉免费下载视频| 日韩成人私密一级精品av| 色婷婷成人| 欲女人妻性色av| 亚欧性爱无码| 天天综合网~91综合网| 午夜精品五区| 操淫穴亚洲五月丁香| 日韩精品一区二区高清| 白丝jkav| 中国乱伦一区二区| 黄久久| 日韩成人精品视频自拍| 欧洲性人爱视频| 美国aaaaa一级黄片| 操死我了嗯嗯嗯| 岛国福利在线精品播放| 爱爱动态试试看6 0秒| 亚州一区二区| 久久熟妇五十路一区| 国产综合日韩伦理| 亚洲中文字幕日产无码久久| 国产Aα| 91久久堂| 久久天堂婷婷网| 蜜臀99精品国产高清在线观看| 99热99在线| 超碰吊日色| 色情婷婷| 久久69精品久久久久久久| 欧美亚洲se91| 大香蕉av在线| 日韩91网站| 蜜臀99久久国产| 日韩激情电影中文字幕| 久久人人爽人人爽人人片Ⅴ| 精品久久在线区一区| 欧美国产成人在线| 色臀AV| 四虎国产精品永久地址入口| 欧美日韩91| 老师充足的奶水小说| 十八禁电影伊人网| 大乔未久88一区| 可免费观看的av毛片中日美韩| 亚洲牲交| 国产精品无码AV网站| 国产原创自拍| 后入日本1234| 黄片国产精品一区二区| 中文一区在线视频| 欧美亚洲丝袜人妻制服99| 久久伊人在线五区| 淫淫综合网| av天堂精品久久| 丁香激情五月| 嗯~啊~快点 死我视频免费看网站| 精品丰满熟妇人妻一区| 国产三级片在线观看| 性在久久久久久| 欧美国产日韩高清在线| 亚洲情色1区| 嗯~啊~轻一点 视频| 免费自拍三级综合| 少妇毛片久久| 999精品乱码| 欧美专区日本专区| 自拍视频大全亚洲专媒视频/一区二区三区| 国产中午字一暮区| 国产精品黄色三级av| 校园春色第一页| 青青草视频久久| 亚洲日韩XXX| 欧美不卡二区| 久色99999| 日本操逼视频不卡直接放| 日本三级大片| 人人妻人人澡人人爽人人精品浪潮| 日本操大逼| 日韩 欧美 校园一区| 欧美亚洲手机在线| 久久久久亚洲Aⅴ无码| 美女AV一区二区| 日韩一卡二卡三卡| 亚洲人妻中文高清| 少妇特黄一区二区三区| 97人妻免费中文字幕| 亚洲天堂自拍| 最新国内自拍av免费| 久久人妻四季| a片偷拍视频| 欧美少妇大量自拍视频在线观看| 中文字幕三四区| 志村玲子视频一区二区| 99热销国产这里有精品| 国产免费一区二区三区最新不卡| 国产精品久久久久婷婷二区次| 国产精品三级视频网站| 诱惑网综合| 久操黄色视频| 国产福利电影| 福利在线视频一区二区| 草莓精品视频| 上床啊啊啊| 69精品人人人人| 成人久久久| 熟女日韩| 欧美人与动性人交a| 欧美色天堂网在线视频| 91午夜无码| 亚洲天堂日本| 91在线欧色| 精品一区二区三区国产| 欧美少妇一区二区三区| 国产99精品一区二区三区免费| 欧亚不卡| 综合五月天| 久久 精品| 中文字幕精品人妻丝袜| 日韩人妻中文视频| 亚洲综合伊人无码久久| 欧色综合| 国语国产操逼伊人AV网| 亚洲天堂另类| 色哟哟-国产专区| 狠狠操官网| 亚洲男人天堂2| 一区二区激情国产熟女| 91在线页| 夜夜影视四色| 国产精品久久久啊| 国产又粗又长又大的视频| 97日本超碰综合| 欧美自拍偷拍综合图片| 欧美淫乱视频| 欧美人妻二区三区| 亚洲中文一区二区三区视频| 中文字幕国产在线天堂| 黄色工厂这里只有精品| 1二区9| 亚洲图片欧洲图片aⅴ| 可乐操亚洲蜜911| 韩国女主播青草在线| 九九黄色视频在线观看| 一级黄色性爱A级片| 久久综合女优| 热九九精品| 人人操人人摸avav| 另类图片五月天| 97干色天堂| 亚洲成人性爱在线观看| 国内亚洲高清无码| 欧美综合1性辶| 玖玖综合色| 能看的AV| 日本日皮视频逼| 久久性爱视频免费看| 午夜久久久| 欧美日本久久精品一区 | 噜噜噜亚洲精| 男人精品天堂一区| 91总综合网| 日本三级黄页| 婷婷丁香成人| 8050无码八戒| 亚洲aV无码成人在线观看| 亚洲无码超碰免费| 美女91网站| 视频二区美腿制服人妻欧美| 亚洲。天堂。日本在线观看| 色制服丝袜夫妻av一区| 国产91精品久久久久久久网曝门| 精品无人区麻豆乱码久久久| 青娱乐 成人娱乐在线| 99在线观看| 亚洲欧美激情在线视频| 五月丁香婷婷色| 无码精品蜜桃一区二区三区ww| 人人干黄色| 五十路熟女人妻一区二区三区四区五| 国产树林里野战在线看| 乱伦av.com| 乱伦图av| 亚洲成人日韩小说| 欧美经典一区二区三区| www.伪伪| 嫩草影院在线观看精品| 日韩一级片在线看| 国产久久久久久久久一区二区 | 亚洲丝袜综合| 亚洲情欲| 日本性感人妻91| 亚洲熟女乱色一区二区三区| 午夜操逼不卡| 中文字幕日本久久| 骚逼高潮久久精品| 久久精品国产97欧美精品亚洲 | 99热在线播放| A V少妇特黄三级| 亚洲天堂中文字幕无码男同| 97爱免费插| 久久人人妻| 蜜臀精品1区2区| 成人精品视频一区二区| 精品一国2| 欧美综合网站999| 密臀在线视频| 国产在线观看一区二区三区| 精品无码久久久久久国产浪潮| 91精品女厕偷拍视频| 乱欲一区二区| 亚洲精品丝袜-不卡成人免费……| www.狠狠干.coom | 蜜伊人色综合97| 亚洲自拍欧美国产首页网曝| 久久风骚城市人| 熟女人妻一区二区三区| 欧美色偷偷| 国产美女自拍AV| 黄片www.| 草伊人高潮喷水超碰| 中文久久96| 一二三区视频在线观看| 成人免费性爱视视| 大香网站| 国产精品对白内射| 色天堂在线观看| 992大香蕉| 白丝被操91| 国产欧美日韩精品中文| 欧美精品另类人妖xxxx| 亚洲天堂电影网| 偷拍盗拍亚洲色图图片| 亚洲成a人在线观看久| 五月婷婷综合在线| 精品人妻一二三四区视频| 色图四区| 亚洲图片婷婷五月天| 97综合国产精品高潮久久| 日韩丝袜高跟制服在线观看| 亚洲中亚日激情视频| 亚洲性刺激| 亚洲av国产av综合av卡| 999狠狠综合| a男人的天堂| 青青草依人大香蕉| 中文自拍欧美影视| 在线视频一区二区传媒| 久久岛国| 能看的AV| 丰满人妻一区二区三区四区| 久久夜黄色无码A级大片| 久7色| 欧美日韩天堂| 色在线综合| 欧美激情五月天| 久久9免费视频| 韩三级a视频在线观看| 色情成人五月天| 941超碰| 男女激烈网站最新| 欧美狠狠弄| 性色综合网| 99爱爱| 二级毛片| 亚洲制服欧美另类内射| 夜色97| 伊人久久大香线蕉无码| 日韩啪啪啪视频| 久久久性| 精品人妻一区二区免费蜜桃| 91老熟女视频| 色精品极品| 中文字幕欧美丝袜07资源| 91站街按摩店老熟女熟女| 超碰97导航| 可以在线观看AV的网站| 人妻少妇精品久久久| 香伊人在线| 久久精品72| 亚洲精品一区二区精华| 午夜天堂精品久久| 思思热免费在线视频| 国产精品。| 亚洲一区二区三区不卡国产欧美| 国产精品网站免费| 久操网无码在线| 日本男人插女人的逼黄色| 国产乱伦亚洲| 亚洲1区2区三区高清中文字幕| 国产免费一区二区三区最新不卡 | 91欧洲入口| 欧美黄片视频在线观看免费| 丁香五月电影| 精品成人av一区二区三区在线| 欧美色棕合| 无码人妻精品一区二区中文| 老熟女乱子伦中文字幕一区二区| 人人干黄色| 亚州大图综合色图| 免费看国产曰批40分钟怎么下载| 91激情综合| 色婷婷蜜臀av| 91欧美| 久久黄片国产一区二区| 国语国产操逼伊人AV网| 日韩人体偷拍| 丰满人妻一区二区中文| 久久久精品,3| 亚洲日韩精品久久久久一区壹牛| 日本操逼视频导航| 91蜜臀熟女| 狠狠夜色午夜久久综合在线| 99re在线视频这里只有精品| 一级毛片电影免费看| 亚洲av无码国产精品字幕| 九色精品视频导航1| 免费一级欧美片片线观看| 97精彩视频网站| 亚洲日韩东京热一区| 中国少妇啪啪视频| 亚洲天堂AV在线播放| 嗯嗯嗯好爽| 天天综合网~91综合网| 97av在线观看| 国产精品视频白浆免费| 日本天天人人狠狠在线日美女| 嗯嗯啊啊好大好爽| 东北少妇高潮zzzz| 密桃99999| 久久久久久免费电影| 私人尤物在线精品不卡| 大香蕉综合在线| 妇女视频网站| 999综合网| 影音先锋中文字幕日本好一区二区 | 亚洲成人美女无吗| 中文字幕乱码人妻一区二区三区,99精品 | 亚洲色图A| 欧美一级特黄淫片在线观看| 97人妻色| 国产麻豆91欧美一区二区久久婷婷国产精品 | 性色av一区二区| 久久 久久国内精品亚洲 | 偷拍欧美亚洲| 日韩中文字幕精品一区在线| 人人喜人人妻| 国产成年精品高清在线观看91| 97色色婷婷| 四虎在线播放| 91欧美丨精品丨入口| 啊嗯嗯啊好大好爽| 久久久久亚洲三级电影| 日本熟妇一区二区三区| 2003天天干夜夜操| 国产精品探花视频| 69久久久久久久久久久久久| 18禁精品网站在线看| 熟啊v色欧美热| 夜夜草天天| 韩国轻伦国内自拍一区| 人妻少妇久久中文字幕一区二区 麻豆| 欧美一级A片在线看视频性色| 97超碰人操| 亚洲AV无码AV吞精久久久久| 夜夜夜夜爽| caoni国产亚洲av| 色男人色天堂东京热| 91偷拍欧美亚洲| 96超碰网| 亚洲夜色在线| 欧美日韩97| 花野真衣| 欧美一区二区三区入口| 熟女高潮合集-永久久久-成人AV | 久久免费99精品久久久久久| 啊啊啊啊啊啊好湿好爽视频| 中文字幕在线免费观看2| 伊人97色天使| 日本色色色视频| 久久99久久99精品天美传媒棢·纸:. | 蜜臀久久99精品久久久久久久久| 啊啊啊免费视频| 任我爽视频在线观看| PMv在线观看| www.男人天堂| 9l视频自拍9l九色成人| 亚洲国产成人精品女人久久久| 欧美性天天影视| 偷拍三区| 中出91视频| 久操高青| 操逼视频亚洲| 午夜毛片亚洲精品片国产久久久| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 亚洲天堂中文字| 99re这里只有精品2| 日韩中字av一区| 日韩 欧美 视频 在线 一区| 久热这里只有精品9| 亚洲综合影视| 婷婷色婷婷| 婷婷五月色| 亚洲欧美综合| 亚洲怡春院| 人人插人人摸人人| 嫩草 我啊~嗯~在线| 久久老子无码午夜伦不卡| 啊啊啊啊啊啊啊啊视频| 少妇三P| 成人综合久久精品色婷婷| 在线日韩精品一区二区三区| nuu12国产麻豆精品| 精品福利视频| 91狠狠综合久久久久久| 精品国产丝袜一区二区三区乱码| 熟女少妇视频| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 在线观看日韩av不卡| 97色网| 大干人妻| 60秒免费小视频| 99中出在线| 日韩精品一区的| 狠狠中文字幕| 麻豆国产97在线| 亚洲高清欧美总合| 亚洲,欧美,综合网| 久久久成人精品| 熟女一区二区| 精品人人| 九九视品黄色| 欧美熟爽综合| www.91色综合| 人妻少妇久久久| www.人人cao| 夜夜嗨免费视频| 成人综合色网| Julia在线播放亚洲久久| 欧美久久伊人| 欧美性爱视频免费一区一A| 欧美激情性久久久久久| 久久久久亚洲熟妇熟女| 国产女大学生AV| 东北女人操逼| 久久六六| 天堂v无码免费视频| 亚州综合在线| 亚州综合网| 日本影视久久免费| 国产 日韩 欧美一区| 9久精品| 欧美翘臀视频网站一区二区三区| 欧美精品激情| 久草午夜| 亚洲黄色视频在线观看视频| 日韩精品一区二区高清| 久久天天艹| av在线观看不卡网站| 少妇啪啪自拍| 日本高清有码网址视频| 欧美精品偷拍| 9精品在线| 夜夜 中文视频rt| 久久久久久久9最新免费视频观看| 激情四射五月天| 少妇激情AV| 不卡视频一区蜜桃视频 | 欧美色www亚洲国产阿娇要播| 国产在线综合网| 热无码中文亚洲H一道本一区二区| 极品综合| 欧美网站免费| 九九热九九热| 好看的久久不射无码影视影院| 亚洲图片 激情小说| 伊人久久亚洲色欲综合网站 | 午夜啊啊啊| 男人天堂网手机版婷婷| 啊啊啊免费| 亚洲国产av中文字幕久久| 无色无码| 97AV爱| 97干综合网| 高清孕妇孕交 交| 日本精品中文字幕视频| 欧美亚洲日本激情在线| 91在线美女| 2017超碰| 91久久青青草原精品| 一区二区三区黄片免费观看| renqi久久久久久久久久久久| 精品十三区| 岛国天天午夜影院传媒网| 最新亚洲黄色免费电影| av一区二区三区 中文| 欧美人妻二区三区| 中出20p| 国产成人91一区二区三区| 国产剧情AV不卡在线观看| 91九久| 欧美性五月| 波多野结衣AV无码一区| 久久久A∨| 啊啊啊啊好疼视频| A级毛片在线看免费| 婷婷五月影院| 五月天人妻综合| 国产日韩精品无码去免费专区国产| 日本精品成人无码| 超碰久久精品| 人人贴人人摸| 色月天AV导航| 99999精品| 丁香五月性| 伊人午夜福利视频| 国产女人与拘做受视频免费| 亭亭丁香激情| 97日韩| 色墦五月丁香| 大香蕉草草| 国产成人精品日本亚洲语言 | 黄色视频特级毛片| 亚洲男人的天堂网| 色欲av一区二区三区蜜芽| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 国产av波波国产精品| 欧美在线色图| 欧美片第一页| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 色在线69堂| 日韩无码精品综合久久| 国产婷婷一区| 日韩免费高清大片在线| 嗯……啊…嗯嗯…啊…好舒服| 欧亚日韩中文在线| 色999人与兽| 欧美一级在线观看成人| 亚洲精品久久久久久久久豆丁网| 狠狠超| 久久手机视直播| 91人妻少妇| 亚射在线| 亚洲色图欧美色图日韩色图| 77国产精品| 嗯啊抽插大香蕉网页| 99爱爱| 探花激情视频| 欧美色网络| 啊啊啊啊视频免费| 中字幕人妻一区二区三区| 东北女人| 亚洲欧美在线观看2021| 夜夜精品视频一区二区| 99色色网| 蜜乳中文字幕a在线| 1二区9| 午夜福利免费福利视频| 超碰在线日韩一区| 伊人97超碰| 婷婷干黄色| 天欧美在线| 丁香六月啪啪| 26uuu最新| 日韩视频小说在线观看| 丁香五月天激情网站| 久久加勒比| 91中文精品日韩欧美在线| 国产精品女久久久久av爽| 97超碰公开| 久久的网站啊啊啊啊啊| Blackedraw视频一区二区| 九九热精品视频六| 欧美大香蕉97| 91free福利| 日韩性爱小视频| 五月天亚洲网| 91女网站| 熟女人妻一区二区三区| 激情五月天中文字幕色| 欧美在线视频观看一二三四区高清| 韩国一级婬片A片AAAAA| 翔田千里无码一区| 97在线公开视频| 另类av天堂| 大香蕉九九| 97在线视频观看网站| 99久草| 中亚黄色三级大片| 99热97| 亚洲第一在线视频| 蜜乳av一区二区| 91九色丨风韵犹存| 欧美综合777| 欧美九九99久久精品| 再深点灬舒服灬太大了好硬好爽| 尹人免费观看视频在线| 99久在线精品99re8蜜桃| 狠综合网| 91视频观看网站| 国产精品青草综合久久| 97在线观看播放视频| 91色色网站| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 操人妻逼91| 九色视频91| 伊人久久综合影院| 偷拍偷窥与盗摄视频专区| 亚春色色| 97欧美色综合| 亚洲男人的天堂在线看| 人妻在线臀日韩| 人妻少妇久久久| 国产精品老师| 热99这里只有精品| 天天天堂影视日韩亚洲91| 久久国产精品,久久国产| 九九九九久久久| 国产农村一一级特黄毛片| 萌白酱自拍视频| 亚洲av国产av综合av卡| 国产内射爽爽大片| 乱欲视频| 日本操逼无码| 超碰97欧美| 亚州91| 99re久久| 久久久一区二区三区四区五区| 日韩专区久久久| 天欧美在线| 色爽——AV| 色阁阁AV综合网| 射丝袜大香蕉| 免费男人的天堂| 青草精品视频一日本久久久久网站| 激情文学小说一区二区| 超碰久久.com| 嗯~啊~快点 死我视频免费看网站| 91亚洲不卡一区| 操死我干死我| 久久久久久性爱视频| 三级片大波波| 久久一二三四五六七八九区区| 九草在线大香蕉| 啊啊啊啊啊啊啊啊啊在线观看| 国产91专区| 啪啪啪男女亚洲中文字幕99| 欧美性性性| 色姑娘综合网| 高潮的A片激情扒开一区| 中文字幕一区二区在线日韩精品| 333kkkk·亚洲com久久| 立川理惠加勒比无码| 狠狠色色| 日日日啊啊啊| 中文久久96| 国产美女91| 欧美精品宗合| 精品人妻一区| 五月天偷拍| 黄色高清久久无码依人| 亚州欧美综合| 1240青青草一区二区三区视频天爱| 97超碰超碰| 多毛小伙内射老太婆| 亚洲欧美日韩夜夜| 天天操女人| 亚洲丝袜99| 超碰九7| 一类av片在线看| 思思热在线视频精品| www.一本大99| 久热网| 天天射天天操天天干天天吃2018| 加勒比久久综合网高清| 久久久久久亚洲精品不卡人乳| 精品国产一区二区三区久久久蜜臀 | 少妇三P| 精品一区二区三区18| 色哟哟AⅤ| 丁香啪啪| 1024手机看片欧美日韩| 999久久久九九九九| 综合五月婷婷亚洲一区| 九色 人妻 大香蕉| 91美女视频电影| 日本一区二区亚洲综合| 久久久国产三级黄色片| 91在线丝袜视频| 色图综合| 欧美性爱精品一区二区| 2017大香蕉国产精品久久| 国产精品久久久久婷婷二区次| 欧亚成人| 国产自产91区13区| 99re视频这里只有精品| 一级久久久久久久久久久| 刺激性视频黄页| 易易A毛视频| 女人午夜视频777| 屌妞视频久久久久久久久久久久| 91天天综合日韩欧美| 精品国产久热在线观看| 97bbn| 日韩精品一区二区高清| 色性荡荡荡荡视频| 中文字幕在线免费观看| 高清在线偷拍自拍视频| 激情黄色五月天| 白丝被操91| 日本一二区免费| 夜夜躁狠狠躁日日躁av| www.99视频| 91大香蕉伊人| WWW黄片COM| 美女诱惑一区| 走光一区92下载| 97色伦97色伦国产欧美| 91久久国产综合久久| 日逼97| 一区二区三区欧美激情| 久久是精品| 秋霞无码av鲁丝片一区| 97超视频在线观看| 小视频玖玖| 青青草色插素人| 二男一女成人A片| 精品无码人妻一区二区免费蜜桃| 亚洲性爱乱操x| 天天干天天日天天射黄色片| 伊人久久综合影院精品久久久| 嗯嗯啊啊操死我| 亚洲无码国产探花在线观看| 久久久久久久久九九久孕交| 久久久久久国产成人| 97超久碰| 亚洲精品无码成人久久久99| 高清不卡 中文 人妻| 国产精品一区二区 尿失禁| 屁股久久久久久久久| 免费看欧美美女黄色大片| 亚洲区小说| 精品色色| 日本阿v天堂在线观看| 麻豆乱码久久精| 欧美午夜视频免费观看| 91女优在线观看| 久久激情综合| 92一区二区| 精品国产91久久久久久一区黄无| 亚洲国产ⅴ高清在线观看| 91黑丝操| 狠狠操狠狠插| 超碰日本97美女人妻人人玩人人爱 | 啊啊啊啊啊啊在线| 亚洲一二三四区机械| 色色色色日本| 国产精选视频| 丝袜综合| 99re久久| 翔田千里爆乳巨臀无码| 久久超碰av在线| 无码又爽又硬又激情免费视频| 秋霞午夜成人福利片片| 伊人网在线视频| 丝袜美腿诱惑亚洲欧美视频在线观看| 一级片视频啪啪| 九九人妻| 中文字幕91综合| 蜜乳AV网址| 亚欧色图在线激情| 国产精品高朝久久久久久久| 色妹子A V| 无码国产精品久久久久| yiqicaoav| 国内一区二区三区| 嗯嗯啊啊亚欧精品| 五月婷婷激情综合| 少妇一区二区三区高速| 人妻欧美| 女上位精品在线| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 91丝袜人妻| 96免费视频在线| 另类欧美综合| 无码乱人伦中文视频| 天天色悠悠激情| 久久粉色| 国产欧美亚洲精品a第2页| 啊啊啊啊操死我了| 女沟厕偷窥piss小便| 99激情| 凹凸 69堂 在线播放| 免费簧片在线观看| 欧美 熟女 日韩| 97精品熟女少妇一区| 78p欧美| 亚洲无码太久| 久久久久ab| 人妻 中文 日韩| 熟女91网| 97在线精品| 五月亭亭六月丁香| 嗯嗯啊啊用力视频免费| 人人人摸人人| 久久99999| 国产亚州高清国产拍精| 传媒在线观看一区二区三区| 久久草大香蕉| 欧美性爱第一页久久| 久久亚洲天天做| 日本在线不卡v二区| 97在线免费观看| 日韩超碰精品综合| 十八禁视频网站| 免费AV中文网在线观看| 97日视频| 亚洲综合五月天婷婷丁香| 亚洲欧美成人网站AAA| 啊啊啊啊啊啊啊啊啊啊在线观看| 亚洲,日韩,欧美,成人播放| 日韩综合第八区国产精品| 人人天天欧洲| 操逼操操操91| 日韩欧美午夜一区二区| 国产97在线播放| av麻豆啪啪| 奸色色 男人天堂 天天射| 无码精品人妻一区二区三区妖精| 亚洲天堂男| 99热线麻豆| a片亚洲一本通视频| 国产性感骚丝袜在线| 六月丁香久久| 日韩女模中文造逼| 乱伦av麻豆| 日本东京热加勒比久久| 日本一区二区中文字幕久久| 中文字幕免费看| 欧美精品双插| 91黑丝少妇| 青娱乐导航AV| 国产欧美美女免费观看视频| 97精品久久久久久久| 一区二区亚州激情久婷婷欧美| 尤物AV免费网站| 国产欧美亚洲精品a第2页| 久久久久久久强迫| 97操| 曰韩中文人妻视频| 懂色av一区二区三区天美传媒| 欧亚日本情色| 色原狠狠天天天| 9丨久久九九九| 欧美色图 色综合图| 国产精品剧情| 1000部熟女视频在线观看| 3PAV乱伦视频| 伊人丁香五月婷婷| 亚洲av影院在线观看| 国产树林里野战在线看| 免费精品福利在线观看| 丁香六月婷婷综合| 极品粉嫩一区二区| 97超视频在线观看| av日韩中文字幕| 欧美日韩在线视频网站| 无码逼| 日本三级久| 亚洲熟女乱色一区二区三区久久久| 天天操天天看| 亚洲欧美日韩不卡人妻| 精品久久久久久中文字幕三区| 太久视频| 久久一二三级一一一| 欧美高潮| 欧美性爱第一页久久| 性爱av网站| 成人精品视频一区二区| 午夜操逼不卡| 欧美黄色大片在线观看| 婷婷色在线| 亚洲青青草| 婷婷五月天久久久| 九九综合久久| 中文字幕片| 欧成人精品H无码| 五月天综合在线| 日韩久草| 婷婷影院入口| 综合97亚洲| 亚洲 自拍偷拍 欧美| av婷婷色网| 一区二区乱码福利| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 老熟女区| 狠狠久久手机视频精品| 久久国产视频性吧| 丝袜 中出 制服 人妻 美腿 中文字幕| 国产精品干干干| 九九九九九九九九九五码| 吖在线不卡一区二区国产剧情| 亚洲一二三精品久久网| 老熟女乱伦一区| 熟妇高潮精品一区二区三区下载| 国产精品日韩在线一区| 91天美传媒精品| 久久社区一区二区三区| 久久久久久久六六| 婷婷久久五月| 中欧人妻丝袜中文字幕| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 九九九久久久W精品| 欧美午夜精品久久久久久3D| 日本欧美不卡| 女人的天堂大香蕉网| 艹比视频国产精品| 九九九999久久久网站| 大香蕉伊人网WWWn0n| 人人看欧美性爱| 99re黄| 青青草日本中文字幕 | 九九av| 午夜激情床戏激情| 操逼操逼视频操逼| 2020中文在线一区二区三区| 欧美日韩岛国大片在线观看| 九九碰九九爱97| 性感美女91影视| 久久久九九网站| 久久久久久久人妻丝袜| 骚熟女吞| 暖暖精品二区三区观看| 粉嫩不卡一区二区性爱| 亚洲无码超碰免费| 欧美色亚洲色| 夜夜 中文视频rt| 精品无人区麻豆乱码久久久| 国产AV高清AV无码| 国产欧美日韩一区二区三区| 9丨久久九九九| 欧美丝袜美女电影一二三四区| 99热99re超碰精品| 九九内射在线| 一起草AV| 亚洲精品日日夜夜52| 伊人五月天激情| 亚洲囯产精品女人久久久| 免费观看性欧美一级| 国产偷人伦激情在线观看| 久久激情婷婷| 97国产超碰| 大学生美女口爆| 七月丁香婷婷| 人人弄人人摸| 久久超碰国产一区二区三区| 狠狠久久手机视频精品| 欧美国产精品久久九九| dy888午夜老子影视达达兔| 日少妇视频| 亚洲日本激情| 蜜乳性色无码专日粉嫩骚逼AV| 尤物国产一区在线观看| 立川理惠加勒比无码| 97人人超| 欧美97在线观看| 国产一区二区三区,在线观看观看| 亚洲资源网| 国产sv美女内射| 高清无码久操视频| 北约熟女超碰| 开心五月婷婷| 亚洲视频,小说| 国产精品久久久午夜夜伦鲁鲁| 国产精品另类| 免费少妇一区二区| 毛片电影一区二区三区| 欧美激情 日韩精品| av草草在线电影| 亚洲 欧美 日韩 国产一区二区| 这里都是精品| 99re9在线| 日韩av情韩国爱禁区av一区二区| 欧美综合色| 思思热久久成人| 国产精品久久久久绯色| 91大香蕉伊人| 强奸乱伦AV网址| 91逼逼女人91| 日韩操逼性鲍| 五月天激情四射| 97超视频在线观看| 日日干天天干夜夜爽| 亚洲精品视频在线播放| 韩日精品福利视频一区不卡在线免| 九九九九AV| 九九黄色网| 亚洲精品久久久久久| 人人看欧美性爱| 色九九九综合| 久久久久久亚洲Av无码| 91在线美女| 波多野结衣之双飞调教在线播放 | 91天堂色男人的天堂| 91精品久久久久久77777| 97在线精品观看视频| 青青草白白色| 欧美性生活免费网| 国产精品丝袜久久亚洲不卡| 中文字幕美女91| 91久久久视| 日本精品无码三级网站| 欧洲一区二区三区四区在线观看| 秋霞久久亚洲精品成人| 久久久久久久六六| 欧美性爱在线无码| 91欧美亚洲| 97超级欧美| 色播综合| 97在线观看| 欧美偷偷网| 岛国AB视频| 日韩欧视频| 韩国轻伦国内自拍一区| 青青久久手机线视频| 97久久久久久久久久| 国产精品久久久亚洲一区| 国产日逼视频| 大香蕉草草| 超碰久在线天天做| 蜜桃色色网站视频三区| 天天草夜夜草高潮片| 久久久久99999| 丝袜制服字幕在线| 你懂的在线观看区国产 | 97色涩| 一级日本牲交大片好爽在线看| 欧美大片一区二区三区 | 国产大片精久久久久久| 亚洲一级性爱视频免费看| 好吊色综合| 人妻丰满熟妇av无码区蜜桃| 日本午夜福利视频| 丁香五月激情网| 黄片www.| 看一级特黄a大一片| 精品一级毛片在线观看| 亚洲图片91| 欧美综合色| 综合五月天|