wazhiyi 发表于 2023-6-19 10:14:25

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

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引擎。

wazhiyi 发表于 2023-6-19 10:14:47

有试验成功的引擎吗?

Flyback 发表于 2023-6-19 10:28:43

没有实际应用过,Qt的技术支持给我们演示过 Qt for WebAssembly

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

redworlf007 发表于 2023-6-19 10:31:56

直接html cssjsvue不好么?

wazhiyi 发表于 2023-6-19 10:38:52

redworlf007 发表于 2023-6-19 10:31
直接html cssjsvue不好么?
(引用自4楼)

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

wazhiyi 发表于 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楼)

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

ahfong2006 发表于 2023-6-19 10:42:43

理念再先进,也要有足够的资源才能支撑。低资源单片机还是洗洗睡吧{:lol:}

yplin27 发表于 2023-6-19 10:56:07

印象中ESP32可以跑,不过没有特别关注,优点是比lua快,并且运行内存少?

wazhiyi 发表于 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 模块是在其他应用程序中执行的。

yplin27 发表于 2023-6-19 11:05:45

https://github.com/embedded-wasm github上有介绍,有提供C跟Rust的运行时,支持 NRF52 跟 ESP32,估计内存占用也不少,玩玩还可以,用作产品上感觉有坑,毕竟已经几个月没更新过

wazhiyi 发表于 2023-6-19 11:07:16

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

我看看{:titter:}

lyping1987 发表于 2023-6-19 12:58:40

优势是不是可以用WEB方案的控件,HTML+JS

yplin27 发表于 2023-6-19 13:08:04

lyping1987 发表于 2023-6-19 12:58
优势是不是可以用WEB方案的控件,HTML+JS
(引用自12楼)

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

wazhiyi 发表于 2023-6-19 13:49:40

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

正解~~~~~

zyw19987 发表于 2023-6-19 14:37:54

wazhiyi 发表于 2023-6-19 13:49
正解~~~~~
(引用自14楼)

https://tech.ic37.com/tech/2008-1_12005/
我还在研究古董,嵌入式如何存储网页数据?网页数据如何转换压缩,Microchip好像提供了一套完整的解决方案,目前还没玩起来。有了解的前辈给避避坑。
页: [1]
查看完整版本: 大佬有对webassembly在嵌入式的应用了解的吗