欧美成人午夜精品久久久,国产?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
返回資訊列表
五月丁香综合| 久久99jiu9| 区区欧美你爱| 激情六月丁香综合| 五月婷婷啪啪啪| 天天插天天插| 色综合激情| 九九蜜臀精品| 婷婷综合色| 超碰狠狠干99| 色婷婷色99国产综合精品| 美女要搞搞天天搞搞搞网站| 国产精品99久久久久久猫咪| www.cao.com久久| 日本色色图| 五月综合缴情网| 百度4399有码精品V在线观看| 九九在线视频| 久草A片| 五月天色五月天| 爆乳熟女一区二区三区爆乳 | av五月丁香| 久久九九国产精品怡红院| 天天日狠狠| 久久婷网| 人人妻人人澡人人爽| 99热久久这里只有精品| 中文字幕在线日亚州9| 色五月欧美| 国产欧美婷婷五月| 丁香五月色色色色| 五月天无码| 五月丁香久久呀| 亚洲成人网址在线观看| 激情色五月天| 久久久久久五月天| 婷婷五月色综合香五月| 91大屁股在线| www.久操| 99色热综合| 久色网址| 五月婷av| 日日夜夜干| 97九色视频| 亚洲九九九九| 99亚洲色| 91色情播放| 精品久久久久久久久久久久人妻| 草婷婷在线| 久久久婷婷| 九九综合网色全集| 日本久久人人| 淫视馆aV二区一区| 丁香五月欧美色综合| 久久久久五月丁香| 亚州综合色| 婷婷色五月天色| 91刘玥视频在线观看| 91婷婷视频| 国产亚洲精品久久久久苍井松| 亚洲综合另类| 玖玖在线视频| 亚洲乱码日产精品BD| 五月丁香啪啪网| 日韩成人中文字幕| 精品久热| 久久五月天影院| 亚洲第一成人无码A片| 大地资源色婷婷视频在线| 99热在线播放| 久婷婷视平| 亚洲无码影音| 狠狠色大香蕉| 五月丁香猫咪久久婷婷综合视频激情四射网入口 | 国内久久婷婷| 婷婷中文字幕网| 色99免费视频中文| 色伊人啪| 99人碰碰碰| 免费亚洲婷婷中文字幕| 久久杏爱视频| 国产精品VA在线| www.日日夜夜.com| 99热在线成人网站| 丁香九九九九| 免费视频WWW在线观看网站| 丁香婷婷久久| 六月成人网| 黄网在线观看免费| 欧美在线干| 伊人在线视频| 国产性爱一级| 99热精品10| 99这里只有精品视频免费| 婷婷丁香五月av| 丁香六月 婷婷六月| 婷婷五月天亚洲天堂| 这里只有精品久| 淑女丝袜bi操逼123| 五月婷婷开心亚州在线| 97人人干人人操| 午夜天堂啪啪| 91人碰| 伊人久久中文网| 亚洲综合另类| 97干婷婷五月天| 色视频五月天| 北京熟妇搡BBBB搡BBBB| 日本色图综合| 亚洲综合色五月| 色色色网站| 婷婷丁香色五月| 99超超碰| 91精品综合久久久久久五月丁香| 激情五月www| 激情五月综合| 99久| 综合五月天亚洲婷婷| 久狠日av| 4399在线日本A片| 亚洲色无码A片一区二区麻豆| AV在线二十六页| 狠狠人妻色综合| 中文久久久人妻| 天天舔天天操| 中文字幕1区2区。| 狠狠爱婷婷色| 永久地址 色| 五月丁香六月婷婷啪啪| 影音先锋高清无码资源网| 丁香六月婷| 婷婷色播六月无码| 99热这里只有精品8| 综合99在线| 丁香六月天AV| 成片免费观看视频大全| rr天天操| 久久国产成人9999久久久久| 丁香五月婷婷88在线| 182TV大香蕉| 99干日日干| 婷婷激情九月| 99九九综合久久九九| 婷婷亚洲综合| www.91色| 色五月天激情| 天堂网操| 激情综合色播| 68热超碰在线| 九九精品免费| 激情五月天色色| 99综合入口| 亚洲精品乱码久久久久99| 26uuu精品一区二区| 亚洲精品一区中文字幕乱码| 天天综合网91| 97九色视频| 久久九网| 精品皮股午夜AV| 99视频精品在线| www.久久爱.c n| 日日射天天射| 婷婷中文字幕| 性爱在线播放av| 九九热中文| 精品九九久久| 人人操人av| 日本片日本片祼观看网站在线看中文版网页在线看 | 99热只有精品综合| 国产成人99久久亚洲综合精品| 丁香五月久久社区| 一本色道久久综合狠狠躁小说| 超碰在线免费观看日韩| 亚洲五月情| 亚洲无AV在线中文字幕| 99视频在线观看欧| 丁香六月激情| 激情黄色小说五月天| 97碰在线视频| 99视频精品8| 国产成人精品亚洲线观看| 天天综合久久| 丁香五月天论坛| 五月婷婷久久爱| 天天干天天爽天天爽| 精品一区二区三区免费毛片爱 | www色五月| 婷婷丁香九色| 99网99热| 第四色婷婷日本| 99性色| 99ri在线观看视频| 啪啪91| 美女激情综合| 天天色播| 99热精品在线播放观看| 婷婷.com| 色欲午夜无码久久久久久张津瑜| YJLZZJLZZ亚洲乱熟无码| 婷婷五月综激情| 国产色香蕉精品五夜婷| 色婷婷欧美| 婷婷综合影院| 182TV大香蕉| 精品热青草| 91精品电影18T| 粉嫩AV久久一区二区三区| 国产亚洲99| 99无码视频| 婷婷久久综合| 91聚色综合网| 99热1| 国产精品人妻在线网址| 色情五月综合婷婷| 婷婷激情五月天在线| 大香焦啪啪啪| 色激情五月| 三级三久久线久久99久目本WW| 六月婷婷中文字幕| 亭亭五月色男人| 精品久热69| 久久婷婷亚洲| 操啊操av| 激情婷婷丁香五月天小说| 五月天久久久| 久久五月综合| 人人性久久| 欧美久久婷婷| 精品五月天| 婷婷情色五月天| 久久激情五月| 六月色婷婷| 7月婷婷六月丁香| 欧美性生交XXXXX无码小说| 婷婷中文字暮| 五月丁香六月婷婷综合在线| 婷婷色五月天色色| 丁香五月成人| 99愛国产| 琪琪秋霞| 色狠狠综合网| 国产女18毛片多18精品| 99热这里都是精品| 99热资源在线| 五月丁香| www.com任你艹| 狠狠综合网| 丁香婷婷成人网| 天天爽夜夜爽夜夜爽精品| 久超免费视频| 久热9| 99久re热视频精品98| 中国无码av| 成人丁香色| 67194成I人在线观看线路1 | av在线婷婷| 粉嫩av蜜桃av蜜臀av| 天天久久综合| 色激情综合狠狠婷婷| 日韩三级视频一区二区| 伊人综合网站| 99久久婷婷国产综合| 天天操天天操天天操天天操天天操 | 欧美色色色色色色色色色色影视| www.色五月| 91婷婷五月天综合视频| 五月丁香六月激情综合网| 特黄三级又爽又粗又大| 丁香婷婷狠狠97| 五月婷婷丁香| 99久在线视频| 射区导航| 丁香五月欧美午夜视频| 日韩视频99| 六月色婷婷欧美| 欧美色99| 婷婷操超碰| 丁香花综合永久入口| 超碰碰碰碰| 99久在线视频| 亚韩在线视频| 原琪琪色影院| 99自拍视频网站| XX色综合| 色五月欧美| 五月花丁香婷婷| 五月丁香999| 99热只有精品综合| 久久婷婷五月国产色综合激情| 丁香 久久| 亚州激情九月| 99久久精彩视频| 久草 tingting| XX色综合| 青青久在线视频免费观看| 色色色综合| 久久九九爽| 婷婷天天婷婷天天澡| 五月丁香激情五月天| 九九色之九九色之88| 激情五月四色| 开心激情站| 天天插天天干| 久久精品一区二区三区四区| 草草夜夜操| 爱久久小说下载网| 九色在线五月婷婷网址| 日韩成人影片在线观看| 亚洲AV无码影院| www.99热这里精品| 亚洲超碰在线| 五月丁香婷婷AV天堂| 99'无码| 伊人丁香五月| 99热这里只有精品18| 99思思热只有在这里看| 九九热精品| 9l视频自拍9l九色9l成人| 97性视频| 涩五月婷婷| 爱久久小说下载网| 久久久久久久五月| 成人短视频免费| 丁香五月婷婷天堂大香蕉| 丁香久久五月婷综合| 九九这里是免费的视频5| 色婷婷丁香综合中文字幕| 久久曰曰| 久久九九99亚洲国产久精综合| 日日操,夜夜撸| 亚洲色色香蕉| 精品久热| 欧美色激情四射| www.久操| 中文字幕成人| 99久热在线精品| 夜夜噜夜夜奇| 亚洲成人网站在线播放| 亚洲AV免费在线| 中文字幕成人网站| 97人妻碰碰碰久久久久-最近国语高清| 美欧成人视频| 人妻性爱| 色五婷婷在线视频| 五月综合色| 天天干人人奸97| 激情伊人网| 日本成人综合| 99re思思热在线视频| 五月天自拍网| 91在线日| 9久9久9久女女女九九九一九| 色爱99| 亚洲精品网站色视频| 99热这里只有精品一| 婷婷五月在线播放| 九九色综合| 婷婷色色丁香| 一本久久亚洲五月婷婷| 激情中文在线| 伊人婷婷大香蕉在线| 六月婷婷综合久久| 天天天天天天天操| 五月丁香五月综合欧美| 久热伊人在91| 狠狠艹狠狠艹| 婷婷五月综合网| 国产成人AV不卡| 非洲一级AV| 亚洲另类婷婷五月丁香在线播放| 久久a热| 五月婷婷丁香六月| 色欲婷婷五月天丁香| 丁香五月视频在线观看| 97热视频| 九色激情网| 丁香婷婷六月天| 五月丁香色婷婷色| 丁香婷婷久久综合在线| 激情五月com| 五月丁香六月激情在线| 操九色| 99国产小视频| 黄色片久久| 我爱大香蕉| 激情五月六月婷婷| 久久ri精品| 丁香五月婷婷啪啪啪| 久久久精久人妻| 亚洲天堂热| 毛片蕉地一二| 色丁香在线视频| 色五月天堂| 丁香五月 激情文学| 激情另类综合| 996er热| 99操网站| 日日日日操| 专区无日本视频高清8| 亚洲综合五月天婷婷丁香| 激情五月天色婷婷| 丁香五月婷婷国产av| 视频综合网| 婷婷色九月| 六月丁香激情| 丁香六月激| 五月丁香亭亭| 男人的天堂97| 五月天激情视频| 综合激情九月婷婷,激情综合婷婷中文字| 日本va欧美va精品发布视频| 亚洲热视频| 成人丁香五月| 深爱激情五月网| 久婷婷| 亚洲热热视频| 99亚洲精美视频在线观看| 天天色色天天| 九九超日本| www夜夜操com| 久热re在线视频| 区区欧美你爱| 天天综合色99| 九九在线精品| 九洲一级A片| 久久婷婷五月天激情| g00d人体西西| 在线播放中文字幕| 少妇丁香婷婷 | 欧美激情xxxXX| 天天色粽合合合合合合合| 久/久精品99看9| 日韩视频99| 丁香五月激情宗合网| 婷婷五月激情小说| 五月婷婷激情色情网| 最近中文字幕2019视频1| 99这里只有免费的小视频在线观看| 五月婷在线| 天天爽—爽| 五月色综合| 日本99久久| 色色色色色网| 美臀自射自家人妻| 天堂网亚洲色图| 丁香五月婷综合网| 亚洲激情综| 99视频在线精品免费观看2| 欧美超碰亚洲| 久久99久久99精品免视看婷| 激情99。| 国产精品成av人在线视午夜片| 色久五月天| 日本九九网| 大香蕉啪啪啪| 深爱丁香激情| 国内一级精品| 亚洲精品V天堂中文字幕| 日本九九热| 六月婷综合| 99热精品6| 超碰2021| 五月激情综合网| 色婷婷丁香六月| 激情综合网婷婷五夜| 这里只有精品免费| 婷婷国产欧美97| 九九热只有精品| 思思热性操| 98热精品| 久久五月天婷婷| 五月天精品综合| 丁香六月婷婷综合欧美| 久久99国产综合精品免费| 五月天俺去也| site:pzdcoin.com| 九月婷婷在线观看| 丁香婷婷五月色成人网站| 久久杏爱视频| 99资源在线视频| 99热精品在线在线| 久热黄色| 色五月婷婷五月丁香五月| 婷婷丁香五月天影院 | 99精彩视频| 久久最新色色色| 欧美三级大片AA在线看| 五月婷婷性爱| 五月天激情四射网站| 色色五月天激情| 91干网站| 国产毛片精品一区二区色欲黄A片 欧美交换配乱吟粗大25P | 99综合免费视频| 1010日日无码| 婷婷五月综合色中文字幕| 中文字幕成人日韩| 国产亚洲精品久久久久久牛牛| 久久人人人人妻| 在线成人网站| 综合网色综合| 丁香五月激情图片婷婷| 96精品久久久久久久久| 亚洲亚洲亚洲AAAAAA| 9l视频自拍9l九色成人| 五月天另类图片区99| 成人做爰A片免费看视频| 日本WWW九九九| 婷婷五月天激情综合网| www,五月天com| 九九九九成人| 久操乱| 九月丁香婷婷| 97色色综合| 婷婷色在线播放| 丁香六月婷婷姐网| 久色中文| 五月丁香拍拍激情综合| 丁香无月在线观看| 日韩99视频| 色婷婷无吗| 黄急一级视频| 国产黄大片在线观看画质优化| 五月丁香啪啪网| 亚洲欧美婷婷五月色综合| 思思热久久婷婷五月天| 天天天天天色| 综合逼五月激情婷婷| 久久草大香蕉| 91干| 香蕉久久国产AV一区二区| 天堂在线9| 亚洲国产精品VA在线看黑人| 婷婷五月天 偷拍| 国产成人综合在线| 亚洲99一级无嗎特制在线| 婷婷99视频在线| 少妇人妻丰满做爰XXX| 99视频| 玖玖色综合| 99久在线| 97热这里只有精品| 天天综合色| 99热婷婷| 可以免费观看的AV| 色噜噜狠狠色综合日日| 国产人妻777人伦精品HD| 六月婷婷综合| 伊人综合网站| 免看黄大片AA | 色色a| 免费精品99| 九九色色| 风流少妇A片一区二区蜜桃| 六月婷婷激情| 久热伊人| 日日.c| 激情五月综合亚洲另类| www.99视频| 综合久| 色色色色色网| 欧美大片免费播放器| 国外亚洲成AV人片在线观看| 色五月丁香com| 婷婷五月天性色| 国产古装妇女野外A片| 国产AV一区二区三区日韩| 天天草女人| 天堂网亚洲色图| 久久婷婷草| 任我鲁这里有精品视频| 俺来也综合网精品一区| 五月丁香六月婷婷色| 婷婷四色成人综合色视| 婷婷狠狠操| 九九99九九99偷拍视频免费看| 日韩啪啪视频| 久操婷婷| 97人妻超级碰碰碰碰碰| 婷婷丁香18| 免费操超碰| 亚洲婷婷丁香| 婷婷久久夜| 99热久草| 色情五月丁香| 深爱激情五月天| 婷婷9月天| 亚洲超级碰| 精品久色| 六月丁香社区| 亚洲第一第二网站| 日本wwww在线| 伊人久久婷婷| 深爱激情小说五月婷婷| 日韩aaaaa| AVDV久久| 99视频在线看| 色哟哟精品| 99热国产这里只有| 丁香婷五月天开心六月| 涩五月婷婷| 日韩 mm 不卡| WWW.激情| 26uuu欧美| 丁香五月天激情综合| 九九美女视频| 电影爱拉战争免费观看| 丁香五月婷老师| 99色网站| 久久99三级在线视频| 亚洲综合激情五月天婷婷| 婷婷五月深爱五月| 99久re热视频精品98| 一本狠婷婷综合| 婷婷五月成人色综合| 欧美丁香婷婷五月| 婷婷五月天影院| 丰满人妻妇伦又伦精品国产| 操逼电影免费看| 九九色精品| 99久久玖玖| 天天天天操| 五月综合丁香婷婷| 五月天色婷婷成人| 激情丁香五月| 五月天激情四射| 色婷视频| 91妻人人爽人人看片| 免费黄色视频网址| 噜一噜在线| 国产av天天插天天操天天爽| 婷婷丁香视频在线观看免费| 91日日日| 99色免费在线观看| 五月色精品| 六月激情网| 人妻五月天激情开心网| 99.色| 9+1视频网址| 婷婷久久天堂网| 人妻videos人妻高清| 婷婷导航| 成人精品人妻| 天天摸天天透天天舔| 丁香婷婷成年| 五月天激情Av| 五月丁香影院| 婷丁香久综合| 婷婷五月激情图片| 国在线激情网| 日日夜夜狠狠| 噜噜噜狠狠色综合| 婷婷九月| 人妻22p| 丁香六月婷婷色XXXXX| 九月停停| 99热这里只有精品18| 懂色av粉嫩av蜜臀av| 五月天三级| 久久99综合| 激情五月天噢美| 99在线精品免费视频| 五月天婷婷网站888| 九九干视频| 超碰不卡在线| 99热国内精品| 色婷婷狠狠爱| 久久五月婷婷丁香| 丁香婷婷五月人体| 精品人妻久久久久久| 亚洲欧美国产A片免费观看| 色五月婷婷激情| 99视频日韩| 人人干人人操人人摸| 夜色.cnm| 丁香五月成人婷婷| 日韩久久日| 丁香五月六月综合欧美| 99精品综合在线| 五月色色激情网| 香港九九六区八区99| 久久五月综合| 天天插天天射天天干| 久久狠狠干| 色色婷婷色色| 丁香婷婷色五月| 婷婷五月丁香五月丁香| 国产麻豆视频| 五月天丁香啪啪综合| 中文字幕无码人妻少妇免费视频| 狠狠色激情综合| av一区二区电影免费在线观看| 五月婷六月丁| Caop在线| 亚洲这里只有精品| 色情播放| 国产精品久久久久久久久久| 色色网五月激情| 99久久精品国产色欲| 久久久.COM| 丁香玖玖| 大香蕉人妻| 人人做人人看人人摸| 色原狠狠综合| 九色91视频| 五月婷婷开心亚洲无| 欧美精品中文字幕亚洲专区| 日本久久爱| 操日本色| 五月天色区| 偷偷狠狠久久婷婷五月天| 无码少妇高潮喷水A片免费| 在线可以看的av网址| 大香蕉五月天婷婷丁香91| 欧洲亚洲免费视频9| 思思久ren热| 97亚洲精品| 色婷精品91| 无码AV久久久久久久久| 丁香婷婷视频在线| 婷婷丁香视频在线观看免费| 色婷婷小视频| 丁香五月天色婷婷| 色吧五月婷婷| 六月婷婷网| 五他月天啪啪啪| 日本色五月| 婷婷五点亚洲| 人妻久热| 婷婷中文字幕欧美| 五月天精品视频| 韩国三级五月天婷婷。| 色婷婷影视| 色五月婷婷丁香凹凸| 丁香五月电影| 天天干天天色综合| 婷婷六月丁香开心深深爱| 亚洲AV在线免费看| 大香蕉啪啪啪| 亚洲综合99| 婷婷激情六月中文| 激情综合啪啪| 激情丁香久久| 丁香六月久久| 丁香 婷婷 激情 综合 五月| 天堂在线观看视频| 五月天桃色深爱网| 九九热精品视频在线观看| 丁香五月日本| 丁香五月1页| 五月丁香九九| 婷婷六月香| 可以看的av| 色碰碰| 色99网站| 婷婷五月丁香久久| 天天舔天天摸天天射| 伊人久久大香蕉网| 日木WWW视频| 婷婷伊人网| 久久99网| 久久综合伊人综合在线| 丁乡久久| 色色色天堂网| 婷婷丁香色女人| 97在线观视频免费观看| 日日操夜夜爽| 亚洲欧美成人在线| 色婷婷超碰| 精品99网站| 五月久久婷婷丁香| 五夜丁香| 激情九九六月激情免费视频| 婷婷色网| 成人五月丁香社区| 久9无码视频| 99视频精品在线| 五月天婷婷激情六月久久 | 秋霞学生妹一二级| 婷婷五月天最新综合你懂的 | 免费AV播放| 亚洲在线操| 欧美性猛交99久久久99| 五月开心久久| 婷婷六月激情| 久久99网| 野战毛片三一3| 五月天狠狠干| 婷婷色影音天| 人人爱操| 大香蕉久久| 操碰99| www.91操| 色激情五月| 久久婷色| 婷婷五月情| 日本一级一级一级一级| 可以看的AV| 99热这里有精品| 思思热在线观看| 91久久久久久久| 亚洲操人| 日本欧美成人片AAAA| 一级性爱视频| 99热自拍| 成人免费黄色短视频| 伊久大香蕉| 熟女人妻一区二区三区免费看| 无码激情AAAAA片-区区| 色五月亚洲| 成人精品网站在线观看| 色婷婷色综合| 色综合久久中文| 日本色婷婷| 天天插综合在线| 久热这里精品免费| 亚洲天堂aaa| 久久怡红院| 日本欧美在线| 99色色网| 婷婷五月天渟渟| 色很久综合| 九色PORNY在线精品酒店| 久久Xx| 激情综合五月| 天天插天天干天天舔| 影音先锋 91工厂| 五月婷婷在线综合| 色婷婷亚洲五月天| AV在线大香蕉| 欧美槡BBBB槡BBB少妇| 无码AV大香线蕉伊人| 琪琪色热色色| 婷婷少妇激情| 婷婷舔| 六月丁香激情网| 综合六月激情婷婷| 久久婷婷五月丁香网| 激情五月综合| 九九激情| 99热在线观看免费中文| 我要射综合| 日本色五月婷婷| 精品久久艹| 五月婷婷亚洲天堂97色婷婷| 国产精品电影网| 夜夜人妻五月天| 九九精品视频在线观看| 丁香六月婷婷综合| 一本色道久久综合狠狠躁一二三| 黄网在线观看免费| 久1色色| 舔色婷婷| 亚洲成av人影院| 69色婷婷| 丁六月激情| 伊人AV五月婷| 丁香五月天啪啪| 99综合99| 激情综合网之激情五月| 五月天激情小说欧美激情| 思思热在线观看| 五月婷婷丁香日韩在线| 久久香蕉丁香| 丁香五月婷婷婷婷欧美综合| 夜夜干天天操| 欧美顶级少妇做爰HD| 婷婷黄色网| 玖玖色综合网| 天天做天天爱天天综合网| 玖玖热视频| 日韩精品99久久| 婷丁香五月天| 蜜乳国产网站| 五月久久婷婷天堂视频| 五月婷婷久久大片| 丁香六月| 五月婷婷丁香综合网| 狠狠色婷婷777| 日本视频欧美观看免费| 天色综合网站| 激情五月天在线视频| 色五月婷婷1| 丁香婷婷久久综合在线| 狠狠色噜噜狠狠狠狠综合| 久久3级片| 另类图片 五月激情| 色五月婷婷丁香五月| 久久五月丁香综合| 五月婷高清视频| 五月丁香综合啪啪| 91婷婷五月丁香碰| 99综合激情久久精品久久| AA丁香综合激情| 激情文学久久| 九九热经典视频在线观看| 99性爱视频| av中文在线| 日本99在线| 亚洲色图在线视频| 秋霞学生妹一二级| 伊人婷婷色| 色色丁香五月天社区| 日韩AV色色色| 成人国产欧美大片一区| 久Se视频在线观看| 天天干天天操天天爱| 男女啪啪做爰高潮无遮挡| 婷婷色综合| 激情五月婷| 99精品97| AVDV久久| 91操在线观看| 天天摸天天透天天舔| 4399精品一区二区| 久久这里只有欧美| 色婷婷激情| 激情5月婷婷狠狠干| 97精品综合久久| 成人网丁香五月| 深爱激情五月网| 久久网婷婷| 亚洲天堂aaaa| 第五婷婷伊人丁香| www.天天干| 97碰碰视频| 亚洲人人操| 亚洲天堂青草| 天天舔天天操| 激情五月婷婷啪啪| 99性爱视频网站| 啪啪色激情五月天| 五月婷婷激情综合拍| 婷婷五月天av小说| 欧美日本va| 亚洲一级AV在线免费播放| 成人丁香婷婷五月天| 国产人妻人伦精品一区二区| 丁香伊人激情| 偷拍丁香九月激情| 色婷婷视频综合| 日韩AV在线影片| 色五月首页| 99碰碰中文| 五月综合激情| 无码九九| 九九这里有精品| 秋霞午夜理论| 超碰在线免费观看日韩| 天天噜天天插| 欧美色男人网站| 思思国产99| …亚洲黄色在线播放日韩、av中文a…| 六月婷婷色色色| 九月婷婷色色| 亚洲精品大片| 丁香五月天偷拍| 精品无码久久久久久久久| 国产日日操夜夜操的肉棒视频| 狠狠色狠狠色综合日日91| 激情五月婷婷伊人| 六月婷在线| 伊人久久大香线蕉av最新| 99久久精彩视频。| 国产成人综合电影| 天天干天天操| 九九自拍网| 国产毛片精品一区二区色欲黄A片| 91热在线| 精品无码久久久久久久久| 亚洲色情一区二区三区四区| 99干在线视频| 99久久99九九九99九他书对| 色久在| 东北熟女高潮99综合99| 超碰在线视屏| 第六色在线| 熟美女麻豆| 久久99网| 婷婷五月骚厕所| 日本色色网站| 人妻少妇色综合| 婷婷开心青青草| 综合玖玖偷拍| 色婷婷五月综合| 五月婷婷激情刺激| 婷婷激情五月天桃花网| 性一交一乱一交A片久久四色| 亚洲射激情| 激情五月份婷婷| 亚洲另类在线观看| 欧美综合激情丁香五月六月婷| 久青操| 日韩AV中文在线观看| 五月丁香大相交| 玖玖九九99| 色色爽爽天天| 亚洲欧美综合7777色亭亭| 久月婷婷| av人人操| 久久狼人天堂| 久久曰9| 99在线观看精品视频| 五月婷六月婷婷| 色情性爱视频网址| 国产中文字幕在线视频免费观看 | www狠狠爱com| 五月开心网| 激情五月天网| 色欲丁香久久| 婷婷四色五月| 99精品成人无码A片观看金桔| 激情五月www| 婷婷情色五月天| 久久久久9久无码视频| 人人播| 拳交大逼| www..com色爱| 九九热欧美| 1囯产午夜仑鲁鲁| 国产99久久久国产精品免费看| 97资源欧美日韩大香蕉超碰一区| 国产精品久久久久久五月天加勒比| 99操视频| 亚州色综合| 天天插天天插| 狠狠色综合网| 天天插天天射| 十月丁香九月婷婷综合| 综合丁香婷婷五月天| 五月婷婷综合久久| 中文字幕一色哟哟哟哟| 天天操天天曰| 9久热在线视频精品| 十月色综合| 亚洲九九99精品视频在线播放| 欧美五月丁香啪啪响视频| 国产精品电影网| 久久婷婷色综合老司机| 久久97久久99久久综合欧美| 欧美日韩成人免费在线| 六月婷婷开心| 丁香五月六月婷婷殴美综合| 天天摸夜夜爽天天做| 夜夜人妻五月天| www色色色com| 99手机在线精品视频| 久久一级免费黄色片| 亚洲V国产V欧美V久久久久久| 色色射| 深爱激情69热| 91Chinese在线| 99九无网码| 久久久久久久8| 五月天婷婷小说| www.久久| 五月丁香六月婷婷网| 久久精品系列| 99精品视频网| AVDV久久| 丁香五月天婷婷激情| 中国女人做爰A片| 色噜噜综合网| 中文AV在线播放| 99视频一区| 五月婷婷六月婷| 色婷婷综合网站| 日韩十国产极品久久| 色五月婷婷DVD| 亚洲色模骚货| 五月丁香色| 色情五月综合婷婷| 久久婷婷视频| 五月草影视| 26UUU亚洲欧美| 婷婷色五月天综合网| ss五月天激情| 日本一毛片| av网址在线| 丁香五月天无码AV| 婷婷午夜激情| 五月天婷婷基地丁香| 色五月涩涩婷婷蜜桃| 久久五月天色婷婷| 《战争与艾拉》完整版| 激情综合五月.....| 开心综合激情综合| 五月婷婷综合久久| 99热777| AAAA网站| 9久久婷婷国产综合精品性色| 深爱五月亚洲| 丁香六月婷婷综合啪啪| 女力报到正好爱上你| 色五月中文网| 亚洲亚洲亚洲AAAAAA| 久久九九怡红院| 99re热精品在线视频| 这里只精品| 六月狠狠综合| 中文成人在线| 亚州操操| 色婷婷超碰| av狠狠操| 91妻人人爽人人看片| 夫妻超碰在线| 嫩模aV在线| 青青色com久久| 婷婷激情综合| 最新色色五月天| 五月天亚洲最大成人| 婷婷五月天成人网站| www,com,五月色色| 亚洲精品婷婷| 无码少妇高潮喷水A片免费| 亚洲天堂制| 丁香色色网| 丁香激情六月天婷婷| 日日激情网| 激情五月综合网| 亚洲色vA| 丁香色成人| 97色色色| 亚洲成人av在线观看| 九九热AV| 亚州激情在线视频| 久久综合人妻| 99热自拍| 大香婷婷| 99九色视频在线观看| 手机AVAV天堂看网| a久久| 无码AV免费精品一区二区三区| 97热超碰| 婷婷五月天久久| 五月丁香直播| 五月丁香六月停停| 色情成人五月天| 97久久视频| 五月婷久久草| 色婷婷丁香特级性爱视频| 激情婷婷五六月天| 婷婷五月天激情小说| 亚洲成人在线播放| 亚洲成人AV在线| ,99视频久久| 丁香五月无码| 久99热| 久久99精品久久久久子伦| 丁香五月激情六月综合| 九九免费视频| 国产精产国品一二三在观看| A级毛片高清免费不卡播放谢谢谢谢| 天天爱天天做天天舔| 91丨九色丨熟女| 最新国产AV| 日本久久综合| 激情五月婷婷网| 欧美成人精品A片免费一区99| WWW.久久久久久久久久久久久| 天天日天天摸天天| 夜夜谢天天干| 激情综合丁香六| 伊人婷婷青青cao| 六月天婷婷| 日韩熟女啪啪视频| 激情婷婷丁香五月天小说| 91碰超| xx综合网| 五月激情婷婷在线| 丁香婷婷综合激情五月色| 极品五月天| 中字幕视频在线永久在线观看免费| 久久五月激情综合| 99热在线这里| 国产毛片操B| 天天色天天爱天天舔| 97人人草| 国产免费一区二区三区三州老师F1F1.CC | 丁香五月成人| 色婷五月| 色色色.com| 日本99视频| 俺来也综合网精品一区| www.minyis.com【JT】实力收量可预付QQ2101460746 | 欧美五月婷婷| 激情五月天婷婷| 亚洲国产精品VA在线看黑人| 激情性爱五月天网页| 丁香六月激情| 天天热夜夜操| 91肏| 婷婷五月娱乐在线| 永久无码色| 色偷偷五月天| 99丝袜精品视频网站| 色婷婷伦理| 九九热精品| 丁香五月天天哦| 99超级碰免费视频| 99热主页日本| 欧美精品啪啪| 色婷婷a v| 97视频.干com| 亚洲精品成人片在线播| 色五月婷激情| 九九丁香社区欧美激情| 亚洲性天天| 九九在线精品| 91打屁股免费看| 丁香五月电影| 26uuu精品一区二区| 五月婷婷影| 亚洲激情精品| www.久操| 免费视频99| 四月婷婷五月丁香| 五月丁香六月欧美| 青青草原亚洲久| 欧美日韩AAA| 亚洲婷婷丁香五月| 日本婷婷五月天| se色婷婷视频| 99热精品在这里| 五月丁香人妻| ww久久| 国产首页在线| 亚州精品久久久久AV无码| 激情精品久久| 99热国产免费| 亚洲五月天色色| 大香蕉伊人爱在线| 天天综合91入口| 激情婷婷五月| 五月丁香久人妻中文| 亚洲午夜一区二区| 97碰人人操| 亚洲操b| 国产人妻操逼| 夫妇交换刺激做爰| 婷婷在线操| 免费视频WWW在线观看网站| 人人做天天爱| 久人操| 天天爽天天操| 99热99精品在线观看| 色网五月婷婷| 久久久性爱视频| 久久曰曰| 婷婷丁香综合成人| 激情久久 婷婷| 狠狠狠色激情综合适合| www.久久爱.com| 亚洲美女网Va| 日本婷婷在线| 五月天激情四射| 99超在线| 婷综合六月| 色色色综合网| site:publishdd.com| 丁香五月婷婷亚洲另类| 狠狠草天天草| 亚洲欧洲中文日韩久久AV乱码| 天天日天天操天天干| 正宗黄色毛片| 99热9999| 婷婷五月开心中文字幕在线|