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

ARTICLE DETAIL

資訊詳情

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

ESP32上WebAssembly實戰(zhàn):.wasm為何不能當(dāng)應(yīng)用跑?

ESP32上WebAssembly實戰(zhàn):.wasm為何不能當(dāng)應(yīng)用跑? 前幾天有個朋友找我聊 ESP32 上的 WebAssembly 方案開口就是一句“我邏輯用 Rust 編成 .wasm 了是不是可以直接燒進去當(dāng)應(yīng)用跑”我愣了一下然后意識到這不是他一個人的困惑。最近各種技術(shù)社群里“把應(yīng)用編譯成 wasm 塞進 ESP32”的說法越來越多但很多人其實還沒完全理清 .wasm 文件到底屬于哪個層級的東西。這個標(biāo)題問得很到位為什么一個 .wasm 文件還不能算真正的 ESP32 應(yīng)用答案并不復(fù)雜但背后的整套工程思路值得展開聊一聊。先說結(jié)論.wasm 文件只是字節(jié)碼它在 ESP32 上的角色類似“插件數(shù)據(jù)”而不是“可執(zhí)行固件”。要讓它真正跑起來你至少需要一個駐留在設(shè)備里的運行時比如 wasm3 或 WAMR還要有一整套宿主固件去給它提供 GPIO、UART、I2C 這些外設(shè)能力。換句話說真正算 ESP32 應(yīng)用的是那個“裝得下 Wasm 并幫它干活”的宿主程序.wasm 更像是被宿主加載的一塊可更新業(yè)務(wù)邏輯。1. 先把一個矛盾點擺清楚.wasm 是字節(jié)碼不是可執(zhí)行程序1.1 字節(jié)碼和機器碼之間隔著一位“翻譯官”WebAssembly 最初是為瀏覽器設(shè)計的設(shè)計目標(biāo)就是體積小、加載快、可移植。它定義了一套虛擬指令集這套指令跟具體的 CPU 架構(gòu)無關(guān)。也正是因為“無關(guān)”同一個 .wasm 模塊才能既跑在 x86 服務(wù)器上又跑在 ARM 嵌入式板卡上理論上也能跑在 ESP32 的 Xtensa 或 RISC-V 核心上。但這個“跑”是有前提的必須有一個運行時負責(zé)解釋或者即時編譯這些字節(jié)碼。芯片上電后直接執(zhí)行的是二進制機器指令不是 .wasm 的字節(jié)碼。ESP32 經(jīng)典款用的是 Xtensa LX6 雙核ESP32-S3 是 Xtensa LX7ESP32-C3 則是 RISC-V RV32IMC。它們各自只認自己的指令集.wasm 文件里那些i32.add、call_indirect指令芯片根本不知道是什么。我習(xí)慣把 .wasm 比作“一份菜譜”而不是“菜”。菜譜里寫清楚了需要哪些食材、每個步驟怎么做但你拿著菜譜直接啃是吃不飽的你得先有一個會照著菜譜執(zhí)行的廚師。在 ESP32 上這個廚師就是運行時解釋器。沒有廚師菜譜只是一張寫滿字的紙放到設(shè)備里.wasm 只是一段躺在 flash 里的數(shù)據(jù)。1.2 Wasm 只能活在宿主環(huán)境里它自己干不了硬件的活還有一個被很多人忽略的約束WebAssembly 規(guī)范刻意沒有提供任何操作系統(tǒng)或硬件訪問能力。它不直接操作 GPIO不直接讀寫 I2C 總線連往串口吐一個字節(jié)都得靠外部函數(shù)。Wasm 模塊運行之前需要從宿主環(huán)境“導(dǎo)入”一批函數(shù)然后通過這些導(dǎo)入函數(shù)間接使用硬件資源??梢赃@樣理解.wasm 相當(dāng)于一個搬到新城市的人生活里的一切都要依賴外部服務(wù)——水電煤、外賣快遞都得別人上門。對應(yīng)到 WASM 里這個“別人”就是宿主固件里用 C/C 實現(xiàn)的導(dǎo)入函數(shù)。你在 Rust 側(cè)寫extern C { fn gpio_write(pin: i32, level: i32); }編譯器生成的是一個“對宿主的調(diào)用請求”而不是真正的寫寄存器操作。最終把電平推到引腳上的是宿主固件里那個注冊過的原生函數(shù)。所以一個孤立 .wasm 文件連“程序”都算不上沒有宿主、沒有導(dǎo)入函數(shù)實現(xiàn)它根本沒法執(zhí)行哪怕最簡單的邏輯。這就像你把一堆 Python 字節(jié)碼扔進一個沒裝 Python 的設(shè)備它不可能跑起來。2. ESP32 真正能跑的東西長什么樣和 .wasm 差在哪2.1 一份正經(jīng)的 ESP32 固件里面至少有這些東西我查過不少開發(fā)者的困惑他們把.wasm直接拖進 Flash Download Tool 燒錄然后問我為什么設(shè)備起不來。這里的問題不在于燒錄工具不對而在于對 ESP32 啟動鏈路理解有偏差。一顆 ESP32 芯片上電后它的 ROM bootloader 會先去 flash 的固定偏移位置加載二級引導(dǎo)程序然后由二級引導(dǎo)程序加載應(yīng)用鏡像。整個啟動鏈路上需要的東西大概有三樣bootloader.bin負責(zé)初始化內(nèi)存、校驗分區(qū)表并引導(dǎo)應(yīng)用默認燒在 0x1000 偏移。partition-table.bin定義 flash 里有哪些分區(qū)應(yīng)用、OTA、SPIFFS、NVS 等默認燒在 0x8000。app.bin真正的應(yīng)用二進制默認從 0x10000 開始。這些 .bin 文件是從 ELF 可執(zhí)行文件轉(zhuǎn)換出來的里面每一段都是 ESP32 能直接執(zhí)行的機器碼。你使用idf.py build、PlatformIO 或 Arduino ESP32 工具鏈交叉編譯 C/C 代碼得到的是一個project.elf再通過esptool.py elf2image轉(zhuǎn)成可燒錄的 bin。這個過程和 .wasm 完全沒有交集。如果你想用 Arduino IDE 搭建環(huán)境或者用 ESP-IDF 管理開發(fā)環(huán)境網(wǎng)上大量資料提到的國內(nèi)鏡像源、離線安裝包、工具鏈下載本質(zhì)上都是在幫你湊齊這套原生編譯工具鏈。它們的目標(biāo)產(chǎn)物只有一個——機器碼固件不是 WebAssembly。2.2 沒有運行時.wasm 燒進 flash 也只是一趴數(shù)據(jù)有人會反駁我把 .wasm 放到 SPIFFS 文件系統(tǒng)里應(yīng)用代碼再去讀它這不就有用了嗎對這個思路是對的但請注意這時候你的 ESP32 應(yīng)用是那個“讀 .wasm 并執(zhí)行它的宿主程序”而 .wasm 本身依然只是數(shù)據(jù)文件。舉個例子你可以在分區(qū)表里配置一個 SPIFFS 分區(qū)然后用idf.py spiffsgen.py或 PlatformIO 的uploadfs命令把 .wasm 文件打包進文件系統(tǒng)鏡像一起燒錄。上電后你的原生固件啟動打開 SPIFFS讀取這個 .wasm 文件解析字節(jié)碼然后通過運行時逐條解釋執(zhí)行。如果斷電后把 .wasm 從 SPIFFS 里刪掉固件照常運行只是少了一個“業(yè)務(wù)插件”。反過來如果你把一個 .wasm 文件單獨燒到 0x10000 位置也就是 app 分區(qū)ESP32 的引導(dǎo)程序會把它當(dāng)作一個有效應(yīng)用來加載然后大概率直接崩潰或卡在啟動日志里。因為那根本不是機器碼CPU 拿去執(zhí)行必然產(chǎn)生非法指令異常。2.3 內(nèi)存和性能這兩個現(xiàn)實問題先把期望值拉平就算你給 ESP32 配好了運行時也得對性能有個理性的預(yù)期。經(jīng)典 ESP32 的片上 SRAM 大約 520KB實際可用的堆內(nèi)存通常 300KB 上下ESP32-C3 是 400KB SRAM。wasm 運行時本身要占掉一塊不小的空間wasm3 解釋器在裁剪后大約 50KB 左右的 codeWAMR 解釋模式帶完整功能可能要 100KB 以上。你內(nèi)存里同時要放被加載的 wasm 模塊實例、導(dǎo)入函數(shù)的參數(shù)棧每個函數(shù)調(diào)用都有獨立的 runtime stack再疊加上 Wi-Fi/藍牙協(xié)議棧的消耗可用內(nèi)存會非常緊張。性能方面純解釋執(zhí)行 .wasm 通常會比原生 C 編譯的機器碼慢 5 到 20 倍。這個倍率差異在計算密集場景下非常直觀我在 ESP32 上用原生 C 跑一個斐波那契(30)大概幾十毫秒同一個函數(shù)編譯成 wasm 再用 wasm3 解釋可以跑到數(shù)百毫秒甚至秒級。原因很簡單每條字節(jié)碼都要經(jīng)過解釋器主循環(huán)取出、解碼、分發(fā)到對應(yīng)執(zhí)行邏輯這比 CPU 直接執(zhí)行一條機器指令要重得多。所以我的態(tài)度很明確不要指望 .wasm 在 ESP32 上帶來計算性能優(yōu)勢它的價值在于部署靈活和隔離安全而不是速度。這一點想不清楚后面做出來的工程很容易翻車。3. 把一個 .wasm 變成 ESP32 應(yīng)用需要搭起整條工程鏈3.1 邊界別搞反宿主固件才是應(yīng)用.wasm 只是插件我見過不少初學(xué)者方案喜歡把業(yè)務(wù)邏輯全寫進 wasm然后宿主編得很薄只留一個加載器。這種思路在 PC 端服務(wù)器上可能還行但在 ESP32 上會碰得頭破血流。為什么因為設(shè)備上真正復(fù)雜、占資源、和硬件強相關(guān)的工作——Wi-Fi 連接、MQTT 長連接、外設(shè)驅(qū)動、低功耗電源管理——這些全都不適合塞進 wasm。正確的分層是這樣宿主固件負責(zé)所有硬件相關(guān)、穩(wěn)定不常變的功能.wasm 負責(zé)那些需要隨時調(diào)整、邏輯相對獨立、又不需要高頻計算的部分。比如一個傳感器網(wǎng)關(guān)采集頻率、上報閾值、告警規(guī)則這類業(yè)務(wù)參數(shù)可以做成 wasm 規(guī)則腳本下發(fā)而 I2C 讀取、Wi-Fi 重連、MQTT 心跳這些底層機制留在原生代碼里。打個比方宿主固件是公司的正式員工熟練掌握所有內(nèi)部系統(tǒng).wasm 是外包來的臨時顧問他只會在特定接口上提建議把建議翻譯成行動的還是那位正式員工。讓臨時顧問去動公司核心數(shù)據(jù)庫那是災(zāi)難。3.2 加載 .wasm 的核心流程運行時初始化、模塊注冊、導(dǎo)入函數(shù)綁定把 .wasm 加載進 ESP32 的典型流程可以拆成五個環(huán)節(jié)選擇運行時引擎常用的是 wasm3輕量解釋器和 WAMRIntel 出品的 WebAssembly Micro Runtime。選好之后把它作為組件加入 ESP-IDF 工程或者用 PlatformIO 的 lib 依賴方式引入。初始化運行時環(huán)境創(chuàng)建解釋器環(huán)境對象、配置棧大小和內(nèi)存限制。注冊導(dǎo)入函數(shù)把你要暴露給 Wasm 的原生能力比如gpio_write、uart_send綁定到模塊命名空間里。這一步最容易出錯函數(shù)簽名必須嚴(yán)格匹配。加載并實例化模塊從文件系統(tǒng)或 OTA 分區(qū)拿到 .wasm 的字節(jié)數(shù)組交給運行時解析生成模塊實例。調(diào)用入口函數(shù)通過函數(shù)名找到執(zhí)行入口比如_start或app_main傳入?yún)?shù)并讀取返回值。這套流程聽起來不復(fù)雜但實際工程里坑很多。尤其第 3 步WebAssembly 是強類型且要求函數(shù)簽名精確匹配的你在宿主側(cè)注冊v(ii)而 wasm 側(cè)導(dǎo)出的函數(shù)接收(i64, i64)鏈接直接失敗。為了少踩坑建議把所有導(dǎo)入函數(shù)收斂到一套統(tǒng)一的接口用結(jié)構(gòu)體或者std::variant做參數(shù)傳遞而不是每加一個函數(shù)就手搓一份綁定代碼。3.3 實操代碼wasm3 ESP-IDF 跑起一個 WASM 函數(shù)我以 wasm3 為例給一個最小可用的骨架代碼。先把 wasm3 作為 ESP-IDF 組件放進components/wasm3然后在main.c里這樣寫#include wasm3.h #include m3_env.h // 導(dǎo)入函數(shù)讓 wasm 側(cè)通過它點亮 LED static void m3_gpio_write(int32_t pin, int32_t level) { gpio_set_level(pin, level); } // 注冊導(dǎo)入函數(shù)簽名 v(ii) 表示返回 void兩個 i32 參數(shù) static void link_imports(IM3Module module) { m3_LinkRawFunction(module, env, gpio_write, v(ii), m3_gpio_write); } void app_main(void) { // 初始化 GPIO gpio_set_direction(GPIO_NUM_2, GPIO_MODE_OUTPUT); // 從 SPIFFS 讀取 wasm 文件 FILE *f fopen(/spiffs/app.wasm, rb); fseek(f, 0, SEEK_END); size_t size ftell(f); fseek(f, 0, SEEK_SET); uint8_t *wasm_bytes malloc(size); fread(wasm_bytes, 1, size, f); fclose(f); // 創(chuàng)建運行時環(huán)境 IM3Environment env m3_NewEnvironment(); IM3Runtime runtime m3_NewRuntime(env, 8 * 1024, NULL); IM3Module module; M3Result result m3_ParseModule(env, module, wasm_bytes, size); if (result) { ESP_LOGE(MAIN, parse failed: %s, result); return; } // 注冊導(dǎo)入函數(shù)并加載模塊 link_imports(module); result m3_LoadModule(runtime, module); if (result) { ESP_LOGE(MAIN, load failed: %s, result); return; } // 找到入口函數(shù)并調(diào)用 IM3Function func; result m3_FindFunction(func, runtime, blink_loop); if (result) { ESP_LOGE(MAIN, find function failed: %s, result); return; } m3_CallV(func, 2, 1); // 注意這里參數(shù)按 m3_CallV 的變參規(guī)則傳實際項目中建議用 m3_Call(argv) 顯式傳參 }對應(yīng)的 Rust 側(cè)代碼你可以用wasm32-unknown-unknowntarget 編譯extern C { fn gpio_write(pin: i32, level: i32); } #[no_mangle] pub extern C fn blink_loop(pin: i32, times: i32) { for _ in 0..times { unsafe { gpio_write(pin, 1); } // 簡單的忙等待實際工程里應(yīng)該調(diào)用 host 提供的延時函數(shù) for _ in 0..100000 {} unsafe { gpio_write(pin, 0); } for _ in 0..100000 {} } }編譯這段 Rust 代碼用cargo build --release --target wasm32-unknown-unknown拿到blink.wasm后放進 SPIFFS命名成app.wasm燒入設(shè)備即可。這是最經(jīng)典的“宿主調(diào)用 Wasm 控制 GPIO”的路徑你實際跑一遍就會明白真正讓燈亮起來的是 host 函數(shù).wasm 只是發(fā)號施令的“領(lǐng)導(dǎo)”。4. Wasm 在 ESP32 上的正確打開方式以及那些熱門場景怎么理解4.1 插件化把易變業(yè)務(wù)邏輯和穩(wěn)定固件徹底分離傳統(tǒng)嵌入式固件最大的痛點是業(yè)務(wù)需求一變整個固件要重新編譯、重新 OTA。OTA 本身不復(fù)雜但大規(guī)模設(shè)備群里頻繁做整包升級風(fēng)險很高——升級過程中斷、分區(qū)燒壞、回滾失敗每一樣都讓人頭疼。Wasm 插件化方案把“需求變更”的粒度從整機固件縮小到一個幾百 KB 甚至幾十 KB 的邏輯模塊。典型玩法是這樣的設(shè)備上跑一個穩(wěn)定的宿主固件連接云端管理平臺平臺下發(fā)新的 .wasm 文件到設(shè)備設(shè)備校驗后寫進文件系統(tǒng)或 OTA 分區(qū)然后熱加載運行。下一次業(yè)務(wù)規(guī)則調(diào)整只要重新下發(fā) .wasm 就行宿主固件完全不動。這套思路我在實際項目里驗證過對整個運維體系來說是質(zhì)的變化。以前改一條業(yè)務(wù)規(guī)則要排期升級現(xiàn)在平臺后臺一鍵下發(fā)十分鐘內(nèi)所有設(shè)備生效。4.2 沙箱隔離讓第三方邏輯崩潰也必須影響不到主系統(tǒng)原生 C 語言的插件機制最怕的就是內(nèi)存越界和野指針。第三方寫的業(yè)務(wù)模塊一旦崩了輕則設(shè)備重啟重則把主程序的堆棧寫壞。Wasm 的沙箱模型天然屏蔽了這類問題Wasm 模塊運行在線性內(nèi)存里所有內(nèi)存訪問都有邊界檢查模塊自身能訪問的只有打開接口暴露給它的那部分能力。換句話說即使下發(fā)的 .wasm 代碼里有惡意行為比如故意上越界寫運行時也會把這種訪問擋下來返回一個 trap 錯誤而不是真的把宿主的可控內(nèi)存搞壞。我自己的體會是Wasm 沙箱帶來的不是“絕對安全”而是“把風(fēng)險邊界畫清楚了”。你能集中精力在導(dǎo)入函數(shù)的參數(shù)校驗上而不是天天擔(dān)心內(nèi)存被誰寫壞。4.3 一次編寫多處運行的邊緣側(cè)復(fù)用還有一個很實際的價值Wasm 的跨平臺能力不只是在“理論上能用”它真的能讓業(yè)務(wù)邏輯從設(shè)備端和云端共用。我在邊緣網(wǎng)關(guān)的方案里同一套 .wasm 規(guī)則模塊既被設(shè)備內(nèi)置的 WAMR 加載又上傳到服務(wù)器用 Go 側(cè)的 wazero 虛擬機做預(yù)演測試。兩邊的行為完全一致因為跑的字節(jié)碼是同一份。這種“跨端復(fù)用”最直觀的場景是規(guī)則引擎。你在 PC 上調(diào)試好一套數(shù)據(jù)處理流水線編譯成 .wasm放到 ESP32 上它能跑放到樹莓派上它也能跑放到服務(wù)器上用 wasmtime 跑也行。只要宿主側(cè)把標(biāo)準(zhǔn)接口實現(xiàn)好讀取傳感器、發(fā)送結(jié)果、寫日志這份 .wasm 就是一行都不改的通用資產(chǎn)。4.4 從“街機模擬器”到“ROS2 小車”熱門玩法背后的共同規(guī)律最近看到不少熱門項目正好能印證上面這幾條規(guī)律這里簡單拆幾個wasm 街機模擬器核心模擬器邏輯編譯成 .wasm瀏覽器里那個 JS 引擎負責(zé)加載執(zhí)行顯示畫面和音效走前臺接口。放到 ESP32 場景玩法其實是相似的模擬器核心可以 Wasm 化但屏幕驅(qū)動、按鍵掃描、音頻輸出必須由宿主固件提供。懂了這個邊界你就能明白為什么“純 .wasm 模擬器”在 ESP32 上跑不起來——你缺一個把像素推到渲染器、把按鍵送進模塊的宿主。ROS2 humble 串口橋接 ESP32 小車ROS2 的正式協(xié)議棧非常重直接塞進 ESP32 不現(xiàn)實。常見的做法是 ESP32 上跑一個精簡的串口橋接固件小車主控板通過串口發(fā)指令ESP32 轉(zhuǎn)發(fā)到電機驅(qū)動。如果你想加入 Wasm 層適合放的是上層決策邏輯——比如巡線算法、避障規(guī)則——這些邏輯由 .wasm 提供、通過宿主橋接固件控制電機而不是讓 .wasm 直接操作串口寄存器。Go 集成 wasm 虛擬機這更多是后端側(cè)玩法。邊緣網(wǎng)關(guān)上用 Go 寫管理服務(wù)里面塞一個 wazero 或 wasmtime-go用來給不同設(shè)備下發(fā)、執(zhí)行不同的 .wasm 規(guī)則。這種做法和你直接在 ESP32 里跑 wasm3 并不沖突相反它正好構(gòu)成了“云端統(tǒng)一下發(fā)—設(shè)備端熱加載”的完整鏈路。設(shè)備端跑 wasm 的宿主是 C 固件云端跑 wasm 的宿主是 Go 進程但兩份字節(jié)碼的接口定義是同一套。你看這些熱門玩法本質(zhì)上都繞不開同一句話.wasm 負責(zé)“決策邏輯”宿主負責(zé)“物理世界”。誰把這句話理解透了誰就能在 ESP32 上把 Wasm 用出真正的價值。5. 我把 Wasm 跑上 ESP32 的時間線以及踩過的坑5.1 運行時選型wasm3 和 WAMR 怎么挑這是所有項目起步都會遇到的第一個選擇題。我直接把實測結(jié)論放出來維度wasm3WAMRWasm Micro Runtime體積解釋器約 50KB 起步非常緊湊完整模式普遍 100KB 以上可裁剪性能純解釋執(zhí)行偏慢支持 AOT 編譯和快速解釋性能更好功能基礎(chǔ) Wasm 指令集簡單直接支持 WASI、多線程、內(nèi)存64位、AOT 等豐富特性移植成本極低一個文件就能跑有完整構(gòu)建系統(tǒng)需要熟悉它的配置維護狀態(tài)項目長期穩(wěn)定變化少Intel 持續(xù)維護活躍度更高典型定位快速原型、內(nèi)存極小場景產(chǎn)品級、需要 AOT 或 WASI 的場景我的經(jīng)驗是純研究、驗證想法先上 wasm3半小時就能跑起來做產(chǎn)品、且對性能和功能有更高要求的直接上 WAMR它的 AOT 模式能把執(zhí)行速度拉到你更容易接受的范圍。ESP32 這種資源受限設(shè)備不要一上來就上滿臉國產(chǎn)化的 WasmEdge 之類的重運行時內(nèi)存吃不消。5.2 最小可復(fù)現(xiàn)工程從 Rust 編譯 wasm 到串口打印假設(shè)你已經(jīng)配置好 ESP-IDF 或 PlatformIO 環(huán)境下面這條鏈路是我驗證過最順的本地裝 Rust執(zhí)行rustup target add wasm32-unknown-unknown。建一個 Rust 庫工程寫一個導(dǎo)出函數(shù)add(a: i32, b: i32) - i32cargo build --release得到lib.wasm。ESP-IDF 工程里加 wasm3 組件寫一段加載代碼從 SPIFFS 讀lib.wasm并調(diào)用add。在宿主的add返回處加日志打印驗證傳入?yún)?shù)和返回值都正常。燒錄后觀察串口輸出如果能看到正確結(jié)果說明整條 Wasm 執(zhí)行鏈路是通的。我第一次做這個實驗時卡在了 SPIFFS 分區(qū)沒配置這件事上。分區(qū)表里沒有 spiffs 分區(qū)fopen(/spiffs/lib.wasm)直接返回 NULL加載失敗。后來在partitions.csv里加了一行spiffs, data, spiffs, 0x200000, 0x100000,然后用idf.py spiffsgen生成鏡像并燒錄才真正跑通。這個細節(jié)看似簡單但非常容易漏。5.3 驗證細節(jié)RAM、性能數(shù)據(jù)、看門狗這些容易被忽略的點第一個只測了add函數(shù)的工程跑通后我去做了更貼近真實的數(shù)據(jù)測試。寫了一段循環(huán)計算分別用原生 C 和 wasm3 執(zhí)行記錄串口日志的時間戳算出來的性能差距大概是 8 到 12 倍。RAM 方面wasm3 在 8KB 棧配置下加上模塊實例和導(dǎo)入函數(shù)棧額外占了大約 20KB 到 40KB。這個量級對經(jīng)典 ESP32 來說還能接受但對 ESP32-C3 這種小內(nèi)存設(shè)備就要提前做減法了。還有一個特別坑的細節(jié)——看門狗喂狗。解釋器在跑一段很長的 Wasm 循環(huán)時會長時間占用 CPU中斷里喂狗可能來不及導(dǎo)致系統(tǒng)看門狗觸發(fā)復(fù)位。我當(dāng)時跑一個“計算斐波那契(32)”的 Wasm 測試程序執(zhí)行幾秒后整個設(shè)備重啟串口日志停在半路。排查了半天才想到是任務(wù)里的while(1)太長了把喂狗任務(wù)餓死了。解決方式有兩種一種是在宿主側(cè)把 Wasm 調(diào)用拆成可中斷的多次調(diào)用另一種是在 Wasm 里提供yield導(dǎo)入函數(shù)每跑一段就交回控制權(quán)給喂狗任務(wù)。這類問題在原生 C 里基本不會碰到因為它足夠快幾毫秒就跑完了可換成解釋執(zhí)行的 Wasm事情就變得不一樣。如果你把 Wasm 用在時間敏感的應(yīng)用里一定得把這個“長任務(wù)回讓”機制設(shè)計好否則設(shè)備會以你完全想不到的方式反復(fù)重啟。6. 常見問題與排查技巧實錄現(xiàn)象可能原因排查與對策燒錄 .wasm 后設(shè)備起不來把 .wasm 當(dāng)成 app.bin 燒進了應(yīng)用分區(qū)確認燒錄的是 ELF 轉(zhuǎn)換后的機器碼 bin.wasm 應(yīng)該放入 SPIFFS 或自定義數(shù)據(jù)分區(qū)m3_ParseModule返回錯誤運行時版本太舊不支持新 Wasm 指令特性更新運行時組件或限制 Rust/LLVM 編譯時不用新特性加載模塊時報 unresolved 導(dǎo)入宿主注冊的導(dǎo)入函數(shù)簽名與 Wasm 聲明不一致用wasm-objdump查看導(dǎo)入函數(shù)簽名逐一核對參數(shù)類型和返回值設(shè)備跑一段時間后看門狗復(fù)位Wasm 長任務(wù)占用 CPU喂狗任務(wù)被餓死提供yield導(dǎo)入函數(shù)或把 Wasm 調(diào)用拆成小步執(zhí)行SPIFFS 里明明有文件卻讀不到分區(qū)表沒有配置 spiffs 分區(qū)或鏡像沒燒進正確偏移檢查partitions.csv用parttool.py查看實際分區(qū)布局調(diào)用 Wasm 函數(shù)后返回值異常變參傳遞的問題或 WASM 棧和宿主?;煊媒y(tǒng)一使用顯式傳參數(shù)組例如 wasm3 的m3_Call(argv)方式云端用 Go 加載 .wasm 規(guī)則但行為和設(shè)備端不一致兩端運行時版本或特性開關(guān)不同固定兩端運行時版本必要時使用同一份字節(jié)碼做對比測試想用 .wasm 做某個外設(shè)驅(qū)動方向上就不對Wasm 沒有直接訪問硬件的能力外設(shè)驅(qū)動留在宿主原生層Wasm 只做策略層邏輯還有一些我在實際項目里總結(jié)出來的避坑心得可能比表格更有用所有導(dǎo)入函數(shù)必須做參數(shù)校驗。.wasm 側(cè)代碼不可完全信任你可能從網(wǎng)絡(luò)上下發(fā)它惡意或 buggy 的模塊傳一個越界 pin 值宿主如果不去校驗直接操作寄存器輕則驅(qū)動異常重則燒壞外設(shè)。我的習(xí)慣是每個導(dǎo)入函數(shù)入口先做范圍檢查非法參數(shù)一律返回錯誤碼。浮點運算能不用就不用。wasm3 這類純粹解釋器對f32、f64指令的處理效率很低我在性能測試?yán)锟吹礁↑c運算比整數(shù)運算慢更多。能轉(zhuǎn)成定點數(shù)運算的先轉(zhuǎn)成定點數(shù)再說。WAT 格式是調(diào)試神兵。我在排查 Wasm 模塊行為時經(jīng)常用wasm2wat把字節(jié)碼轉(zhuǎn)回可讀文本逐行查看指令。很多“宿主演繹錯誤”其實根本不是宿主代碼問題而是模塊邏輯本身就沒生成對看 WAT 一眼就能發(fā)現(xiàn)。善用wasm-tools/wasm-objdump驗證模塊結(jié)構(gòu)。燒錄之前先在本機把 wasm 文件解析一遍確認導(dǎo)出函數(shù)名、導(dǎo)入函數(shù)簽名都符合預(yù)期能省掉大量上板后的排查時間。另外如果你在一個邊緣網(wǎng)關(guān)上同時管理多臺設(shè)備Go 側(cè)建議優(yōu)先考慮 wazero純 Go 實現(xiàn)、零 CGO 依賴交叉編譯和部署都省心。還有人問我在服務(wù)器側(cè)用 wasmtime-go 還是 wazero我的答案很直接團隊里對 Rust 工具鏈?zhǔn)炀陀?wasmtime 追求性能想要部署零依賴、快速起服務(wù)wazero 更穩(wěn)。設(shè)備側(cè)和服務(wù)器側(cè)解耦設(shè)計后兩邊可以各自選型沒必須強行統(tǒng)一。最后說一點個人的總結(jié)性體會。我最初接觸 ESP32 上的 Wasm反復(fù)折騰性能總覺得它“慢、浪費內(nèi)存、不如直接寫 C”。直到我把思路從“用 Wasm 寫整個應(yīng)用”扭轉(zhuǎn)到“用 Wasm 承載易變業(yè)務(wù)規(guī)則、用原生代碼承載系統(tǒng)能力”之后真香。你手里那個 .wasm 文件不是終點它是你整個 ESP32 應(yīng)用架構(gòu)里的一塊拼圖。真正要花心思設(shè)計的是跑在它下面那層宿主固件是那些導(dǎo)入函數(shù)怎么裁剪、怎么校驗回傳是怎么在你改業(yè)務(wù)需求的時候不用重新折騰整個設(shè)備。想通這一點再回頭看標(biāo)題那個問題——一個 .wasm 文件確實還算不上真正的 ESP32 應(yīng)用它需要的東西比你以為的多得多但也正是多出來的這些東西構(gòu)成了嵌入式 WebAssembly 真正的價值所在。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
337p午夜影院| 成熟妇人A片免费看网站| 五月丁香六月色| 亚洲丁香婷婷| 人妻操逼视频| 久久精品婷婷五月丁香| 九九久久99精品免费观看www| 99这里都是精品| 婷婷成人网五月天| 99精品热视频| 丁香五月天天哦| 欧美熟女99| 丁香五月婷婷欧美性爱| 日日夜夜狠狠干| 99热综合| 精品99爱免费视频在线观看| 色色六月| 在线网黄| 六月激情婷婷综合| 丁香婷婷激情四射五月| 99九九视频精彩在线| 色色九区| 99久久五月婷婷| 五月丁香亚州综合网| 久久66成人网站| 中文字幕乱码亚洲精品一区| 婷婷综合爱| 无码G高清天| 色色色999| 久99| 天天色色婷婷| 亚州第一A片| 色色性爱视频| 深爱五月月天| 在线中文字幕免费视频| 台湾无码A片一区二区| 久久人人九| 色啪综合| site:ornaments52.com| 亚洲综合五月天婷婷| 婷婷久草| 最新无码专区| 九月婷婷综合| 99精品网| 天天激情| 99色精品视频| 99热97美女| 丁香五月天成人网站| 色综合狠狠色| 最近中文字幕大全免费版在线| 欧美五月丁香在线观看| 天天干天天干天天干| 全国最新疫情| 综激情网| 超碰免费观看| 狠狠做深爱婷婷久久综合一区| oumeisesewang| 五月天婷婷基地| 小色小蛇伊人婷婷色香五月| 精品一区二区三区免费毛片爱| 久狠日av| 天天激情综合| 伊人色五月| 色婷网| 夜夜操少妇| 丁香五月成人自拍| 综合网色| 五月婷婷丁香| 99免费视频在线观看爱| 欧美99热| 99ri视频在线观看| 日日干天天爽| 五月丁香婷婷导航视频| 婷婷成人丁香色情基地30 | 五月天婷a在线| 五月婷婷激情综合网 | 超碰免费大香蕉| 婷婷五月激情四月综合| 色婷婷操逼网| 96丁香婷婷九月蜜桃综合久久| 播播网色播播| 久热A| 秋霞丝袜啪啪啪| 婷婷色中文字幕| 中文字幕性爱丰满| 99热精品网| 色色五月丁香婷婷综合| 国产亚洲精品久久久久苍井松 | 性色播| 九月婷婷人人操人人舔人人爱| 日韩久热| 婷婷丁香五月色| 高清无码.com| www99精品| BlACKEDRAW视频一区二区| www婷婷| 日日操,夜夜撸| 超碰97人人操| www.99日本| 乱乱av| 激情av| 五月天婷爱综合| 九九精品99| 99久高清视频| 婷婷WWW久久| 另类少妇人与禽zOZZ0性伦| 婷婷色五月激情强奸四射| 婷婷五月天美女视频| 青青草搞屄视频网站| 99日本视频| 五月天开心色色网| 最近中文字幕在线中文视频| 色播综合| 亚洲视频在线观看| 香蕉久久国产AV一区二区| 大香蕉人妻| 99热免费| 色五月天堂| 丁香六月激情| 啪啪操超碰| 九月av在线| 色欲久久99精品久久久久久| 熟妇国产| 91热手机在线| 亚洲无码yw| 久久久精品99| 久久久欧美精品sm网站| 婷婷成人AV| 伊人成综合五月婷婷| 婷婷中合| 五月婷婷亚洲色图| 色七七九九| 久久一级片| 色欲一区二区三区精品A片| 丁香桃色网| 色色日本| 激情丁香五月| 日韩熟女啪啪视频| 九九中文色色| 91打屁股视频网站| 99久久精| 五月天自拍视频| 俺也去综合| 九九婷婷五月天影视| www。五月天。com| 亚洲人成人五月天| 97欧美在线| 淫视馆AV在线| 丁香五月激情综合| 日韩一级淫乱片一区二区三区| www.丁香六月婷婷久久天堂影院.con| 丁香五月婷婷少妇| 色域五月婷婷丁香| 九九热只有这里是精品| 午夜成人在线免费视频| 99在线资源| caop在线视频| 狠狠999| 婷婷六月天亚州| 五月婷婷激情色情网| 激情综合网,婷婷五月天| 亚洲精品性色| 亚洲色图五月丁香| 欧美交换配乱吟粗大25P| 国产精品久久欧美久久一区| 青青草五月天| 免费国产VA国产免费| 亚洲色婷婷激情| 国产另类综合| 色婷婷9| 婷婷色色五月天| 色色热| 黃色三级三级三级三级 qixing300.shrkbk.com www.jinbozs.com tianmiaosw.com | 婷婷五月综合久久中文字幕| 激情五月,色五月| 六月丁香五月亭亭| 天天插天天干| 欧美三级A做爰在线观看| 九九99九九精品免费 | 亚洲国产成人AV在线 | 激情网色五月| 六月丁香花婷婷| 五月色精品| 日日噜噜夜夜狠狠久久丁香六月| 99热精品中文字幕| 日韩小视频在线99| 亚洲欧洲99| www,婷婷五月天,com| 亚洲激情综合| 亚洲中文字幕在线观看| 67194中文字幕| 精品99这里有| 79精品视频在线观看,| 少妇高潮一区二区三区99欧美| 国产成人片| 久久99网| 五月婷婷视频啪啪美女| 狠狠色五月| 婷婷五月天在线观看| 五月婷婷综合色啪首页| 婷婷五月天激情文学小说| 久久婷婷五月天综合| 丁香五月天黄色片| 日日操无码| 色综合久| 色综合99| 五月丁香久久| 色欲天天综合| 婷婷五月丁香香蕉| 久草热8精品视频在线观看| 超碰啪啪网| 五月丁香综合啪啪| 五月天婷婷丁香| 色综合天天| 人人操操| 色色色色色网站| 99久久综合| 九九伦子片| 九玖视频这里只有精品| 婷婷五月丁香色综合| 婷婷五月天小说| 99啪啪网| 91精品综合久久久久久五月丁香 | 五月丁香六月婷精品视频| 婷婷激情人妻| 丁香99| 久久五月视频| 久久久久9| 婷婷激情97| 五月天婷五月天综合网在线观| 欧美天堂久久| 激情丁香久久久久久| 涩涩五| 激情五月婷婷| 五月天无码| 精品久久久人妻| 亚洲欧洲中文日韩久久AV乱码| 五月丁香六月综合基地| 天天干天天插| 激情婷婷丁香色五月| 99热这里只有精品69| 五月天久久婷婷| 91视频久久久| 九九99久久| 久久大国产香蕉| 99热在这里只有免费精品| 欧美六月| 午夜成人天堂久久无码日韩久久| 激情五月天色播| 五月婷护士| 五月天色婷婷av| 伊人色综合网| 99re思思在线视频| 欧美三日本三级少妇三99| 婷色综合| 曰日爽日日操| 六月激情丁香一道本7777| 狠狠穞A片一區二區三區| 大香蕉久久伊人婷婷五月丁香| 五月婷婷AV| 国产精产国品一二三在观看| www.日日日.com| 亚洲操B| 在线你懂的亚洲欧| 九月丁香婷婷综合| 久色网| 久久东京热婷婷五月| 久久久久婷| 欧洲亚洲精品| 先锋资源91| 99久久精品国产色欲| 久久色吧| 六月婷婷综合| 97人人看| 可以看的av| 97成人丁香婷婷| 久久九九爽| 先锋资源91| 99久久99久久| 色五月婷婷中文字幕| 天天色丁香| 任你日视频| 国产在线黄色| 丁香五月婷婷婷婷欧美综合| 第四色在线观看| 婷婷五月天深爱| 嫩草极品| 九七色色六月丁香| 六月丁香射婷婷欧美色图片| 99精品久久久久久| 婷婷六月激情| 狠狠丁香| 国产精品99久久久久久久女警| 噜噜噜噜噜日本视频| 99视频| 五月天婷a在线| 色狠狠综合网| 亚洲第一成人AV| 天堂草在线看www| 综合色视频| 色色AV色色色东莞| 99热超碰| 色综合综合综合| 五月丁香六月婷婷的女人| 在线不卡的视频| 亚洲成人网站在线播放| 五月丁香综合网色欲| AA片在线观看视频在线播放| 色五月婷婷视频| 极品五月天| 色婷久久| 婷婷爱综合| 五月天丁香婷婷视频网址| 天天狠狠夜夜狠狠2023| 久久黄A片| 五月丁香久久| WWW五月| 五月停停999| 狠狠的日| 五月婷婷综合在线视频小说| 97香蕉碰碰人妻国产欧美| 另类专区在线观看| 丁香五月婷老师| 操一区| 三级毛片7979| 亚洲精品99| 九九热区一区二区三区| 日本久草福利| 欧美搡BBBBB摔BBBBB| 99热这里只有免费| 九九久久五月天| 久久精品A片777777| 激情五月天婷婷在线网址发给我 | 色色色色色网站| 五月婷婷丁香综合| 无码人妻AV久久久一区二区三区 | 国自产拍偷拍精品啪啪一区二区| 婷婷五月另类网站| 久久色频| 欧美日韩成人在线网| 婷婷丁香18| 天天爽综合网| 天天日日人| 吾爱AV导航| 这里只有精品视频在线| 婷婷淫淫狠狠六月| 五月丁香色五月| 九九精品热播| 亚洲日本三级片| 日韩在线视频中文字幕| 五月开行婷婷色五月| 精品久久99码| 97碰碰视频| 天天天天天天天操| 久久九九爽| 在线不卡AC| 日日噜狠狠| 激情性五月天免费小说视频 | 日日日影院| 婷婷色偷拍| 第四色在线观看| 免费AV在线| 狠狠五月天婷婷激情网。| 九月影院義母在线播放| 91九色在线观看免费| www.99在线| 婷婷五月天AV在线| 99热在线免费| 激情都市五月天| 久久最新色色色| 4399高清无码视频| 五月天小说激情| 五月天综合网| 人妻内射视频| 日韩操逼大片| www.五月天婷婷| 狠狠色婷婷六月激情网| 情五月亚洲婷婷| 91狠狠色色丁香婷婷综合久久| 久久视频在线视频| 亚洲中文字幕网| 99热碰碰热| 一级性爱视频| http://www.sd-xiangsu.com/| 97婷婷丁香五月天激情图片| 精品99这里有| 9.1综合网| 久久资源网五月婷| 久久激情五月婷婷| 五月婷在线影院| 久久精品日| 丁香综合| 成人网在线观看视频| 人妻综合网| 99亚洲视频| 亚洲久久激情| 日韩AAAAAAAAAAA片| 严洲天天插| 婷婷五月激情欧美大胆视频| 精品国产AV色一区二区深夜久久| 久久激情网| 99人人干| 另类图片天天影视在线观看| 欧美日朝成人| 91久操| 色色色婷婷五月| 亚洲综合热| 天天日天天干天天天| 黄页大全十八禁| 婷婷五月天性| 天天日天天爱天天噪| 战争与艾拉电影免费观看| 天天操夜夜夜拍拍拍| 91超级碰碰碰| 久久开心五月婷婷| 六月婷婷久久大全| 天天日,天天干,天天操| 五月天开心激情综合网| 五月天综合在线| 99精品热| 色情综合| 五月天婷婷小说| 天天做天天爱| 香蕉影院色| 久操乱| Y11111111111少妇电影院| 超碰自拍天堂| av网站免费在线| 99视频精品| 九九aV| 五月婷婷中文| 亚洲爆乳无码精品AAA片蜜桃 | 丁香激情网| 五月天婷婷AV| 丁香五月天电影| 在线播放成人网站| 色综合久久久无码中文字幕999| 伊久大香蕉| 久9热插入| 五月婷婷导航| 新久久五月天激情| 婷婷五月丁香六月天亚洲综合| 亚洲国产va| 99色精品| 丁香五月天综合| 综合网亚洲| 天天肏视频| 激情五月婷婷综合| 超碰9| 久九色| 人妻久久久久久| 99年操人人爽| 久久精品综合色| 天天操精品| 成人在线不卡| 天天综合久久| 亚洲天天综合| 日日夜夜婷婷| 五月天丁香婷婷久久九| 五月丁香六月婷婷成人| 婷婷丁香色五月天久久88| 人人综合五月人人婷婷| 色婷婷五月天| 亚州美女| 第四色五月婷婷| 九九热这里有精品视频| 人人视频色| 婷婷激情视频| 日比网免费国产| 国内久久久精品99| 成人婷婷色五月天| 来吧亚洲综合网| 激情五月五月婷婷| 婷婷丁香黄色| 日韩人妻无码一区二区| 五月丁香六月婷婷网| 99热只有这里有精品| 婷婷激情综合| 五月天丁香啪啪啪啪| 久热九九| 99热免费看| 夜夜谢天天干| 丁香熟女乱| 激情综合自拍五月婷婷色五月| 久久99这里只有精品视频 | 99成人无码| 久婷久婷| 久久性都花花世界成人免费视频| 玖玖色资源| 五月丁香网中文字幕| 五月丁香婷婷综合视频| 性爱激情久久| 丁香五月婷婷色情综合| 五月天色婷婷网| 日本一道久久| 婷婷色色丁香| 婷婷五月天在线综合导航| 欧美五月婷婷| 综合久久激情久久| 五月丁香六月婷婷,婷| 久久人妻www| 91狠狠色丁香婷婷综合久久精品| 丁香五夜激情四射夜夜夜| 噜一噜免费视频| 五月天另类激情在线| 中字幕视频在线永久在线观看免费| 99色在线观看视频| 亚洲精品激情| 欧美午夜乱妇午夜福利| 天天搞夜夜叫| 99日本精品视频热| 98永久精品| 五月丁香激情在线| 欧美在线干| 可以看的av| 天天操综合网| 91九色精品女同系列| 99免费| 五月丁香亭亭电影久久| 色五月丁香一区在线| 99操碰| 97久久五月丁香婷婷| AV天堂婷婷五月天| 少妇高潮呻吟A片免费看软件| 男女99免费视频| 色婷婷激情| 亚洲99一级无嗎特制在线| 丁香六月婷婷综合麻豆| 337p大胆噜噜噜噜噜91Av| www.91在线观看| 婷婷久久色| 婷婷丁香五月在线观看91| 激情网第四色| AA片在线观看视频在线播放| 99热成人精品| 五月婷婷啪啪| 这里只有精品99视频| 99精品在线| 99日本在线| 精品99在线| 九九av在线| 丁香五月欧美| 日韩日比视频| 久久五月激情| 久久亚洲无码| 亚洲综合另类| 人人97碰| 丁香五月六月| 丁香五月天人体| 超碰99在线观看| 狠狠五月激情在线| 乱精品一区字幕二区| 亚洲综合激情五月天婷婷| 高清无码视频网址| 日日噜狠狠色综| 99热最新网址| 天插天啪天啪天啪| 1024欧美看片| 五月天激情国产综合婷婷| 国产91在线视频| 久久这里只有精品网| 国外亚洲成AV人片在线观看| 五月婷色啪| 激情电影五月婷婷| 激情六月婷婷| 小色小蛇伊人婷婷色香五月| 97色婷婷成人综合在线观看| 99免费热在线精品| 亚洲中文字幕在线观看| 色综合色色色色色| 综合九九久久| 99啪啪视频| 丁香五月天激情五月天激情五月天激情网| 欧美精品999| 狠狠色婷婷7| 777米奇影视第四色| 狠狠色噜噜狠狠狠888了| 免费在线观看av网站| 婷婷六月啪啪| 色婷婷丁香五月天| 欧美成人精品A片免费一区99| 色五月婷婷丁香婷婷| 亚洲AV成人无码精品| 天天做夜夜爽| 五月6香色婷婷视频| 八戒青柠影视剧在线观看 | 激情五月天婷婷| 五月丁香激情综合六月涩涩爱| 99干免费视频| 五月天丁香成人| 思思热久久阴99| 色.五月综合网| 天天噜噜| 久久最新色色色| 激情综合丁香六| 婷婷五月天电影网| 黄色大片又大粗又爽| 啪啪啪综合网| www五月天com| 婷婷爱在线观看| 韩日另类| 91大神操美女| 操日本人妻视频| 丁香久月| 91精品综合久久久久久五月丁香| 激情综合丁| www.射伊蕉婷婷| 色五月激情综合网| 久久久久人妻网址| 开心丁五月| 亚洲av网址| 中文资源在线a| 婷婷久久五月天亚洲欧美国产日韩在线观看 | 草五月| 大香蕉伊人99| 久久大国产香蕉| 超碰男人色| 五月激情网五月综合网| 色激情五月| 久久人人妻| 五月天婷婷在线观看| 五月丁香A片| 丁香婷婷五月综合欧美另类| 中文av网| 色五月婷婷基地| 五月香蕉婷婷| 六月丁香大香蕉| 综合久久丁丁香婷| 色五月在线播放| 亚洲日日日| 丁香五月婷婷综合视频| 欧美超级视频97| av网址在线播放| 日韩操人| 第五色婷婷| 五月丁香婷婷成人伊人网| 五月婷婷久久大香蕉| 中文字幕丰满孑伦无码专区| 久久婷五月婷| 五月婷婷成人| 五月天欧美激情| VA日本视频| 超碰97免费在线| 9九九久久精品无码专区| 一级黄色影片| 婷婷五月天影院| 激情婷婷五六月天| enecarbon-materials.comWu染请涟系Bao护@wip1688 | 91超碰在线观看| 十月丁香九月婷婷综合| 丁香五月天在线直播观看| 色婷婷免费观看| 91精品综合久久久久久五月天| 五月婷婷色色| 天天干天天干天天干天天干天| 婷婷99狠狠躁| 米奇影视资源777狠狠色婷婷五月天激情网 | 区区欧美你爱| 色天天综合色| 九热在线这里有精品6| 九九这里是免费的视频5| 超碰在线资源| 色婷插| 强壮的公次次弄得我高潮A片日本 | 激情九月婷婷| 黄网免费看| 久久五月天网| 另类小说色婷婷| 可以观看的AV| 婷婷射婷婷舔| 国产欧美婷婷五月| 精品久热| 综合色色婷婷| 久草五月丁香婷婷综合| 97色精品视频 | 亚洲无AV在线中文字幕| 大香蕉久久久久| 可以直接看的av| 丁香五月综合在线观看| 久久这里只有国产视频| 99.色| 亚洲综合色丁香婷婷六月| 一本久久亚洲五月婷婷| 亚洲色色在线| 色色色视频| 26uuu国产色| 99久久综合| 国产这里只有精品| 亚洲激情五月天| 久久香蕉网| 九月色婷婷| 日韩无码专区| 九九精品热| 久久激情五月| 成人国产欧美大片一区| 江苏少妇性BBB搡BBB爽爽爽 | 综合色99| 欧美亚洲色色色色| 婷五月天| 91干视频| 免费日韩99| 久久久99精品| 五月天综合久久| 无码啪啪| 一本大道嫩草AV无码专区| 九九九九操逼| 20253AV| 丁香色影院| 大香蕉久久婷婷精品综合| 丁香久久综合| 都市激情久久| 丁香 婷婷 激情 综合 五月| 色色亚洲无码| 六月婷婷亚洲| 99热这里只有精品9| 九九热啪啪| 热99这就是精品视频| 色五月婷婷五月天| 欧美综合激情| 欧美WW在线网| 欧美婷婷六月丁香综合色| 久操热| 色婷婷婷综合五月天| 激情综合色| 天天爱天天操| 久热这里| 久久精品一区二区三区四区| 99热免费18| 日本3级片一区2区| 99国产er热视频| 久热视频这里只有精品68| 99热精品在线播放| 超碰人人在线| 日本人人超碰| 婷婷丁香成人五月天| 啪啪啪大香蕉| 色噜综| 色婷婷综合久久久久| 日韩中文字幕| 大香蕉久久草| 欧美色色色| 91操网| 欧美熟女视频 色婷婷| 丁香婷婷六月天| www.热99热| 久久婷婷五月综合色奶水99啪| 亚洲色无码A片一区二区麻豆| 伦99热| 日韩av干| 99人人干| 丁香色情五月综合激情| 色婷婷综合久色AV五色最新| 91人人爽久久涩噜噜噜| 九九热超碰| 九色无码| 亚洲 六月 综合| 五月婷婷啪啪| 色婷婷色综合激情91| 99色丁香婷婷综合网| caop在线| 97婷婷久久丁香| 天天在线天天综合网色| 色色丁香婷婷综合| 亚洲不卡123| 九九免费视频在线| 九九婷婷综合| 色五月色五天色情网址| 色综合xx| 99热最新| 五月天丁香久久| 婷婷五月天综合色| 色婷婷成人做爰A片免费看网站 | 六月婷婷天天操夜夜爽视频| 五月婷婷五月| 性爱技巧五月| 色播五月丁香婷婷| 久久ab| 91精产品自偷自偷综合| 播五月丁香六月| 国产精品美女久久久久AV超清| 性视频久久| 99这里只有精品|v| 丁香五月婷婷色综合| 色五月天天在线观看资源站| 亚洲AV日韩无码| CAOBIBI| 久久机热思思热| 欧美成人AAA片一区国产精品 | 激情播丁香| 久久ab| 久久伦乱| 色色99| 久久久久久久久久婷婷| 色综合色色色色色| 色和综合网| 色欲香综合网| 国产精品久久久久久亚洲毛片| 丁香五月天啪啪| 91精品在线看| 婷婷人人操| 婷婷五月天在线观看| 99在线爽| 久久精品视频在这里有| 五月婷无码| 思思久久99热只有频精品66| 日韩在线观看网址| 森林影视大全,最好看的2019年视频| 深爱激情五月网| 大香蕉九九| www.99热| 日本妈妈乱| 五月丁香五月综合欧美| 亚洲综合字幕色色| 另类激情中文| 六月五月丁香五月欧美| 可以看的av| 色五月婷婷激情综合网| 五月天激情网站| 激情无码五月天| 欧美色五月| 久久99热这里| 国外亚洲成AV人片在线观看| 79成人网| 20253AV| 五月婷婷久草在线视频综合| 五月停亭久久电影| 99在热线免费视频| 亚洲超级碰| 99re在线精品视频| 99热精品在线| 婷婷综合五月| 五月婷婷六月爱| 婷婷五月激情欧美大胆视频| 五月天激情社区| 99ri视频在线观看| 婷婷色在线视频| 超碰人人操人人干| 激情四射五月天| 日日婷婷不卡| 色婷婷播放| 无码色| 久久久www| 色色色欧美| 五月婷婷干| 丁香婷婷综合色五月激情国产基地| 婷香五月激情视频| 婷婷99狠狠躁天天| 99综合网| 久99热| 伊人九九综合| 五月综合无码| 人妻熟妇六区| 婷婷日本色| 久久久999精品| 婷婷欧美色| 日本人人超碰| 色五月人妻| 一区二区成人电影| 亚洲精品一区中文字幕乱码| 五月开心深深爱激情综合 | 北条麻妃九九九国产精品视频| 亚洲色综合性| 小骚穴电影| 午夜色婷婷| 亚洲精品五月| 久久最新色| 97人人干| 狠狠干综合网| 日韩无码专区| 99超超碰| 激情五月天婷婷| 日日夜夜狠狠婷婷色| 超碰婷婷五月| 91超碰在线观看| 伊人日日干| 97久久久免费福利网址| 99综合| 激情六月婷| 9l视频自拍九色9l视频自拍九色9l社区 | 亚洲国产成人AV在线| 激情久久综合| w婷婷五月婷婷w| 婷婷五月丁香欧洲| 中文字幕无码人妻少妇免费视频| 色色射| 人人爽人人射-美女久久久久久久久久-成人AV| 亚洲丁香五冃97色| 丁香六月婷婷综合激情欧美| 伊人丁香五月| 99在线视频免费| 亚洲精品又粗又大又爽A片 | H亚洲| 国产成人+综合亚洲+天堂| 五月丁香六月合| 伊人婷婷大香蕉| av操逼网| 1024日韩| 第四色婷婷丁香五月| 五月天天丁香婷婷在线中| www狠狠爱com| 任你草| 亚洲美女网Va| 五月丁香六月婷婷免费视频| 久久超级碰碰| www。五月,com| 五月婷婷婷| 99精在线| 国产欧美日韩一区二区三区| 人人干99| 在线色婷婷| 欧美色色色| AV色婷婷| 凹凸操Av| 婷五月天在线草| 久天综合| bukadeavzaixian| 农村熟妇高潮精品A片| 色婷婷激情| 婷婷五月天在线综合| 97碰碰在线看视频免费| 丁香五月六月激情| 99视频内射三四| 六月婷婷日| 久久精品99国产精品日本| 色综合中文| www99热| 五月综合在线婷婷图片| 色九网| 激情五月天色婷婷综合| 激情五月天。| 色综合五月天| 婷婷色中文字幕| 99这里热| 99热精品在线播放| 九九视频精品在线免费| 一级片sese片.COM| 久操干| 婷婷丁香先锋资源网站| 90色免费视频| 92久久精品一区二区| 色色网站| 久操无码| 狠狠操狠狠| 丁香色综合| 五月天激情网页| 综合五月亭亭9| 五月伊人综合| 丁香五月,开心五月,成人婷婷| 99久久精品国产色欲| 欧美碰碰| 天天做天天干天天综合网| 99操逼视频| 性爱视频99| 五月激情丁香| 五月丁香色婷婷基地| 婷婷AV丁香| 少妇丁香婷婷 | 天天成人五月天| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 五月婷婷色播| 99色| pacopacomama 070722_670 素人奥様初撮りドキュメント 103 大久保純子 | 日本啪啪网| 91日视频| 91九色无码日韩| 麻豆雪千夏| 91人操人人人操人| 视频一二区| 久久电影4399| 丁香五月最新地址| 五月天综合激情网| 97人人操| 中文字幕av久久爽一区| 六月婷婷激情| 丁香五月天啪啪| 丁香五月天啪啪| 九九99久久| 99这里都是精品| 99综合网| 中文字幕丰满孑伦无码专区| 校花娇喘呻吟校长陈若雪视频| 欧美日韩中文国产一区发布| 成人无码精品1区2区3区免费看| 色婷婷成人做爰A片免费看网站| 午夜天堂一区人妻| 天天日中文| 色九月丁香婷婷蜜桃在线观看| 丁香深五月婷婷| 丁香狠狠操| 超碰在线中文字幕| 殴美激情综合网| 久久综合99| 色五月激情问网站| 久久av电影| 婷婷综合伊人丁香| 婷婷播5月| 色色色五月婷| 91操人| 99热精品在线观看| 五月激香蕉网| 婷婷久久在线| 91丨九色丨丰满人妖| 婷婷在线播放av| 色六月丁香婷婷狠狠干| 青青草视频福利| 五月丁香六月婷婷无码| www.婷婷,com| 五月婷婷,六月丁香| 超碰免费在线| 99只有精品9| 激情 婷婷| 91九色国产| 综合在线丁香五月| 亚洲日韩欧美综合VA| 99精品久久久久| 热久久这里只有精品| 国产毛片精品一区二区色欲黄A片 99国产在线精品视频 | 六月婷婷天天操夜夜爽视频| 五月情综合| 开心激情网在线| 色综合久久88色综合天天99| 久久久激情| WWW.HENHENL.| 久草视频一,二三四| 天堂婷婷五月在线| 婷婷五月天激情AV影院| 国产亚洲精品久久一区二区三区| 99久在线精品99re8热| 强辱丰满人妻HD中文字幕| 亚洲乱啪| 婷婷五月小说色综合| 五月天婷婷永久免费视频| 狠狠的日| 激情色播| 国产探花一片区| 99熟女| 日本激情五月天‘| 影音先锋色婷婷| 一本色综合色| 91久久综合亚洲噜噜成人在线| 五月婷婷综合热| 99视频网| 五月天另类视频| 久草婷妨| 淫荡家庭AV| 五月婷婷丁香在线| 久久免费精彩视频| 丁香五月婷婷激情中文| 99视频超级精品| 激情五月婷婷网| 亚洲欧美成人在线| 日韩精品电影| 丁香五月婷婷丫| 婷婷午夜综合| 亚洲亚洲人成综合网络| 伊人婷婷91| 丁香综合伊人AV| 影音先锋一区| 五月婷狠狠| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 国产4P视频精品五区| 婷婷激情五月天激情在线| 色色色色网| 九九在线视频| 在线观看996精品| 久久66精品| 伊人五月天在线| 婷婷色五月天色色| 色婷婷成人在线| 日本色99| 第四色色六月色综合| 婷婷久久欧美| 91色在线 | 日韩| 久久婷婷青青草| 天天色综和网| 婷婷五月影院| 五月天婷婷偷拍| 色VA| 大香蕉五月婷婷| 中文字幕av网站| 狠狠草婷婷| 爱射综合| 久久婷婷激情四射五月天| 色综合久久88色综合中文字幕| 色婷婷丁香五月天| 99九精品| 五月婷婷开心丁香| 国产精产国品一二三在观看| 久久久久8888| 五月丁香中文字幕| 亚洲精品无码99热| 婷婷五月亚洲激情| 任你搞网站| 99玖玖精品| 色小说五月婷婷| 婷婷六月天| 99热福利| 伊人久久婷| 人人搡人人| 开心五月激情婷婷| 久久国产一区二区三区| 丁香婷最新动态| 99热播放| 大香蕉狼人久久| 国产精品人人妻人人爽| 丁香五月婷婷啪啪视频| 色五月丁香激情视频| 婷婷六月激情| 久久激情五月| 人人综合久| 性色av大香综合| 五月激情综| 91丨九色丨老熟女激情| 天天情色五月天| 日日操夜夜擼| 婷婷五月天少妇| 婷婷五月天av| 五月天婷a在线| 五月天六月色| 99色视频| 日日.c| 啪啪综合网| 亚洲午夜AV| 亚洲综合色色| 91超碰在线观看| 超碰91人人操| 91九色熟女| 五月婷婷色播| A在线观看| 色人久夂| 原琪琪色影院| www.五月婷婷.com| 色五月婷婷操逼| 亚洲色图五月丁香| 狠狠五月激情丁香六月| 丁香五月人妻| 久久婷婷五月天激情四射| 91久久综合亚洲噜噜成人在线| 久久久27操| 久99久热| 丁香九月激情| www.色五月| www.超碰在线| 亚洲性图一区二区三区| 两性婷婷丁香五月| 五月婷中文娱乐综合| 激情五月天激情综合网| 97久久超视频| 午夜婷婷久久| 综合网啪啪| 色五月激情婷婷| 五月天日日操夜夜操 | 婷婷久久五月| 九九热视频精品2| 天天操综合网| 午夜精品777| 秋霞九九无码| 噜噜国产| 91婷婷伊人牛牛| 97干在线| 玖玖资源部在线播放| 日本啪啪视频HD| 激情五月少妇| 黄久久久| 99热精品在线| 操人妻90p| 亚洲AV影片在线观看| 久久色这里只有精品| 99热色婷婷| 久久婷婷六月综合| 亚洲天天免费| 亚洲人妻五月丁香婷婷| 91在线观看九区| 99热这里是精品| 午夜成人AV在线| 色综合色色| 六月丁香好婷婷| 91视频免费后入强操| 大香蕉九九| 色婷婷丁香五月丁香| 久久久久久久久久久jjjj| 少妇综合网| 大香蕉综合| 久久国产一区二区三区| 亚州色色色| 婷婷的久久网站| 午夜天堂一区人妻| 日韩爱操视频| 亚洲av综合网| 成人午夜天| 日本色视| 色热久资源| 国产精品成av人在线视午夜片| 色五月涩涩婷婷| 人人色人人摸人人看| 婷婷5月久久综合网站| 欧美色频| 99热精品网| 日本三级片片| 深爱激情五月网| 日韩操| 丁香五月天黄色片| 亚洲妇女熟BBW| 五月综合激情网| 日本婷婷网| 99九精品| 可以看的av| 99性色| 色五月婷婷五月丁香五月激情五月视频| 好吊兆人妻| 亚洲永久免费| 色婷婷五月综合网| 97狠狠色| 亚洲天堂婷婷| 97热视频| 精品,99| 久久久人妻久久久| 九月婷婷综合色干| 97 A I色色| 日日爽日日爽| 综合久久婷婷五月丁香| 99综合成人视频在线观看| 五月天伊人| 久久99网| 五月熟妇婷婷久久| 九九色之九九色88| 婷婷综合性爱网| 久久激情五月| 五月天天爽| 蜜臀av无码久久久久久久久| 伊人玖玖网| 五月Huangsewang| 久久激情网| 天天爽,夜夜爽| 久久ER视频com| 丁香五月综合激情啪啪| 亚洲AV成人在线观看| 亚洲热热视频| 九九色色| 激情久久综合网| 婷婷六月丁香在线| 日韩国产在线免费观看| 精品二区| 六月激情综合| 欧美在线视频免费播放| 97韩国久久电影院| 婷丁五月| 丁香五月91| 久草五月婷| 丁香六月丁香婷婷激情| 国产精品色色| WWW99热| 色七七色九九| 激情综合婷婷| 桃色Av色哟哟| 日本在线视频播放91| 婷婷五月天大香蕉在线视频观看| 中字幕视频在线永久在线观看免费| 五月丁香色色| 日日操天天操| 丁香五月婷婷欧美成人色图| 99re这里只有精品国产99| 中文字幕不卡+婷婷五月| 伊人三级激情| 五月婷婷亚洲综合在线| 九九色婷婷五月天|