欧美成人午夜精品久久久,国产?V天堂一区二区三区,欧美精品va在线观看,亚洲一区二区三区免费在线观看,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
返回資訊列表
被男人添B超爽视频| 亚洲无码99| 丁香色综合| www.天天干| 啄木鸟丝袜美女福利视频| 91精品综合久久婷婷九色| 26uuu欧美| 97碰碰视频| 电影《战争与艾拉》免费观看| www99xxxx五月丁| 97超碰综合| www.婷婷激情网.com| 涩五月婷婷| 久久这里只有国产| 日韩无码专区| 日韩欧洲亚洲| 五月丁香成人| 丁香六月婷婷久久高清| 日本天堂免费99| 免费无码毛片一区二区A片| 丁香五月天堂网| 国产AV一区二区三区日韩| 夜色综合网| 狠狠草综合网| 五月天五月天激情网| 99色在线视频观看| 色噜噜狠狠色综| 久久9热综合| 大战熟女丰满人妻AV| 狼友超碰| 99热这里只有精品16| 九九精品视频在线观看| 99热这里只有精品国产首页| 终合激情网| 久久五月天黄色五月天色网址| 亚洲精品亚洲人成人网| 91碰碰| 色色哒五月婷婷六月丁香| 天天做综合| 五月停停色色丁香| 高清无码.com| 狠色狠色狠色狠色狠色网| 久久色天堂| 91丁香五月| 亚洲色图日韩网址| 色婷婷亚洲| 久久婷网| 影音先锋女人av鲁色资源网小说免费| 深爱开心五月天| 五月久久噜噜| 婷婷综合爱| 亚洲狠狠狠| 丁香社区婷婷五月| 可以看的AV| www.深爱激情| 色综合久久久久| 99久在线精品99re5热视频| 99热99这里只有精品| 色五月亚洲开心网| 激情五月婷黄版| 91操在线视频| 国产FREESEXVIDEOS性中国| 熟女激情网| 日本色噜| 嫩草乱码一区三区四区| 棕合影院色色| 免费无码毛片一区二区A片| 无码人妻少妇色欲AV一区二区| 九九亚洲视频| 中文字幕在线不卡视频| 97狠狠色| 这里只有精彩视| 丁香六月婷婷综合在线| 狠狠久久婷五月| 51国精产品自偷自偷综合| 天天插综合| 超碰精品在线| 日韩AV中文字幕在线| 91在线日本| 九洲一级A片| 丁香九九九九| 六月丁AV| 亚洲精品又粗又大又爽A片| 中文字幕日产A片在线看| 性按摩玩人妻HD中文字幕| 婷婷色狠狠| 五月丁香啪啪综合| 激情六月婷| 大香蕉啪啪啪| 日日操天天| 婷婷五月天堂| 亚洲无码免费看| 99热99美国在线观看| 人妻自慰在线| 99热精品观看| 色婷婷丁香AV综合| 草操网| 五月婷婷中文字幕| 中文字幕无码人妻少妇免费视频| 高清不卡一区| 五月天激情视频| 免费精品99| 91久久国产自产拍夜夜91久久精品文字>91麻豆精品国产 | 韩国天天婷婷| 麻豆观看夏晴子| 久Se视频在线观看| 丁香涩涩爱| AV在线观看网站| 97操操网| 人妻videos人妻高清| 夜丁香综合| 色狠狠色| 这里只有精品免费视频| 成人一区在线观看| 色婷婷五月天堂资源| 色呦呦美女| 3p九色在线| 亚洲AV免费在线| 五月丁香婷婷激情澎湃四射| 草了bav视频在线观看| 成人av在线网站| 国产裸舞表演WWWW| 婷婷色色欧美综合网| 91丨九色丨熟女|老版| 午夜不卡成人一区二区| 久久久久人妻| 色婷婷五月天天天天天天天天天| 激情五月天色播| 一二区成人电影| jiqingliuyuetian| 婷婷丁香五月天色色| 五月婷婷综合网在线播放| 欧美久久婷婷| 99啪啪| 超碰成人av| av操B网站| .操區COm| 操B视频在线播放| 丁香桃色网| 丁香五月婷婷狠狠色| 任你爽精品免费视频6| 亚洲无码99| 亚洲无码成人| 99爱这里只有精品免费视频| 91超级碰| 五月婷婷激情| 五月天播播综合| 老司机日日夜夜青草| 婷婷五月天网址| 亚洲第一综合| 97婷婷狠狠| 婷婷六月激情| 色婷婷综合久久久久| 六月份天丁香婷婷| 丁香五月天啪啪| 色99在线| 精品福利911| 中文字幕无码人妻少妇免费视频| 色婷婷综合网站| 久久综合婷婷激情| 九九精品热| 国产精品岛国片在线观看免费| 色五XX| 无码一级片| 五月丁六月香| 在线中文字幕视频| 专区无日本视频高清8| 五月天国产成人| 97色碰| 天天天天天天天干| 色八戒操婷婷| 亚洲色综合| 超碰免费人人| 亚洲丁香五月| 黄色精品五月婷婷| 中文字幕无码人妻少妇免费视频 | 99只有精品| 狼人婷婷综合| 亚洲乱码日产精品BD| 六月天六月婷| 九色91国产| 久久这里只有精品99| 亚洲激情丁香五月天色| 午夜福利成人AV91| 这里有精品| 久久五月婷综合网| 久久精品99久久| 思思热视频在线| 激情婷婷人妻| av在线播放网址| 五月天激情电影| 丁香桃色综合网| 日韩精品在线观看9| 五月综合婷婷五月| 免费色色色| 香蕉曰比| 久久久久人妻| 九九精品综合| WWW,婷婷,COM| 久色姿源| 97人人射| 婷婷五月丁香欧洲| 国产精女同一区二区三区久| 亚洲精品99| 激情性爱五月天网页| www.9797国产| 激情综合网激情五月丁香| 中美月韩免费A片| 国外亚洲成AV人片在线观看| 99自拍视频在线| 欧美va| 五月丁香色婷婷色| 九九99偷拍视频| 操碰91| 天天做天天爱综合| 五月婷婷综合色拍| 91蜜桃婷婷狠狠久久综合9色| 大香蕉福利导航| 丁香六月情| www99热| 激情综合网之激情五月| 五月天激情小说| 字母不卡码人逼| 婷婷亚洲天堂| 色999亚洲人成色| 饮料下药迷倒漂亮女同事强干| 婷婷天天舔| 久久婷婷五月天蜜桃| 婷婷视频在线碰| 婷婷五月情| 日韩AAAAAAAAAAA片| 婷婷丁香77777| 成人婷99最新| 激情五月综合网最新| 婷婷五月天性爱视频| 五月丁香啪啪啪| 99九九玖玖| 青青草原99热| 天天狠狠干| 五月激情婷婷色| 99久久婷婷| 综合激情在线视频| 五月丁香偷拍| 丁香五月婷婷偷拍| www,超碰| 在线中文字幕视频| 色一情一乱一乱一区91Av| www.五月丁香| 女同激情久久av久久| 99精品视频免费观看| 天天操天天爱天天玩| er99免费视频在线| 思思久久青草热| 激情综合激情五月| 天天干天天色天天干| 精品九九在线观看视频| 天天狠狠插| 激情五月婷婷免费视频| 亚洲狠狠狠色婷婷综合激情久久久| 99re思思| 九九久久视频| 欧美影院| 亚洲综合色婷婷| 久久婷婷五月综合| 国产3p露脸普通话对白| 91黄色五月天视频| 色五月大| 亚洲精品色色| 五月婷六月天| 丁香激情五月天| 久99视频在线观看| 丁香五月社区| 991自拍视频| 五月婷六月| 五月天婷婷影院影院观看| 日日夜夜爽| 婷婷五月天天爽| 超碰人人艹| a在线观看| 无遮挡国产高潮视频免费观看| 无码 av电影| 香蕉曰比| 超碰在线99| 国产成人VA| 五月丁香基地| 久久激情网| 久久九九99| 大香蕉五月婷婷丁香| 啪啪视频99| 日韩欧美成人片| 九九综合视频在线观看| 亚洲欧州色情在线观看| 色色色欧美| 午夜天堂一区人妻| 九九狠狠干| 都市激情蜜桃婷婷五月天| 婷婷六月激情丁香| 国产成人AV在线| 熟女人妻视频| 色色综合网站| 五月婷婷av| 色色99| 亚洲日韩久久婷婷伊人| 久九色| 美女久久天堂| 99久久久99久久91熟女| 亚洲日日日| 亚洲天天操| 9999热在线| 性爱综合网| 五月好婷婷| 久热九九| 九九99热久久精品66中文字幕| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 天天操天天曰| 大香蕉人人网| 婷婷四色五月| 色婷婷在线视频| 99热很操老逼| 九九热视频思思| 久久99热这里只有精品| 色五月婷婷综合在线| 99在线观看视频精品| 激情五月婷婷视频一区二区三区| 色五月丁香五| 人人添人人| 精品婷婷| 久久九九爽| ji'qi'luan'ren'lun| 99色在线| 五月色视频| www热久久yy9| 国产激情在线| www.久久色.com| 国产永久一二一起草| 少妇综合网| 久久国产成人9999久久久久| 日逼免费视频| 99热热热99精品丁香| 夜夜 操无码| 五月天婷婷成人| 玖玖色综合色| 激情亚洲婷婷六月| 人妻内射一区二区在线视频| 天天肏天天插| 午夜天堂一区人妻| 婷婷六月插屄激情| 五月天婷a在线| 五月丁香激情五月天| 丁香激情久久| 天天插天天玩天天干| 色五月五月婷婷| 99色日本| 欧美综合五月丁香六月婷| 91久久精品视频| 性天天中文网| 色婷婷色| 综合五月婷婷| 婷婷五月天视| 日韩AV免费看| 色婷婷狠狠干芒果TV| 色情终和网| 激情激情激情网| 五月婷婷香蕉视频| 99这里只有| 丁香婷婷久久综合在线| 五月丁香激情综合| 丁香婷婷九月| 久久久久婷婷| 色六月天| 色五月天丁香婷婷色| 夜夜爽天天爽| 五月份婷婷| 久久精品人妻| www.五月丁香av| 激情电影五月婷婷| 丁香六月狠狠干| 色婷婷综合久久久久| 色婷婷99| 久8色色| 成人AV综合在线| 超碰国产AV| 91精品久久久久久77777| 亚洲操操| 婷婷激情啪啪| 亚洲成人无码网站| www色色色com| 开心五月天激情网站| 人人妻人人澡人人爽| 啪啪激情综合| 亚洲精品性色| 婷婷99中文字幕| 综合五月天| 国产美女精品| 丁香激情网| 丁香婷婷综合激情五月色| 婷婷五月天亚洲图片| 亚洲另类AV| 九九色综合| 丁香五月激情性色郤| 91久久国产综合久久| 婷婷激情在线| 免费播放99性爱视频| 夜夜久久综合网| 色播五月丁香| 夜色综合网| 99这里有精品免费| 操操日韩| 国产成人AV不卡| 99热一区| 综合五月激情| 性五月激情| 丝雨一区二区| 九月丁香| 婷婷综合色色| 26uuu在线观看| 丁香六月婷婷开心| 香蕉视频91| 色一色综合| 人妻精品在线| 天天骑天天操| 天天色综合网吨吧| 婷婷丁香五月天婷婷| 久久婷婷大香蕉| 欧美日韩99| 日本99在线| 99热99这里免费的精品| 思思99精品视频在线观看| 亚洲第一av| 777米奇影视第四色| 婷婷的色色五月天| 五月激情婷婷丁香天堂| 色性日本| 五月婷婷中文网| www.五月婷婷.com| 啪精品| 亚洲激情四谢| 亚洲亚洲人成综合网络| 天天爽夜夜操| 97福利视频| 五月丁香久人妻中文| 久久久五月婷婷| 人人干天天舔| 思思久久99热| 丁香九月综合| 久思思热视频在线观看| 久久99精品九九久久久婷婷| 久99视频在线观看| 玖玖午夜视频| 综合99久久| 日韩操女| 成人av在线网址| 99啪啪骑| 九九色大香蕉| 日韩久久视频| 99视频精品全部免费看| wwwss在线观看| 五月婷婷激情性爱| 色综合com| 99精品视频偷拍| 九九色之九九色之88| 9一精品视频观看| 亚洲情欲久久| 蜜桃婷婷狠狠久久综合| 日本三级网址| 超碰人人干| 日本久久高清| 色五月婷婷狠狠撸| 婷婷六月丁香色| 国产欧美婷婷五月| 播五月丁香六月| 色婷婷五月天视频在线| 色婷五月天| 91人操人人人操人| 天天色天天| 五月色网| 色情激情五月婷婷| 五月天社区婷婷丁香社区| 综合性爱网| 丁香婷婷六月天| 五月丁香综合激情| 五月天六月天| 色五月天综合网| 婷婷内射视频在线| 亚洲综合色婷婷| 亚洲深喉aV| 琪琪狠狠干| 色婷婷丁香社综合| 五月天婷婷色| 婷婷涩五月天综合| 99精品一二三四视频| 啪啪啪综合网| 婷婷五月丁香第四色超碰在线| 丁香五夜激情四射夜夜夜| 日本视频欧美观看免费| 丁香五月天堂网| 五月婷婷香蕉| 天天爽天天| 婷婷五月天激情小说| 99精品视频在线观看| 久久国产一区二区三区| 五月丁香婷婷激情四射迷人| 黄色99视频| 五月丁香另类网| www.91婷婷| 中文字幕日产A片在线看| 99热伊人综合| 丁香六月婷婷五月天| 开心综合激情综合| 亚洲另类在线观看| 亚洲人人艹| 久久人妻久久久久| 五月丁香久久| 五月婷婷丁香日韩在线| 五月天激情四射| 综合网五月天123| Av大香蕉| 亚洲av网址| 丁香香五月激情免费视频| 久久久久久五月天| 亚洲色五月| 激情五月色综合网| 99热这里只有精品 搜| 在线观看亚洲视频影院| 狠狠久久婷五月综合色| 热久久这里只有精品| 天天开心AV色综合婷婷五月天| 五月天婷婷丁香人人操91| 九色PORNY9l原创自拍| 色婷婷九月| 欧美一级a| 综合网色| 九热免费视频| www,99色| 亚洲无码九九| 精品久久久91久久影视网| 婷婷五月网图片区| 五月丁香六月婷婷视频| 激情五月综合网| 99精品久久久| 日日夜夜干| 婷婷丁香成人色综合| 我爱大香蕉| 精品久久这里热66| 1囯产午夜仑鲁鲁| 天天天添天天操| 婷婷伊人五月天| 婷婷五月精品中文字幕| 国产婷婷色综合AV蜜臀AV| 国产又黄又爽又色的免费| 超碰成人在线观看| 五月婷中文字幕| 亚洲免费视频网站| 色五月丁香网| 久久38视频| 五月丁香六月婷婷手机无线| 少妇性BBB搡BBB爽爽爽视頻| 日日夜夜青青草| 五月天综合网| 乱码操操| 丁香五月婷婷亚洲人| 成人 视频免费观看网站| 热婷婷av| 99热这里精品| 五月丁香五月丁香五月丁香五月丁香91| 亚洲综合婷婷六月丁香五月| 亞洲自怕| 欧美丁香婷婷五月| 2020日日干| 色婷婷五月综合| 综合精品99| 亚洲日日日| 在线成人av播放| 79精品视频在线观看,| 大香蕉伊然在亚洲90| 伊人午夜综合色啪| 成人午夜在线视频| 日本激情91| 91丨九色丨高潮丰满日本| 久久久五月五丁香| 狠狠干狠狠色| .精品久久久麻豆国产精品| 婷婷五月天国产手机在线视频观看| 99久久九九| 狠狠五月丁香色婷| 久久ri精品| 丁香五月婷婷高清| 色欲一区二区三区精品A片| 五月情涩综合婷婷| 亚洲中文字幕网| 久久机热这里只有精品免费视频| 99国产精品久久久久久久久久久| 亚美欧色影院| 丁香五月婷婷亚洲综合精品| 99热精品免费| 丁香五月综合网亚洲综合欧美狠狠| 96色婷婷| 九色视频91| www,婷婷五月天777me,com| 99久| 九热视频在线精品15| 狠狠香蕉| 九九九激情网| 综合另类视频| 99热这里有精品24| 丁香五月天天| 亚洲日韩一页精品发布| 天天天综合网| 日本女天天爽| 婷婷色基地在线看 | 人人操人人爱丁香五月| 久99在线视频| 青青草大香| 丁香五月激情网| 久久这有这里精品| 婷婷久久图片| 欧美韩国日本| 91玖玖| 亚州日本欧州韩美高青高潮一| 蜜臀99久久精品久久久久| 激情五月天在线视频| 日韩色情亚洲五月天婷婷| 综合另类视频| 丁香激情五月天| 色五月成人| 无码任你操| 青青操avbb| 五月天综合久久丁香91| 97人碰人操| 天天操比比| www.婷婷五月| www.激情五月天com| 精品激情| 久久久久激情网| 丁香婷婷欧美综合| 99综合网| 婷婷五月激情网| 久久久久久久久人妻| 99在线观看视频蜜臀| 超碰免费大香蕉| 五月丁香婷婷激情爱爱| 在线看的免费网站| 开心五月婷婷| 午夜丁香婷婷| 久久激情五月天| 五月婷婷说| 色欲香综合网| 99热99热在线观看| 欧美黑人大吊| 免费黄色片子| 亚洲精品99| 91疯狂操操操操| 日本在线观看aaa 99| 7EzOBIhNq85TO| 97av在线视频| 亚洲1区| 婷婷婷婷婷婷婷五月丁香| 色情成人五月天| 91精品综合久久久久久五月丁香 | 九九色综合| 婷婷五月天色色| 天天综合五月| 六月婷久久| 久久精品系列| 伊人狠狠丁香婷婷综合尤物| 99超级碰碰| 日韩99视频| 97超碰在线免费观看| 亚洲婷婷欧美婷婷| 久久综合影院| 丁香啪啪| 91超级碰| 国产黄大片在线观看画质优化| 99国产精品久久久久久久久久久| 天天操天天操综合| 亚洲久久婷婷丁香五月天| 情欲综合网| 熟女五月天久久综合| 五月情综合| 色大综合| 五月天激情无码| 色香欲综合| 91se在线观看| 丁香五月婷婷激情中文| 丁香九月婷婷色| 天天综合网网欲色| 天天插天天插天天插天天插| 超级碰碰91| 9热视频在线观看| 99色热视频| 开心激情婷婷| 中文字幕人妻熟女在线| 日本三级99人妇网站| 丁香六月婷婷色XXXX| 亚洲av综合在线| 91在线人| 五月婷婷激情网| 日韩色色网| 婷婷丁香成人网址| 九九久久网| 狠狠爱婷婷爱| 天天天天干| 欧美大香蕉视频| 99操逼| 免费无码毛片一区二区A片| 色综合久久久无码中文字幕999| 日韩人妻AV在线| 激情五月天第四色| 色婷婷A| 情欲综合网| 久久99美女精彩视频| 日韩另类在线观看| 久草热在线视频| 久久婷婷五月综合色丁香花| 婷婷色五月天色色| www.henhenl| 激情五月天激情网| 伍月婷婷六月丁香| 99热老司机| 97人人草| 99九九玖玖| site:hcxsz888.com| 日日夜夜小色哥| 91无码高清| 99燥99日| 超碰99久久| 五月婷六月天| 99视频九九热| 日本熟女内射| 五月天久久婷婷| 五月婷婷丁香日韩在线| 天天搡日日搡aaaaⅩ| 亚洲狠狠狠色婷婷综合激情久久久| 午夜做爱影院| 伊人无码高清| 色情婷| 狠狠五月天婷婷激情网。| 26uuu丁香婷婷五月| 中文av网| 九九热在线视频观看免费10| 午夜一区| 狠狠干在线| 国产AV一区二区三区最新精品| 丁香婷婷91在线观看视频| 玖玖99福利| 婷婷激情综合| 99九九这里有免费视频| 天天色天天爽| 日日夜夜天天| 日韩AV成人电影| 五月丁香A片| 久艹大香蕉| 五月久久综合| 先锋资源996| 丁香五月激情网| 丁香综合日产精品久久| 久热这里这里有精品| 五月婷婷激情| 综合久久综合综合| 激情综合婷婷| 少妇搡BBBB搡BBB搡毛茸茸| 色婷婷19| 六月丁香激情网| 中国女人做爰A片| 免费观看高清无码| www.亚洲激情| 婷婷五月六月丁香| 婷婷五月天综合激情| 色五月婷婷91| 激情综合在线播放| 欧美色骚婷婷五月天| 99在线精品视频| caop在线| 久久97| 91超级碰在线| 99视频35精品视频在线观看| 欧美在线视频9| 六月丁香色婷婷| 婷婷欠久少妇| 婷婷五月色網站| 中字幕视频在线永久在线观看免费| 六月丁婷婷| 婷婷五月天影院| 天天日天天插天天操| 97人人操人人| 激情网站五月| 五月丁香网站| 影音先锋一区二区三区| 五月婷婷免费在线视频| 91高潮喷水久久久久久久久| 99国产视频网| 天堂亚洲 在线| 超碰资源在线| 在线你懂的亚洲欧| 亚洲精品视频在线| 婷婷五月天综合激情| 深爱五月激情| 国产乱码久久| 黄网在线免费| 成人精品99| 婷婷五月天午夜激情影院| 俺去也综合| 97资源碰碰| 欧美色五月| 五月婷婷播| 香蕉AV777XXX色综合一区| 五月天黄色激情小说| 婷婷色资源| 狠狠色97| 五月丁香久久精品在线观看| ..真实国产乱子伦对白在线_欧| 国产性色蜜乳| 光棍影院日韩精品| 中文字幕综合网| 天天综合.com| 嫩草免费视频| 亚洲色图五月丁香| 色婷婷久久| 琪琪色综合网站| 99国产这里只有精品| 色九九中文字幕| 天天爱天天做天天操| 亚洲操逼网| 欧美内射AAAAAAXXXXX| 激情五月天小说| 久久伦乱| 欧美色片中文字幕久久久久| www.久久66| 五月亭亭欧美女人| 色色婷婷丁香| 伊人狠狠狠综合| 色欲色香,www,com| 五月婷婷丁香| 丁香狠狠| 久久九九re热| 亚洲欧洲中文日韩久久AV乱码| 婷婷丁香在线播放| 日日骑夜夜撸| 五月婷婷久久爱| 丁香五月婷婷啪啪啪| 色五月丁香一区在线| 真实熟女-91九色| 色五月综合激情| 欧美性爱特黄一级aaaassss| 久操人| 99亚洲精品| 99在线小视频| 【乱子伦】黄色| 久久五月婷综合网| 国产欧美熟妇另类久久久| 婷婷五月天综合久久| 中文字幕+乱码+中文字幕在线观看| 9 7总站超级碰免费视频| 丁香五月香蕉| 国精产品久久| oumeisesewang| 九九色婷婷Av| 高清无码视频网址| 丁香五月成人婷婷| 国熟女视频| 九九热这里只有精品556| 狠狠爱五月婷婷综合六月| 79精品视频在线观看,| 婷婷色五月综合| 色九月激情综合网| 超碰91在线| 99色.com| 99国产精品久久久久久久久久久| av在线中文| 丁香五月六月综合欧美| 中文久久久人妻| 超碰成人免费| 3p久久| 91人人看| 亚洲亚洲人成综合网络| 色婷婷电影| 六月丁香婷婷综合在线| 99热这里只有精品一| 综合久久婷婷| 超碰99在线观看| 操人视频91| 五月激情婷婷偷拍| 午夜69成人做爰视频| 五月丁香婷婷成人网| 婷婷成人视频| 九九这里都是精品| 色婷婷视频在线| wwwC0maV五月花| 五月婷在线视频免费播放| 美女va| 亚洲成人色五月婷婷综合| 香蕉乱插| 香蕉中文在线| 大香av| 欧美成人日韩| 色色五月天丁香婷婷| 亚洲乱啪| 六月丁香六月婷婷欧美| 97成人超碰免| 久久182| 久久精品系列| 婷婷六月综合基地| 色五月五月婷婷| 91精品久久久久久综合五月天| 狠狠干狠狠干| 天天插天天爽| 99热这里有精品| 亚洲激情五月| 久色网| 久久久久亚洲AV综合| 久久在线视频免费观看| 午夜精品人妻无码一区二区三区| 人妻少妇色综合| 五月天婷婷色| 欧美三级巜人妻互换| www.色五月| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 日本人妻A片成人免费看片| 香蕉狠狠爱视频| 99在线热| 91久热| 99热草草| 综合色婷婷| 综合久久97| 色五月婷婷基地| 99精品在线观看| 26uuu欧美亚洲日韩| 深爱激情av| 婷婷丁香亚洲色综合91| 日本久久天堂| 色色色五月天婷婷| 97九色视频| 精品乱码视频| 丁香五月五婷| 99亚洲视频| 天天爽天天| 亚洲成av人影院| 97操碰在线97| 成人五月天丁香婷| 天天激情5月天亚洲| 国产99精品免费视频| 九九视频热| 高清无码入口| 精品夜夜澡人妻无码AV| 成人性生活免费观看。| 五月婷婷色播| 激情丁香淫荡婷婷| 丁香六月成人| 91超碰九色| 亚洲精品V天堂中文字幕| 日本天堂网站99| 人妻AV在线观看| 婷婷色5月天在线。| 五月丁香龟婷婷| 丁香五月Av| 亚洲激情AV| 热99热久| 日本精品在线噜噜噜| 精品草原久久视频| 五月婷婷色影院| 国产亚洲精品久久久久久牛牛| 9伊人网| 五月天久久综合| 丁香五月婷婷激情123| 99热这里只有精品9| 色婷婷丁香五月| 99久久97久久欧美综合网| 日本天天综合| 超碰精品在线| 啪啪五月综合| 亚洲激情99| 久久婷婷五月综合| 疯狂做受XXXX高潮A片| 强伦轩人妻一区二区电影| 亚洲艹网| 婷婷五月丁香六月天亚洲综合| 任你搞网站| 丁香五月天久久| 97久久视频| 九九久热| 夜精品无码A片一区二区蜜桃| 999热在线视频| av中文网站| 91久久99久久91熟女精品| 91窝窝| 91dy.av| 色婷五月天| 色五月激情综合网站| 九九99视频精品| 婷婷五月天网址| 在线精品97| 婷婷久久网| 182TV大香蕉| 欧美日韩成人综合9| 五月天激情偷拍| 综合色播| av电影在线播放| 天天爽天天爽夜夜爽| 99re这里| 99A级片| 五月婷婷深深爱| 成人免费120分钟啪啪| 深爱五月综合网| 99在线精品视频| 日本不卡中文字幕| 五月天久久综合| 丁香五月婷婷综合91| 五月丁香婷婷人体| 青青草大香| 激情五月天丁香| 在线日韩视频| 青草网在线观看| 婷婷天堂综合| aⅤ79成人片| 五月丁香六月欧美综合网站| 在线日本www| www.五月.com| 嫩草视频。| 丁香五月,激情五月,深爱五月| 丁香五月婷婷图片综合| 婷婷五月丁香高清无码| 97色婷婷| 狼人久草| 极品人妻VideOssS人妻| 婷婷激情五月天综合| 97色色色| 日日日,com| 色色激情五月| 大香蕉久久草| 夜色综合网| 激情爱爱网站超大免费| 日韩99视频| 丁香五月综合激情啪啪| 婷婷欧美综合| 亚洲狠狠婷婷| 九九大香蕉黄色影院| 色综合香蕉| 91要啪| 成人看片网站| 中文字幕在线免费观看视频| 99热这里只有精品国产免费| 激情都市另类| 久99热| 久久机热探花| 五月丁香激情啪啪| 天天爽天天爽天天爽天天爽天天爽| 六月天婷婷| 操熟女成人网| 婷婷综合中文| 五月天另类视频| 玖色色综合| 久青操| 国产韩日亚洲美州欧亚综合在线| 丁香激情网| 五月丁香色婷婷基地| WWW久久99久久99久久| 26uuu| 亚洲无码另类| 99精品国产在热久久| 丁香五月色播中文在线播放| 三日本无码| 久久99综合网| 丁香六月婷婷一区| 激情婷婷五月在线合集| 天天干,天天日| 久久大香蕉| 久久婷五月| aaa日韩| 亚洲成人中心| 欧洲电影在线观看免费版英语版| 成人色情五月天婷婷丁香| 91免费啪视频| 五月激情小说| 丁香六月婷婷综合色| 在线视频婷婷| 久久综合爱| 综合激情五月丁香9999久久精| 9九九久久精品无码专区| 中文无码婷婷| 亚洲99在线视频| 久青操| 国产av网| 五月天伊人久久久久| 天天玩天天摸| 超碰在线99热| 六月丁香激情网| 俺去也在线视频| 五月久久五月激情| 色综合色综合色综合| 色色a| 五月婷婷六月色| 色爱综合视频| 五月丁香六月婷婷成人| 在线观看日韩12345区| 在线99热| 五月婷婷,六月丁香| 激情综合激情五月| 久99热在线观看| 九色综合网| 午夜婷婷| 任你搞网站| 丁香五月天BBw| 美女丁香五月天| 啪啪操超碰| 九九爱激情| 九九色色| 99久.| 色五月婷婷影院| 这里只有精品视频国产| 日本高清久| 精品九九九久| 99在线免费观看| AV在线资源| 丁香五月色| 五月丁香六月婷婷在线播放| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 六月丁香花婷婷| 色综合色色色色| 五月婷婷亚洲色图| 秋霞九九无码| 无码激情AAAAA片-区区| 亚洲天堂热| 亚洲九九视频| ww久久| 久久人人超| www.99热视频| 国产毛片精品一区二区色欲黄A片| 成人婷婷五月| 99色1| 翔田千里aV中文字幕| 婷婷色五月丁香六月欧美啪| 婷婷五月天Av| 五月丁香五月丁香五月丁香五月丁香91| 夜夜干 夜夜操| 欧美丁香婷婷五月| 97久久久| 天天日,天天插| 亚洲VA在线| 激情婷婷狠狠干| 人人操超踫| 激情五月网站| 婷婷永久在线| 久久xx| 亚洲天堂无码| 久99久在线观看| 97人人爱人人操| 99超碰人人| 99视频在线啪| 色月丁| 操操国产| 日本三级中国三级99| 91九色国产熟女| 6月丁香婷婷| 91丨九色丨首页| 性爱激情综合网| 九色在线观看91av| 久久东京热婷婷五月| 97操碰视频| 人人操Av| 天天天天爽爽天干| 婷婷成人网五月天| 99精品无码| 亚洲色无码A片一区二区麻豆| 色逼综合网| 丁香深五月婷婷| 久久综合丁香| 日日噜狠狠色综| 日本久久精品| 天天日天天干天天爱| 五月丁香婷婷人体| 色色色.COM| 色天五月天在线观看视频| 综合色情网| 丁香六月五月天| 欧美肉大捧一进一出免费视频| 国产成人精品一区二三区熟女在线| 亚洲欧洲美女在线观| 日本欧美999久久久三级片| A1片久久| WWW色五月天| 欧美色色色| 91碰| 亚洲AV免费在线| 操老逼综合网| 五月丁香婷婷综合网色欲| 婷婷久久内射| 99热思思久| 亚洲99视频| 色播婷婷大香蕉| 99久久99九九99九九九| 国产在线aaa片一区二区99| 综合五月丁香六月婷婷| 色色亚洲无码| 狠狠干五月丁香综合网| www.99久| www.金莲av| 婷婷五月激情在线| 婷婷激情综合网| 99热精品在线免费观看| 99热这里是精品| 日韩啪图| 激情五月天在线观看色婷婷| 色爱亚洲| 香蕉久久国产AV一区二区| 五月天激情美女久久| 激情婷婷九月| www.五月丁香av| 99热只有| 国产SUV精品一区二区883| 亚洲色A| 97干在线看| 久久婷婷视频| 久久久精品人妻| 欧美日韩91| 玖玖婷婷五月| 96精品久久久久久久久| 日韩精品无码AV| 日日操,天天操| 国产精品久久久久久五月天加勒比| 婷婷99狠狠躁天天躁中| 国产成人精品一区二三区熟女在线| 另类视在线| 停停五月色宗合| 久久久久亚洲AV无码网影音先锋| 婷婷五月天久久| 欧美综合五月丁香六月婷| 有码一区二区三区| 免费AV播放| 激情av| 665566 无码| www九九| 婷婷五月天欧美| 成人无码髙潮喷水A片| 五月婷婷色影院| 色八月婷婷| www.五月天婷婷| 亚洲第一成人无码A片| 丁香婷婷综合精品六月初| 丁香五月无码| 色综合激情| 五月天婷婷操逼视频| 亚洲综合激情五月久久| 日韩黄在免| 色五月色图| 色色色在线观看| 婷婷九月丁香中文| 色区域网站视频| 伊人色综合网| 婷婷久草| www.色综合.com| 91ncm视频| 久久天天| 色色色天堂网| 婷婷五月天电影在线| 伊人喵咪a V| www好屌操| 99热这里只有精品8| 婷婷综合五月天| 99久久激情视频| 五月天AV大香蕉| 涩涩涩五月天| 久久99草五月婷婷| 国产精品热搜丁香五月婷婷| 五月婷久草| 99在线免费视| 九九RE视频在线精品|