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

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ù)簽名必須嚴格匹配。加載并實例化模塊從文件系統(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指令的處理效率很低我在性能測試里看到浮點運算比整數(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
返回資訊列表
日韩精品人妻系列无码天堂| 九九av| 校园春色亚洲无码| 香蕉久久国产AV一区二区| 亚洲性天堂| 九九国产热| 97色婷婷| 精品性爱无码在线播放| 97在线精品观看视频| 青青青青操国内视频在线| 欧美色66| 97亚洲欧美日韩| 4399成人黄A片| 亚洲av成人精品一区| 麻豆精品天美| 使劲用力艹少妇视频一区二区| 色婷婷综合网| 午夜欧美女人操逼| 丁香五月激情婷婷| 自拍偷拍2025在线观看| 久热91| 少妇高潮特黄A片| 黄片www视频免费| 黄页网站成人免费| 91狠狠狠| 国产9熟妇视频网站| 色综合20p| 五月天春色激情网| 色九月综合| 久久理论字幕视频| 欧美一级专区免费大片 | 欧美色图在线视频少妇| 330dv亚洲成年视频网| 久妇网| 日本不卡卡一区| 91熟女熟妇视频网站| 99天堂网| 日韩三级在线观看mp4| 激情自拍 校园春色| 色一色综合网| 欧美国产日韩清纯唯美| 91n美女视频| 大香蕉在线86| 亚洲激情视频| 亚洲 欧美 日韩 国产一区二区| 变态综合色| 久久久久久无码人妻中文字幕| 日韩精品人妻中文字有码在线| 成人天天看站长推荐| 人人污日韩一区二区| 99啪啪| 精国久久一区二区三区98| 97精品综合久久网| 天天天干977| 日韩精品午夜操呦呦不卡影院| 麻豆色99999| 久 久无码人妻AV| 免费精品无码一级毛片牛牛影视 | 国产女人高潮视频| 亚洲中文人妻色| 密臀AV在线| 色哟哟精品1精品2| 91精片| 国产一区免费午夜视频| 亚洲天堂99| 日本超碰在线国产一区| 夜夜福利| www国产精品| 亚洲小电影免费涩涩成人在线高清 | 午夜偷拍久久熟女| 亚洲国男人的天堂| 日本精品免费一区二区三区四区| 后入式999| 淫淫综合网| A级毛片在线看免费| 久久精品国产亚洲AV片多多| 色五91| 蜜臀色乳| 爱妃国产亚洲视频中文字幕| 欧美 亚洲 偷拍自拍| 麻豆久久视频在线地址| 精产品久久| 日韩精品9区| 精品亚洲成人免费在线| av在线一区二区三区| 91超碰人人操| 老鸭窝日丰县女人| 97色伦97色伦国产欧美| 色色色五月婷婷| 熟女色图在线| 97超碰人妻| 岛国黄| 大香蕉伊人色偷偷在线| 一本色道久久综合狠狠操| 日韩在线国产字幕| 嗯~啊~快点 死我视频| 91中出在线| 99这里只有精品国产| 激情99| 亚洲十八禁止| 一类av片在线看| 久久久工口| 九九热只有精品| 亚洲色色探花| 日韩欧美久久婷婷网站| 欧美日韩国产高清在线一二三区 | 97亚洲综合电影| 中文字幕日韩情色| 丁香五月婷婷五月| 美女爽到高潮91| yellow网站免费观看日韩高清无码| 大稥蕉免费视频这里只有精品| 亚洲情色综合网| 日本视频一区二区三区| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 裸体美女国产免费久久久网站| 久久久精| 亚洲成av人片色午夜乱码| 超碰视97中文| 国产女人成人精品视频| 欧美综合色图片| 国产成人网站在线观看| 97超碰影音| 国产精品三级视频网站| 久久久性爱| 丁香五月天啪啪| 欧美色图电影| 精品四五区| 2024年最新色情网站在线观看 | 日韩偷拍一区二区三区| 亚洲电影91| 国产一级操B视频| 亚洲精品1区| 久久亚洲AV无码专区首页| 日逼五月天| 伊人久久在线视频观看| 亚洲麻豆18发?| 亚洲精品成人激情在线| 少妇蹲下露出大唇5| 亚洲男人天堂2012| 少妇干B| 亚洲中文字幕av | 婷婷成人久久久精品| 九九九免费视频| 日日夜夜草草草| 日va操| 成人无码欧美一级A片狼牙直播| 中文字幕一区二区三区视频播放| 男人天堂2019| 97色欧州| 欧美日韩操逼嗦吊| 亚洲国产精品有声| 日韩啪啪视频| 丰满欧美放荡少妇在线| 韩国一区二区精品亚洲| 亚洲国产日韩欧美熟妇在线| 国产在线视频午夜精华在| 亚洲成人妻日韩在线| 午夜福利视频在线一区| 亚洲欧洲av影音| 午夜无码熟妇丰满人妻| 一区二区三区 丝袜 高跟 美腿| 国产家庭乱伦表演| 国产成人五月天丁香花| 97爱碰| 91 亚洲 欧洲| 日韩精品99999| 一区不卡在线观看av| 亚洲欧洲日韩中文字幕一区| 在线观看午夜婷婷久久久久清性观看| 色婷婷狠狠| 人妻丰满熟妇一区二区三| 欧美同性恋 的搜索结果 - 91n| 欧美|91色综合| 超碰成人最新最好看| 欧美色综合| 亚洲色图欧美色图综合| 亚av顶级裸体一区二区三区四区五区 | 秋霞蝌科网日本一区| 久操国产在线| 久9九综合在线| 久久久久国产| AV高清一区| 丰满人妻-区二区三区免费| 操操操日本的逼| AAAA欧美日韩| 91天天综合网| 欧美精品二区视频在线| 96久久久| 老女人综合网| 伊人麻豆传媒| 久久久久熟女| 亚洲欧美首页| 九九热精品| 久久噜| 中文字幕人乱码中文字的预防方法 | 久久精品夜色国产亚洲AV| 国产乱码久久| 在线 制服丝袜中出 人妻| 日本精品高清一二区一本到| 91在线视频免费播放| 国内毛片欧美香蕉精品| 人妻中文字幕精品无码| 97精品熟女少妇一区| 免费a级毛片av无码久久精品中文字幕| 国产熟女一区二区| 久久久性爱| 综合自拍| 日本成a人v网站在线观看| 2017,超碰| 日韩本不卡视频在线观看| 久久久久久久久女黄| 亚洲色图欧美色图在线播放| 热热色中文无码| 久久 精品| 免费国产视频| 嫩草影院性色| 久99久视频| 国产激情综合五月久久| 青青草亚洲一区| 国产SV一线| 国产极品久久久| 亚洲成人精品久久久| 后入人妻一区| 美女AV一区二区| 欲射影视| 欧美性爱一区二区三区| 精品视频一区二区| 亚洲最大网站av| 久久久激情| 免費人妻夜夜爽天天爽爽一区| 九久久九精品视频| 欧亚成人在线视频| 中文字幕一区二区三区四五区| 超碰97极品9| 国产综合久久久麻桃个 | 久久綜合很很很| 肉丝无码中文高清| 上特色A在线| 手机在线免费看的av| 国产成人精品无码久久| 久久精品一区二区三区不卡| 久偷拍欧美日韩三区| 97超级色碰碰| 国产高清成人免费视频| www黄片免费看com| 富二代亚洲精品99| 青青草原香蕉日本Ap| 久久久蜜桃臀无码视频| 国产一级特黄大片处女| 伊人亚洲国产一成人久久精品,久久| 一区二区三区 丝袜 高跟 美腿| 天综合网欧美| 香蕉欧美| AA丁香综合激情| 大香蕉啪啪啪啪在线| 亚洲97资源| 九九视频黄色片| 久久久久9| 久久久久久久久久久久九| 国产丝袜啪啪| 久久九九视频九九视频| 嗯……啊…嗯嗯…啊…好舒服| 欧美黑人91| 日韩成人精品| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 亚洲 欧美 手机在线观看| 久久精品小视频| 日本欧美m v精品网站加| 国产91福利小视频在线观看| 丁香六月婷婷久久综合| 97操综合| 国产一级作爱毛片| 久操网在线| 91亚洲电影| 婷婷丁香五月综合| 一区超碰一区| 色青青久久影视| www.男人天堂| 久久人人爽爽人人爽人人片αV| 青青草自拍视频在线播放| 天天操福利视频综合网站| Av手机版天堂网| 久久国产视频专区一二三| 麻豆成人AV| 黄色av一区二区在线| 极品AV网站在线观看| 久久久久久亚洲Av无码精| 97超级久久强资源| 91性色| 久7色| 91丝袜美女视频| 国产精品一区二区黄片| 九九九成人| 人人扣人人操| 男人的天堂2019| 欧美日韩99精品麻豆传媒| 欧美97色| 久久偷拍人| a片自拍直播视频| 天天日日日射| 日韩在线一区高清在线| 欧洲亚洲人人爽爽视频| 久久鲁干| 亚洲情色视频| 久久熟妇五十路一区| 在线午夜成人无码视频| 久久久久亚洲一区女同性恋中文字幕| 人人 操人人 操人人| 欧美日韩亚洲五月天婷婷| 免费又黄又裸乳的视频| 极品出轨视频网站| 神马精品视频| 久久久久久久久久久免费精品| 嗯嗯啊好大| 久久久免费的精品| 性91| 欧美中文狠| 操逼视频亚洲| 亚州综合色| 91人妻丝袜无码| 成人a级高清视频在线观看| 欧美色自拍| 国产成人网站在线观看| 亚洲av青草久久一区二区| 嗯阿好爽好紧| 伊人黄色视频免费观看| 久久久久久人妻一区精品色欧美| 嗯嗯不要 视频| 少妇国产不卡| 国产精品一级片在线看| 精品亚洲天堂| 丝袜美女诱惑 91 视频| 97精彩视频网站| 久操网址| 亚洲天堂男人天堂网| 神马久久久久久久久久久久| 激情五月天婷婷| A级毛片在线看免费| 天天干1区2区在线| 麻豆区99999| 大伊香蕉在线视频免费| 日韩免费在线观看不卡| 天天看片青娱乐| 欧美 牲| 亚洲丝袜色| 91爆操视频| 中文字幕丰满子伦无码专区在线视频最新 | 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 欧美日韩精品一区二区三区高清| 91综合色| 我想要 啊 啊 啊| 久久综合久色欧美综合狠狠 | 国产视频第二页| 97操在线| 久久久久久91香蕉国产| 久久这里都是精品| 亚洲熟妇自偷自拍另欧美| 色综合av男人天堂| A 在线网址| 黑人免费福利视频| 91日韩国产欧美亚洲另类精盘州至城都| 免费久久9999| 91色鬼| 嗯嗯啊操我| 亚洲精品第一| 96久久精品一二三区色欲| 国产丝袜欧美在线视频| 免费视频在线一区二区不卡| 神马麻豆福利院| 国产日韩美女小穴视频网站不卡| 男女性扦B| www.91欧美| 色女99一级片在线观看| 青青草视频这里只有精品| 影音先锋国产精品| 免费精品99| 99热国产| 黄色污污污污污污网站| 国产九九久久久精品| 超踫中文字幕| 中文高清一区二区的| 人妻久久久久久久久久久久久久久| 强奸乱伦av电影| 人人操人人操草草| 99啪啪| 色99在线| 国产乱婷婷精品二区三区| 理论久久婷婷网 8| 熟妇艹鸡八| 伊人久久大香线综合无码| 欧美一区二区在线资源| 成人老鸭窝人人在线视频| 老师充足的奶水小说| 中文字幕少妇色| 日韩国产十八禁| 四虎国产成人精品免费一女五男| 黄呦呦在线| 九九国产热| 四虎在线免费视频| 亚洲人妻日日日| 中文字幕99999| 亚洲无码太久| 欧美特大黄一级片片免费| 91GD.COM| 成年男人的天堂| 亚洲色悠悠久久88| 2017天天拍大香蕉| 影视综合无码少妇| 9999久久久久| 99只有精品| 超碰97人妻自拍| 东京热一区二区中文字幕| 91av一区二区在线观看| wwwcaobibi| 夜夜爽77777| 欧美另类自拍| 91丝袜| 精品久久久久久中文| 伊人91| 久久久久密臀一区二区| 日本加勒比无码专区| 国产一区二区免费福利片| 无码人妻丰满热妇又大又粗| 殴美性色a级欧美| 性爱AV天堂| 先锋女优在线观看视频| 乱伦图av| 高潮内射在线| 97精品一区| 天堂v无码免费视频| 久久av成人无码免费| 99re9在线| 99色在线| 亚洲国产尤物yw在线观看| 九九久久综合| 欧美在线视频播放| 国产美女在线精品免费看| 日韩性爱播放| 天天综合麻豆视频| 成人自拍三级在线观看| 日本有码久久| 精品国产a∨一区天美传媒| 黄色香蕉视频网站一区| 无码免费一区二区三区啪啪| 超碰欧美97资源| 国产三级资源在线观看| 97人人中文网| 成人羞羞视频国产| 极品五月天噜噜| 哈哈操 大香蕉| av无码精品久久久久| 日本不卡高清免v欧美日韩在线观看| 超碰 欧美| 啪啪资源网| 一区二区三区无卡视频在线观看| 日B操| 欧美日韩夜夜| 欧美岛国精品在线观看| 日韩二三区| 国产日韩精品suv| 天天欧美色| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 天天色踪合| 天天干天天干天天干| 黄片qw| 男人女人18禁片免费看网站| 天天欧美色| 久久69| 97爱爱爱综合| 欧美天天射| 92福利社视频| 97香蕉网| 九九久久国产精品| 欧美日韩大黄片| 丝袜美腿校园春色| 国产成人亚洲精品无码古代早漏男 | 97色冈| 国产一级高清免费观看| 国产性刺激| 内射夫妻三片| 色www精品视频在线观看| 中文字幕中文字幕一区二区| 亚洲熟妇白浆无码AV| 天堂种子在线www网资源| 亚洲成人在线乱码色午夜| 五月婷婷综合在线| 国产又粗又大硬免费色网视频| 亚洲AV乱码专区国产噜噜亚洲| 蜜臀无码视频在线观看| 97超视频在线观看| 深夜激情无码| 99久久无码| m欧洲一级午老| 全球成人中文在线| 欧美97在线欧| h色99999| 久久久艹艹艹| 国产三区免费在线观看| 91色婷婷综合久久中文字幕二区| 日韩紧密久久| 人妻精品视频一区二区| 中文字幕三四区| 丁香五月天久久精品视频一区二区三区| 天堂俺去俺来也www久久婷婷| 人人摸人人舔一区二区| 偷窥自拍亚洲色图| 欧美日本国产日韩激情视频| 精品免费囯产一区二区三区| 精品乱子一区二区三区99| 十八禁成人网站在线观看| 97亚洲中文| 亚洲美女30b| 欧美中出1| 网站A V在线| 亚洲做性| 亚洲AV不卡在线观看尤物| 久热91| 最新岛国大片| 我要色综合网| 色哟哟AV| 精品国产99| 天天日天天舔| 大香蕉一线视频| 国产主播福利| 91性情| 色九九综合AV| 亚洲 欧美 另类 日韩 人妻一区| 色婷婷99| 韩国一级做A片免费的| 可以免费看黄片的视频| 亚洲开心网| 蜜区区视频79| 天天热精品| 亚洲情色图片区| 国产欧美第五页| 免费A V在线| 中文字幕交换人妻| 人人摸.人人色| 天天日天天干天天操| 热热色综合网| 一区超碰一区| 久草老司机| 加勒比海成人视频网| 密臀在线免费观看| 日韩紧密久久| 男人天堂站| 亚洲欧洲小说图片视频| 欧美亚州手机在线| 丰满人妻-区二区三区免费| www.99在线| 国产精品99久久久www| 乱伦3P视频| 操逼视频免费日韩无码| 激情视屏国产乱伦强奸| 国产中文字幕曰本毛片| 久久精品国产亚洲AV高级北京| 久久无码一区二区二三区性色| 国产h小视频在线观看免费| 搡老女人老91二区| 91这里只有精品| 超碰97久久| 永久电影三级在线观看| 麻豆视频国产一区二区| 九月丁香婷婷色| 在线免费观看日韩一区| h无码动漫在线观看| 加勒比在线视频一区二区三区| 国产精品久久久久久久毛片1| 亚洲欧美中文一区二区三| 天天干夜夜一操| 五月丁香社区婷婷日韩欧美精品影院| 国产 三级自拍| 久热超碰| 裸模AV女优| 久久久久久久久久久久久久久久9| 亚州男人的天堂| 日韩干B| 人妻欧美| 久久男人精品| 亚洲中文字幕三级在线| 又黑又大又粗 | 亚洲囯产精品女人久久久| 久久av成人无码免费| 69精品人人人人| 日本天堂网| 亚洲啪啪啪啪视香蕉| 老熟女综合网| 18禁在线视频| www欧美性爱| 青青草九九九九九| 亚洲日本天堂| 国产精品九九九| 欧美性生活免费网| 久久一二三四五六七八九区区区| 99青青草国产视频| 伊人性在线视频| 国产亚洲色停停久久99精品91| 操逼操逼视频操逼| 久久天天性久久伊人| 老女人老91妇女老热女| 97欧美超碰| 亚洲一卡2卡3卡4卡乱码网站| 日韩人妻大香蕉| 9999九九九久久久| 26uuu最新| 日本九九九九| 欧美一级专区免费大片| 97色碰| 日本在线激情一区二区三区| 国产成自自拍在线观看| 色香综合| 五月天丁香网| 欧美亚洲宗合色性图| 91少妇人妻| 亚洲精品一区二区三区在线播放| 亚洲乱色视频一区、二区在线| 日本在线15p| 成人性爱AV在线免费观看| 欧美精品第3页| 欧洲自拍第一页| 秋霞久久亚洲精品成人| AV一二区| 爱爱啊啊啊| 亚洲高清无码免费观看视频| 男人的亚洲天堂| 影音先锋每日最新资源在线观看| 人人色97| 亚洲天堂2020| 欧美久热| 五月天婷婷社区| 国产精品免费视频人成| 亚州熟妇精品| 免费观看国产不卡av| 开心六月色| 国产毛片片精品天天看视频| 91婷婷伊人狠人| 欧美综合网A| 九九精品热| 96国产精品| 无码伊人久久大杳蕉中文无码| 九七毛片九九毛片 | 日韩精品操少妇| 亚洲国产91精品一区二区久久| 精品福利视频| 天天射天天操天天干天天吃2018 | 国产精品播放| 欧美亚洲玖玖玖| 亚洲色图欧美激情| 久久久久久久久久久久久久9999| 久久精品一区二区三区四区五区| 91 在线亚洲| 3PAV乱伦视频| 用力操死我| 欧洲亚洲国产综合在线| 亚洲和欧美裸体美女双飞视频| se01国产在线视频| 麻豆黄站| 99热免费| 你懂的在线观看区国产| 久久精9| 在线精品福利免费播放| 97射欧美| 小少妇| 91久久青青草原精品| 99中出在线| 成人自拍三级在线观看| A男人的天堂| 天美麻花大全视频| 美女网站91| 麻豆AV短剧| 国产精品无码在线| 99av| 北京美女一区二区| 超碰人人超在线观看| 成人性交午夜免费片| 蜜色网色哟哟| α√在线| 国产一区二区二区按摩精品啪视频| 色女99一级片在线观看| 中文字幕精品日韩中文字幕| 超碰97COm中文| 97 国产一区| 亚洲啪啪性视频| 国产精品成人AV片免费看网站| 欧美日韩亚洲五月天婷婷| 综合色99| 一级毛片久久久久久久女人18| 亚洲素人综合| 亚洲色图加勒比| 亚洲日本韩国在线| 中文字幕,人妻,日韩| 亚洲,欧美,综合网| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 操逼免费视频无码国产| 亚洲毛片久久| 色天堂在线观看| 色色色色色色色色色色色色色色综合| 国产精品美女在线一区| 9久久久久| 丰满人妻一区二区中文| 九九九九九九亚洲| 在线播放成人网站| 日本激情免费大片| 人妻精品视频一区二区三区| 91熟女视频网| av一区二区三区四区五区久草臀| 日韩啪啪啪啪啪| 国产精品成人蜜臀AV在线| 亚洲无码 国产无码| 黑人性暴力毛片| 亚洲自拍欧美色综合| 素人美腿视频网站| 久久久久久人妻| 成年人性爱日韩| 免费观看国产小粉嫩喷水精品午| 国产精品剧情| 2017,超碰| 天天操熟妇| 97一区二区三区视频| 一区二区三区男女操逼黄色小电影| 亚洲欧美经典一区二区| 嫩草影院在线观看精品 | 精品久久大胆人体| 亚洲 欧美 小说| 99re这里只有精品3| 啊…啊…操我用力操我| 丁香六月综合激情| 久操不卡视频| 果冻国产精品麻豆成人av| 99国产在线 精品 视频| 国产黄色在线播放观看| 日韩综合无码一区久久92| 夫妻天天操岛国视频| 日本三级精品| 日韩精品午夜操呦呦不卡影院| 久久精品人妻一区二区三区| 加勒比综合a∨| 视频在线中文字幕| 超碰在线综合97| 国产高清在线自在拍69| 国产AV线| 色97欧美| 综合 亚洲 欧美| 丝袜亚洲综合| 91精品无码久久久久久久| 久久精品一区二区一8| 亚洲欧美日韩中文播放| 国产无码久久高清| 一起草欧美| 岛国黄色短视频| 国产三区免费在线观看| 探花激情视频| 天天添天天干电影| 久久国产视频专区一二三| 激情图片亚洲色图| 中文字幕人乱码中文字的预防方法| 欧美在线视频播放| 精品久久久一本一道| 狠狠入| 亚洲国产精品无码AV久久| 日日干天天干夜夜爽| 超碰国产精品无码| 操逼网站视频漫画国产| 日本大片日本一区二区免费高清| 性色乱AV一区二区| 成人欧美日超碰| 蜜桃天美传媒AV一区二区三区| 1区2区3区视频| 国产极品粉嫩馒头一线天av| 日韩 欧美 另类 人妻| 中文字幕在线高清男人的天堂 | 99999久久精| 精品无码欧美三级| 婷婷丁香五月天亚洲天堂网| 六月丁香五月婷婷| 久久久久久久久久久999| 人人九九精| 人人么人人操| 亚洲最大网站av| 有码免费观看| 夜夜精品视频一区二区| 日韩欧无码一区二区三区免费不卡| 人妻一二三区| 男人夜色天堂ss| 熟女一区二区三区| 精品对白久久不卡| 国产不卡免费在线视频| 蜜臀av在线播放一区二区三区| 91爱做| 风月影院十八禁| 欧美东京热精品A∨| 欧美最婬乱婬爆婬性视频 | 亚洲另类在线观看| 蜜桃久久久久久久久久久久| 4虎在线观看| 日韩乱伦影音先锋| 日韩熟女精品无码专区一区二区| 啊啊啊男女| 操逼天美3区| 亚洲国产精品乱码在线观看| 中出20p| 高清国产性猛交xxxx乱大交| 乱人伦 国语对白:视频直接看| 成人精品欧洲亚洲| 日韩免费在线观看不卡| 人妻久久久久久| 狠狠做深爱婷婷久久二区| 国产1024在线播放| 丁香激情网| 一区二区三区四区在线不卡| 成人一道本免费视频| 欧美日韩色图片| 就去色综合| 视频分类 国内精品| 日日干男人的天堂| 日欧操屄| 日韩二三区| 懂色aV一区二区天美传媒| 日日爽夜夜爽| 超碰人人干天天射| 午夜高清成人在线视频| 在线情色电影 91大 | 男人的天堂无码| 日韩不卡在线一区二区| 日日日骚女人精品| 在线无码网站| 国产天美传媒精品| 国产操伦| 亚州欧美一区| 国产精品久久久无码AV网站| 青青草字幕AV| 日本无码1| 欧洲亚洲人人爽爽视频| 亚洲va有码在线天堂| 久久同城AV| xxx0国产在线播放| 97欧美色综合| 黄色高清无码无码破解免费暗网| 色综合超碰超| WWW黄片COM| 人人妻人人爽人人精品| 91蜜桃婷婷狠狠久久综合9色| 国产嫩草精品A88AV| 丁香五月天激情综合| 欧美色图亚洲色| 久久发布国产伦子伦精品| 日韩欧无码一区二区三区免费不卡| 成人影 天天操 亚洲| 韩美日操逼| 91丝袜在线视频| 艹比视频国产精品| 色路综合| 性色乱AV一区二区| 色就色综合| 97天天插| 男人的天堂不卡一区二区| 无码不卡亚洲成?人片| 日日骚 av| 黄色网址在线免费观看| 日本熟妇人妻一区二区三区| 婷婷日韩一区二区三区中文字幕在线| 日本久久女同性恋视频| 亚州春色| 岛国成人av在线播放网址| 9久久久久| 诱惑人妻欧美一区在线播放| 亚洲αv一区二区三区| 91N综合网| 中文字幕精品丝袜| 亚洲一卡2卡3卡4卡乱码网站| 国产精品农村妇女精品| 蜜臀在线免费观看在线免费观看| 韩国一级婬片A片无码天美| 亚州五月| 天天日日日射| 在线性黄高清免费视频| 99re9| 亚洲凸凹超碰成人| 国产一区96在线| 日本一级婬片试看三分钟| 国产精品伦理| 久久久18禁| 天天综合色| 韩国一级AAA| 91少妇人妻| 日韩 欧美 国产 麻豆| 日韩精品区二区三区不卡| 伊人久久在线视频观看| 亚洲精品欧洲色| 国产偷人妻精品一区二区在线| 日韩啪啪啪啪啪| 顶级丝袜熟女一区二区三区| 久久男人的天堂| 超碰在线1234区| 成人天天看站长推荐| 婷婷中文字幕| 日韩丰满熟妇| 国产亚洲精品久久久久小| 久久香蕉国产线看观看亚洲女人 | 伊人成人中文字幕久久网| 久久黄色性爱视频| 国产高清自拍视频| 青青草一区二区高清无码视频| av天天在线| 伊人国产av| 蜜桃久久综合视频| 久久性爱城| a天堂视频| 台湾成人无码AV| 青青青国产手线观看视频2| 91精品国产一区三一| 蜜臀在线看片| 天堂亚洲精品久久老牛| 欧美天堂日韩三级国产传媒| 亚洲日韩一区电影| 婷婷亚洲综合| 91干熟女| 九九综合久久| 在线人人人人人人精品超| 人妻中文字幕精品无码| 无码不卡八戒| 夜夜草天天| 秋霞午夜成人福利片片| 色香欲影| 女生91网站| 一起草视频在线| 97视频免费播放| 五月情色天| 伦理第一页| 日韩在线电影| 精品欧美乱码久| 96精品久久| AV中亚| 亚洲欧美日韩偷拍色图| 欧美综合另类| 97操| 翔田千里Av在线| 无码精品久久| av最新免费中文字幕| 亚洲欧美日韩二区视频| 亚洲精品xxx| 强奸乱伦av电影| 岛国精品视频在线观看| 亚洲成人免费在线| 久久久人体| 中文字幕艹艹| 亚洲综合影片| 日本精品性生活久久久| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 欧美精品 - 91爱爱| 国产熟女一区二区丰满| 热久久九九热| 另类专区加勒比| 理论久久婷婷网8| 97精品一区二区三区免费| 欧美爱爱97| 黄片qw| 國產尤物AV尤物在線觀看| 天天插天天操| av中文字幕在线熟女| 久久亚州高清| 嫩草91| 青青在线视频日韩欧美| 亚洲av无码成电影在线播放| 精品一区二区成人| 亚洲色五月| 九九热五区| 女人18精品一区二区三区| 91人人操| 国产黄片精品在线| 免费黄色视频网址| 91色爽欧美| 男人的天堂三级| 欧差乱伦二三| 美女国产一区二区久久| 色嘟嘟人妻天堂网| 在线一区| 超碰欧美97| 亚欧视频在线| 欧美天天插| s片在线观看| 天天干18禁| 超碰在线香蕉| 久久黄色网址| 91碰碰| 富女玩鸭子一级毛片| 国产呦精品一区二区三区下载| 麻豆黄色五月天| 国产天天噜一噜久久久| 日本影视久久免费| 国产在线视视频有精品| 国产夜夜操| www欧美91| 国产成人无码啪| 欧美在线官网| 国产精品另类一区大香蕉| 岛国黄片网站| 综合久久99| 亚洲色图 综合| av一区二区三区不卡| 五月丁香六月激情综合| 狠狠干妹子| 99视频这有这里有精品| 又黄又爽在线观看视频| 无码九九| 少妇人妻太紧太深av| 在现视频女上位好爽| 天天天操天天天爱| 97在线精品观看视频| 青青草在线成人视频| 熟女少妇一区二区三区| 日韩欧美中文日韩欧美色| 久久久久久久久久久久久久久乱码| 欧美色97| 思思热免费视频观看| 大香蕉之青青草原| 久综合国内精品自在自线| 成人精品电影| 综合久久2017| 色久综合| 91亚洲网站| 精品婷婷| 亚洲天堂久久| 综合色啪| 日日摸日日弄日日拍| 久久精品亚洲成a人天堂| 久久草视频污视频| 91在线超高颜值国产| 久久綜合很很很| 日韩极品无码B| 亚洲第一页欧美| 中文字幕高清精品一区| 另类亚洲图色| 人人操,人人插| 日韩懂色网| 欧美亚洲一级在线观看| 欧美色图成人网一区二区 | 亚洲在钱| 国产精品亚洲免费| 欧美草草高清日韩视频| 综合色99| 成人怡红院| 久久人妻四季| 无码操逼视频一下| 国产九区| 欧洲一级性爱视频在线观看| 97亚洲国产| www.zbzhongsen.com| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 黑人无码一区二区| 精品人妻一区二区蜜桃视频| 激情五月天色色网| 欧洲亚洲少妇| 欧美九九99久久精品| 74成人在线| 啊啊啊啊啊啊啊在线| 精品亚洲国产成人AV制服丝袜| 久久婷婷一区| 丝袜AV一二三区| 亚洲乱色熟女一区| 超碰97在线中文| 色色色99| 日韩啊V| 97视频900| 久久性视频| 亚洲性网| 秋霞福利网| 婷婷激情四射| 人人看黄色视频| 91影视亚洲| 欧美性爱五月天| 日韩精品资源专区二区| 老司机午夜福利视频一区二区| 睡产熟女乱伦| 久久AV无码AV| 日韩精彩视频| 高凊专区人人操| 乱伦图一区| 91高潮| 国产视频小说| 东京日日夜夜| 曰韩精品视频一区二区| 欧美激情 一区| 亚洲综合小视频小说在线观看| 天天做日日爱夜夜爽| 久久老女人| 91N综合网在线| 九九九网页| 人妻99p| www久久国产精品| 亚洲双插| 国产25页| 丝袜AV一二三区| 免费伦费视频在线观看| 9久精品| 国产又长又大又粗的视频| 蜜臀亚洲中文| 噜噜噜狠狠色综合| 亚洲啪啪视频一区二区| 大香蕉欧美| 正宗无毛一线天嫩逼| 久久 亚洲 日韩 人妻| 欧美躁死她一区二区| 国产极品美女高潮无套在线观看| 亲子敌伦对白在线播放| 97chaopenrihan| 五月天久久婷婷亚洲 | 日韩成人人妻网站| 91欧美美女日韩国产婷婷| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 亚洲精品亚洲人成在线麻豆| 超碰精品国产无码| 久久久久久久97| 懂色AV网| 天天热精品| 亚洲精品一区二区免费在线观看| 99.色网| 天综合网| 久久精彩视频| 99久久久久| 黄色高清无码无码破解免费暗网| ji熟女.com| 立川理惠被中出无码| 亚洲影视综合| 美女高潮国产高清| 啊啊啊好大好深| 97ai亚洲| 欧美日韩亚洲少妇寂寞影院正在播放| 伊人色综合欧美| 很很很很操| 91在线/欧洲| 天堂资源站| 亚洲综合69| 日日干夜夜欢| 老鸭窝日丰县女人| 男人的天堂久久狠| 国产精品午夜福利视频| 成人十八禁日韩欧美一二三| 91性高| 男人精品天堂一区| 国产女人9999| 呻吟 欧美 日本 中出| 黑人粗大V S日韩女优视频| 国产不良强奸视频免费看| 啪啪视频mP4| 久久久久日本视| 蜜桃精品一区二区三区ww| 久久久噜噜噜久久久| 视频在线观看一二三区| 嗯嗯啊啊操死我| 秋霞男人网| 91真人天天在线| 日韩成人午夜精品久久高潮| 操逼视频色| 亚洲国产麻豆一区二区三区 | 五月激情小说| 久久激情婷婷| 成人热久久精品| 约操熟妇|