[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"article-how-to-build-akiraos-wasm-apps-for-zephyr-zh":3,"article-related-how-to-build-akiraos-wasm-apps-for-zephyr-zh":31,"series-tools-698981d2-c844-4ee0-ba64-cc9a328deb3c":84},{"id":4,"slug":5,"title":6,"content":7,"summary":8,"source":9,"source_url":10,"author":11,"image_url":12,"cover_image":12,"category":13,"language":14,"translated_content":11,"related_article_id":15,"keywords":16,"key_takeaways":23,"views":27,"created_at":28,"published_at":29,"topic_cluster_id":30},"698981d2-c844-4ee0-ba64-cc9a328deb3c","how-to-build-akiraos-wasm-apps-for-zephyr-zh","怎麼做 AkiraOS WASM 應用","\u003Cp data-speakable=\"summary\">這篇教你在 Zephyr RTOS 上建立、編譯、燒錄與 OTA 更新 AkiraOS 的 WebAssembly 應用。\u003C\u002Fp>\u003Cp>這篇給想在\u003Ca href=\"\u002Fnews\u002Fwhy-fintech-web3-startups-need-legal-support-before-scaling-zh\">支援\u003C\u002Fa>板子上試用 AkiraOS 的嵌入式\u003Ca href=\"\u002Fnews\u002Fsecs-peirce-questions-defi-developer-liability-zh\">開發者\u003C\u002Fa>看，\u003Ca href=\"\u002Fnews\u002Fdefi-development-dfdv-stock-price-analysis-zh\">目標\u003C\u002Fa>是把應用和韌體分開管理，減少反覆重刷整包韌體的成本。照著做完，你會拿到可用的本機建置環境、一個可執行的 WASM 範例，以及部署到裝置的完整流程。\u003C\u002Fp>\u003Cp>AkiraOS 是建立在 Zephyr RTOS 之上的開源平台，核心做法是把系統底層與應用隔離開來，讓應用可以獨立更新。這種架構適合需要沙箱、裝置隔離與較穩定底層韌體的團隊。\u003C\u002Fp>\u003Ch2>開始之前\u003C\u002Fh2>\u003Cul>\u003Cli>Git 2.40+\u003C\u002Fli>\u003Cli>Python 3.11+\u003C\u002Fli>\u003Cli>CMake 3.20+\u003C\u002Fli>\u003Cli>Ninja 1.11+\u003C\u002Fli>\u003Cli>Zephyr SDK 0.16+，或以 AkiraOS 文件列出的版本為準\u003C\u002Fli>\u003Cli>Node.js 20+，如果應用 UI 或工具鏈會用到網頁資產\u003C\u002Fli>\u003Cli>一塊支援的板子，例如 ESP32-S3、ESP32-C6、ESP32-H2、nRF54L15 或 STM32 目標板\u003C\u002Fli>\u003Cli>一條 USB 線，若要測 OTA，還需要可連到板子的 Wi-Fi 網路\u003C\u002Fli>\u003Cli>GitHub 帳號，用來複製來源碼與回報平台問題\u003C\u002Fli>\u003C\u002Ful>\u003Cp>先打開 AkiraOS 官方文件與 \u003Ca href=\"\u002Ftag\u002Fgithub\">GitHub\u003C\u002Fa> repository，後續所有板子支援、SDK 版本與燒錄步驟都以那裡為準。第一次遇到版本差異時，不要猜，直接回文件核對。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780862577242-1x6z.png\" alt=\"怎麼做 AkiraOS WASM 應用\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Ch2>Step 1: 複製 AkiraOS 原始碼\u003C\u002Fh2>\u003Cp>這一步的目的，是先拿到完整的專案樹，讓你能找到 Zephyr 應用、執行階段與板子設定檔。\u003C\u002Fp>\u003Cp>把主 repository 複製到本機，並確認頂層目錄結構。\u003C\u002Fp>\u003Cpre>\u003Ccode>git clone https:\u002F\u002Fgithub.com\u002Fakiraos\u002Fakiraos.git\ncd akiraos\nls\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該看到對應系統核心、runtime、文件與範例的目錄或檔案。若 repository 名稱或結構有變，以官方文件標示的 canonical source 為準。\u003C\u002Fp>\u003Ch2>Step 2: 安裝 Zephyr 建置工具鏈\u003C\u002Fh2>\u003Cp>這一步的目的，是建立可交叉編譯 MCU 目標與本機模擬器的環境。\u003C\u002Fp>\n\u003Cfigure class=\"my-6\">\u003Cimg src=\"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780862569162-7w15.png\" alt=\"怎麼做 AkiraOS WASM 應用\" class=\"rounded-xl w-full\" loading=\"lazy\" \u002F>\u003C\u002Ffigure>\n\u003Cp>先建立 Python 虛擬環境，再安裝 west 與建置工具，最後確認工具都能被 shell 找到。\u003C\u002Fp>\u003Cpre>\u003Ccode>python3 -m venv .venv\n. .venv\u002Fbin\u002Factivate\npip install -U pip west\nwest --version\ncmake --version\nninja --version\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該看到每個工具的版本輸出，而且不會出現 command not found。若專案提供鎖定版 requirements 檔，優先用那個檔案安裝。\u003C\u002Fp>\u003Ch2>Step 3: 建置 native 模擬映像\u003C\u002Fh2>\u003Cp>這一步的目的，是先用桌面模擬器快速驗證建置流程，不必先燒錄真實硬體。\u003C\u002Fp>\u003Cp>先用 native simulation target 做第一次建置，確認 build system、runtime 與 app packaging 都正常，再切到實體板子。\u003C\u002Fp>\u003Cpre>\u003Ccode>west build -b native_sim path\u002Fto\u002Fakiraos\u002Fapp\nwest build -t run\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該看到模擬器啟動，並輸出 Zephyr 與 AkiraOS 的開機紀錄。若建置成功但應用沒有跑起來，回文件確認 sample 名稱或 board overlay。\u003C\u002Fp>\u003Ch2>Step 4: 編譯 WASM 應用封裝\u003C\u002Fh2>\u003Cp>這一步的目的，是產出可被 AkiraOS 安裝的沙箱化 .wasm 檔，而不是整包韌體。\u003C\u002Fp>\u003Cp>使用 AkiraOS SDK 建置一個範例應用，目標是生成只申請必要 \u003Ca href=\"\u002Ftag\u002Fapi\">API\u003C\u002Fa> 的 WebAssembly 模組。\u003C\u002Fp>\u003Cpre>\u003Ccode>cd path\u002Fto\u002Fakiraos-sdk\nmkdir -p build\ncmake -S samples\u002Fhello -B build -G Ninja\ncmake --build build\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該在 build 目錄看到 .wasm 輸出，或看到帶有 app bundle 的產物。如果 SDK 的範例路徑不同，就改用文件中的 hello、shell 或 widgets 範例。\u003C\u002Fp>\u003Ch2>Step 5: 燒錄支援的 MCU 板子\u003C\u002Fh2>\u003Cp>這一步的目的，是把 AkiraOS 跑到真機上，方便測試儲存、BLE、網路與應用隔離。\u003C\u002Fp>\u003Cp>選一塊支援板子，例如 ESP32-S3-DevKitM-1、nRF54L15 平台或文件列出的 STM32 kit，然後用專案指定的 board target 燒錄，再開序列埠看開機流程。\u003C\u002Fp>\u003Cpre>\u003Ccode>west flash\nwest debug\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該看到 Zephyr 開機訊息，接著是 AkiraOS 啟動紀錄，以及 shell 或管理提示字元。若燒錄失敗，先核對文件中的 board 名稱，再檢查 USB driver 與主機權限。\u003C\u002Fp>\u003Ch2>Step 6: 透過網路安裝與更新應用\u003C\u002Fh2>\u003Cp>這一步的目的，是驗證 WASM 應用可以獨立更新，而不用重刷底層韌體。\u003C\u002Fp>\u003Cp>用 web 介面、手機 app 或 shell 上傳 .wasm 封裝，執行安裝與啟動，然後再推第二版同名應用，確認更新流程不會碰到底層 OS。\u003C\u002Fp>\u003Cpre>\u003Ccode>curl -F file=@build\u002Fhello.wasm http:\u002F\u002Fdevice.local\u002Fapi\u002Fapps\ncurl -X POST http:\u002F\u002Fdevice.local\u002Fapi\u002Fapps\u002Fhello\u002Frun\u003C\u002Fcode>\u003C\u002Fpre>\u003Cp>你應該在管理介面看到應用出現，接著在裝置端看到它啟動與回報狀態。若更新失敗，先檢查 Wi-Fi、app manifest，以及目標板是否有足夠儲存空間。\u003C\u002Fp>\u003Ctable>\u003Cthead>\u003Ctr>\u003Cth>指標\u003C\u002Fth>\u003Cth>基準／優化前\u003C\u002Fth>\u003Cth>結果／優化後\u003C\u002Fth>\u003C\u002Ftr>\u003C\u002Fthead>\u003Ctbody>\u003Ctr>\u003Ctd>應用部署\u003C\u002Ftd>\u003Ctd>每次變更都要完整燒錄韌體\u003C\u002Ftd>\u003Ctd>可用 OTA 更新應用，不必重刷 OS\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>應用隔離\u003C\u002Ftd>\u003Ctd>應用與韌體共用同一份空間\u003C\u002Ftd>\u003Ctd>WASM 沙箱搭配明確硬體權限\u003C\u002Ftd>\u003C\u002Ftr>\u003Ctr>\u003Ctd>執行模式\u003C\u002Ftd>\u003Ctd>直譯器模式\u003C\u002Ftd>\u003Ctd>WAMR AOT 模式，效能可提升 10 到 50 倍\u003C\u002Ftd>\u003C\u002Ftr>\u003C\u002Ftbody>\u003C\u002Ftable>\u003Ch2>常見錯誤\u003C\u002Fh2>\u003Cul>\u003Cli>板子 target 選錯。修法：先在文件確認你的裝置是 Tier 1 還是 Tier 2，再用完全一致的 board 名稱重建。\u003C\u002Fli>\u003Cli>跳過 SDK 版本鎖定。修法：安裝 AkiraOS 建議的 Zephyr SDK 版本，不要直接升到未驗證的新版本。\u003C\u002Fli>\u003Cli>上傳的是原始 binary，不是 WASM 封裝。修法：一定要用 AkiraOS SDK 產出 app artifact 與 manifest，管理器才會接受。\u003C\u002Fli>\u003C\u002Ful>\u003Ch2>接下來可以看什麼\u003C\u002Fh2>\u003Cp>下一步可以接著做 shell、檔案瀏覽器與管理介面，進一步測 OTA、監控多台裝置，並在同一塊板子上切換多個應用。\u003C\u002Fp>","這篇教你在 Zephyr RTOS 上建立、編譯、燒錄與 OTA 更新 AkiraOS 的 WebAssembly 應用。","www.cnx-software.com","https:\u002F\u002Fwww.cnx-software.com\u002F2026\u002F06\u002F06\u002Fdocker-for-microcontrollers-akiraos-combines-zephyr-rtos-with-webassembly-wasm-applications\u002F",null,"https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780862577242-1x6z.png","tools","zh","fc7e377e-bb67-449e-addd-bb52faff26fc",[17,18,19,20,21,22],"AkiraOS","Zephyr RTOS","WebAssembly","WASM","west","OTA",[24,25,26],"先用 native_sim 驗證建置，再切到實體板子燒錄。","WASM 應用要透過 AkiraOS SDK 產出，才能被管理器接受。","OTA 更新的是應用，不是底層韌體，這是 AkiraOS 的核心流程。",3,"2026-06-07T20:02:24.454909+00:00","2026-06-07T20:02:24.445+00:00","269e8a66-8555-4fa6-80c1-90390e524b04",{"tags":32,"relatedLang":43,"relatedPosts":47},[33,34,36,39,41],{"name":21,"slug":21},{"name":19,"slug":35},"webassembly",{"name":37,"slug":38},"Wasm","wasm",{"name":17,"slug":40},"akiraos",{"name":18,"slug":42},"zephyr-rtos",{"id":15,"slug":44,"title":45,"language":46},"how-to-build-akiraos-wasm-apps-for-zephyr-en","How to build AkiraOS WASM apps for Zephyr","en",[48,54,60,66,72,78],{"id":49,"slug":50,"title":51,"cover_image":52,"image_url":52,"created_at":53,"category":13},"4130de62-a037-464c-883d-5fbf8dd75789","open-source-rag-stack-build-plan-zh","開源 RAG 堆疊把混亂變計畫","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780872500382-6ang.png","2026-06-07T22:47:55.345265+00:00",{"id":55,"slug":56,"title":57,"cover_image":58,"image_url":58,"created_at":59,"category":13},"4f0b90ab-f554-474e-9efd-ecec55257302","github-rag-production-list-battle-tested-tools-zh","GitHub 49 星 RAG 生產清單","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780870666920-t0hc.png","2026-06-07T22:17:20.22268+00:00",{"id":61,"slug":62,"title":63,"cover_image":64,"image_url":64,"created_at":65,"category":13},"92c5ded8-bdc6-4214-b78f-2f4f94cea6b4","foundry-mcp-remote-tools-agent-endpoint-zh","Foundry MCP 把工具收斂成一個端點","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780848206168-1rf3.png","2026-06-07T16:02:57.749167+00:00",{"id":67,"slug":68,"title":69,"cover_image":70,"image_url":70,"created_at":71,"category":13},"cf222858-e879-4aef-9dab-1a7c80871f27","leverage-meaning-no-more-buzzword-mistakes-zh","Leverage 讓你少講廢話","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780804995915-2q93.png","2026-06-07T04:02:47.319705+00:00",{"id":73,"slug":74,"title":75,"cover_image":76,"image_url":76,"created_at":77,"category":13},"34162763-ffe3-416d-a719-e450ba87ac3d","llm-leaderboard-2026-300-models-ranked-zh","2026 LLM 排行榜：309 模型怎麼選","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780776191145-786j.png","2026-06-06T20:02:36.847112+00:00",{"id":79,"slug":80,"title":81,"cover_image":82,"image_url":82,"created_at":83,"category":13},"09c2902c-97a8-433c-94de-874a7f55d2ff","llama-benchy-api-benchmark-zh","llama-benchy 把 API 也納入基準測試","https:\u002F\u002Fxxdpdyhzhpamafnrdkyq.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Fcovers\u002Finline-1780775303246-184z.png","2026-06-06T19:47:53.968325+00:00",[85,90,95,100,105,110,115,120,125,130],{"id":86,"slug":87,"title":88,"created_at":89},"855cd52f-6fab-46cc-a7c1-42195e8a0de4","surepath-real-time-mcp-policy-controls-zh","SurePath 推出即時 MCP 政策控管","2026-03-26T07:57:40.77233+00:00",{"id":91,"slug":92,"title":93,"created_at":94},"9b19ab54-edef-4dbd-9ce4-a51e4bae4ebb","mcp-in-2026-the-ai-tool-layer-teams-use-zh","2026 年 MCP：團隊真的在用的 AI 工具層","2026-03-26T08:01:46.589694+00:00",{"id":96,"slug":97,"title":98,"created_at":99},"af9c46c3-7a28-410b-9f04-32b3de30a68c","prompting-in-2026-what-actually-works-zh","2026 提示工程，真正有用的是什麼","2026-03-26T08:08:12.453028+00:00",{"id":101,"slug":102,"title":103,"created_at":104},"05553086-6ed0-4758-81fd-6cab24b575e0","garry-tan-open-sources-claude-code-toolkit-zh","Garry Tan 開源 Claude Code 工具包","2026-03-26T08:26:20.068737+00:00",{"id":106,"slug":107,"title":108,"created_at":109},"042a73a2-18a2-433d-9e8f-9802b9559aac","github-ai-projects-to-watch-in-2026-zh","2026 必看 20 個 GitHub AI 專案","2026-03-26T08:28:09.619964+00:00",{"id":111,"slug":112,"title":113,"created_at":114},"a5f94120-ac0d-4483-9a8b-63590071ac6a","claude-code-vs-cursor-2026-zh","Claude Code 與 Cursor 深度對比：202…","2026-03-26T13:27:14.279193+00:00",{"id":116,"slug":117,"title":118,"created_at":119},"0975afa1-e0c7-4130-a20d-d890eaed995e","practical-github-guide-learning-ml-2026-zh","2026 機器學習入門 GitHub 實用指南","2026-03-27T01:16:49.712576+00:00",{"id":121,"slug":122,"title":123,"created_at":124},"bfdb467a-290f-4a80-b3a9-6f081afb6dff","aiml-2026-student-ai-ml-lab-repo-review-zh","AIML-2026：像課綱的學生實驗 Repo","2026-03-27T01:21:51.467798+00:00",{"id":126,"slug":127,"title":128,"created_at":129},"80cabc3e-09fc-4ff5-8f07-b8d68f5ae545","ai-trending-github-repos-and-research-feeds-zh","AI Trending：把 AI 資源收成一張表","2026-03-27T01:31:35.262183+00:00",{"id":131,"slug":132,"title":133,"created_at":134},"3ce6e6e2-bac5-463e-9f8d-45caabcc61f7","awesome-ai-for-science-research-tools-map-zh","AI 科研工具清單，開始像地圖了","2026-03-27T01:46:50.521945+00:00"]