搜索
bottom↓
回复: 14

大佬有对webassembly在嵌入式的应用了解的吗

[复制链接]

出0入0汤圆

发表于 2023-6-19 10:14:25 | 显示全部楼层 |阅读模式
WebAssembly是一种新的二进制格式,可以在浏览器中运行,WebAssembly可以作为编程语言和平台中间件的通用目标。在嵌入式系统中,WebAssembly可以作为可移植性和安全性的一种解决方案。需要使用WebAssembly可以通过以下步骤:

编写C或C++的嵌入式代码
使用Emscripten将嵌入式代码转换为WebAssembly格式
在嵌入式系统中集成WebAssembly引擎
运行WebAssembly模块
在集成WebAssembly引擎时,需要选择一款支持WebAssembly的引擎。例如,Google的V8引擎可以在嵌入式系统中使用,以便运行WebAssembly模块。安装V8引擎的步骤可以参考以下链接:

https://github.com/v8/v8/wiki/Getting-Started-with-Embedding

一旦WebAssembly引擎被成功集成,可以使用WebAssembly模块来替代嵌入式代码。其中,WebAssembly模块可以使用JavaScript或其他编程语言调用。

需要注意的一点是,WebAssembly的运行速度和效率很高,但是需要一定的摩擦来集成到嵌入式系统中。因此,需要仔细选择适合嵌入式系统的WebAssembly引擎,并对编程语言和嵌入式系统进行详细了解和测试。

除了Google的V8引擎,还有许多其他流行的WebAssembly引擎。以下是其中一些引擎的简要介绍:

WebAssembly Runtime(Wasmtime):Wasmtime是一个快速、安全和可嵌入的WebAssembly运行时,它支持多种编程语言,并可以将WebAssembly模块嵌入到各种应用程序中。
Fastly的Lucet:Lucet是一个可扩展的WebAssembly运行时,它可以将WebAssembly模块安全地加载到容器中,并提供高性能的WebAssembly执行功能。
TaoTao:TaoTao是一个支持WebAssembly的轻量级虚拟机,它采用了ARM Thumb-2指令集,可以在资源有限的嵌入式系统上运行。
Mozilla的SpiderMonkey:SpiderMonkey是一个支持WebAssembly的JavaScript引擎,它可以在Mozilla的Firefox浏览器中运行WebAssembly模块。
Runtime:Runtime是一个灵活、平台无关的WebAssembly运行时,它支持多种编程语言,并提供快速的WebAssembly执行功能。
这些WebAssembly引擎都有自己的特点和优势,需要根据应用场景和需求进行选择。例如,如果需要在JavaScript应用程序中运行WebAssembly模块,可以选择SpiderMonkey引擎;如果需要在容器中运行WebAssembly,可以选择Lucet引擎。

出0入0汤圆

 楼主| 发表于 2023-6-19 10:14:47 | 显示全部楼层
有试验成功的引擎吗?

出110入0汤圆

发表于 2023-6-19 10:28:43 | 显示全部楼层
没有实际应用过,Qt的技术支持给我们演示过 Qt for WebAssembly

供参考 https://doc.qt.io/qt-6/wasm.html

出0入36汤圆

发表于 2023-6-19 10:31:56 来自手机 | 显示全部楼层
直接html css  js  vue  不好么?

出0入0汤圆

 楼主| 发表于 2023-6-19 10:38:52 | 显示全部楼层
redworlf007 发表于 2023-6-19 10:31
直接html css  js  vue  不好么?
(引用自4楼)


嵌入式,特别是STM32这种级别,不是PC或者云端

出0入0汤圆

 楼主| 发表于 2023-6-19 10:40:20 | 显示全部楼层
Flyback 发表于 2023-6-19 10:28
没有实际应用过,Qt的技术支持给我们演示过 Qt for WebAssembly

供参考 https://doc.qt.io/qt-6/wasm.html ...
(引用自3楼)

这个也是一种实现,有没有嵌入式的

出0入42汤圆

发表于 2023-6-19 10:42:43 | 显示全部楼层
理念再先进,也要有足够的资源才能支撑。低资源单片机还是洗洗睡吧

出0入148汤圆

发表于 2023-6-19 10:56:07 | 显示全部楼层
印象中ESP32可以跑,不过没有特别关注,优点是比lua快,并且运行内存少?

出0入0汤圆

 楼主| 发表于 2023-6-19 10:59:32 | 显示全部楼层
yplin27 发表于 2023-6-19 10:56
印象中ESP32可以跑,不过没有特别关注,优点是比lua快,并且运行内存少?
(引用自8楼)

WebAssembly(WASM)是一种用于可移植和可执行程序的开放标准。
WASM 最初是为将高性能的 Web 应用程序带入浏览器而设计的。
但是,由于其可移植性,WASM 应用程序可以在几乎任何环境中运行。
嵌入式边缘代理之所以使用了 WebAssembly,是因为它具有高性能、小的占用空间和可移植性
当您部署嵌入式工作流程时,会被编译成 WebAssembly 模块,然后可以在广泛的设备和环境中执行这些模块。
WebAssembly 模块不能直接执行。
例如,您不能像执行 .exe 文件那样双击桌面上的 WASM 文件让它运行。
WASM 模块是在其他应用程序中执行的。

出0入148汤圆

发表于 2023-6-19 11:05:45 | 显示全部楼层
https://github.com/embedded-wasm github上有介绍,有提供C跟Rust的运行时,支持 NRF52 跟 ESP32,估计内存占用也不少,玩玩还可以,用作产品上感觉有坑,毕竟已经几个月没更新过

出0入0汤圆

 楼主| 发表于 2023-6-19 11:07:16 | 显示全部楼层
yplin27 发表于 2023-6-19 11:05
https://github.com/embedded-wasm github上有介绍,有提供C跟Rust的运行时,支持 NRF52 跟 ESP32,估计内 ...
(引用自10楼)

我看看

出235入235汤圆

发表于 2023-6-19 12:58:40 | 显示全部楼层
优势是不是可以用WEB方案的控件,HTML+JS

出0入148汤圆

发表于 2023-6-19 13:08:04 来自手机 | 显示全部楼层
lyping1987 发表于 2023-6-19 12:58
优势是不是可以用WEB方案的控件,HTML+JS
(引用自12楼)

并不是,反了。wasm 初衷应该是解决 js 代码运行效率低的问题,譬如像 jlceda 之类的,耗CPU的代码可以用 rust 重写然后开放接口给到 js。

出0入0汤圆

 楼主| 发表于 2023-6-19 13:49:40 | 显示全部楼层
yplin27 发表于 2023-6-19 13:08
并不是,反了。wasm 初衷应该是解决 js 代码运行效率低的问题,譬如像 jlceda 之类的,耗CPU的代码可以用 ...
(引用自13楼)

正解~~~~~

出0入0汤圆

发表于 2023-6-19 14:37:54 | 显示全部楼层
wazhiyi 发表于 2023-6-19 13:49
正解~~~~~
(引用自14楼)

https://tech.ic37.com/tech/2008-1_12005/
我还在研究古董,嵌入式如何存储网页数据?网页数据如何转换压缩,Microchip好像提供了一套完整的解决方案,目前还没玩起来。有了解的前辈给避避坑。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-29 05:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表