Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wa-lang
wa
提交
3e1ba7be
wa
项目概览
wa-lang
/
wa
大约 1 年 前同步成功
通知
68
Star
655
Fork
45
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
wa
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
3e1ba7be
编写于
11月 30, 2022
作者:
chai2010
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
arduino 添加 wa 例子, 可在 nano 33 开发板执行
上级
f72d55a6
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
348 addition
and
8 deletion
+348
-8
_examples/arduino/Makefile
_examples/arduino/Makefile
+7
-0
_examples/arduino/app.wa
_examples/arduino/app.wa
+3
-8
_examples/arduino/app.wasm.h
_examples/arduino/app.wasm.h
+129
-0
_examples/arduino/arduino.ino
_examples/arduino/arduino.ino
+209
-0
未找到文件。
_examples/arduino/Makefile
0 → 100644
浏览文件 @
3e1ba7be
default
:
go run ../../main.go build
-target
=
arduino app.wa
wat2wasm a.out.wat
-o
app.wasm
xxd
-i
app.wasm
>
app.wasm.h
clean
:
-
rm
*
.h
*
.wasm
*
.out
*
_examples/arduino/app.wa
浏览文件 @
3e1ba7be
...
@@ -2,20 +2,15 @@
...
@@ -2,20 +2,15 @@
import "syscall/arduino"
import "syscall/arduino"
var LED = arduino.GetPinLED()
fn init() {
fn init() {
arduino.PinMode(LED, 1)
arduino.PinMode(LED, 1)
arduino.Println("凹语言(Wa)/Arduino is running ...")
arduino.Println("Wa is running 😎")
arduino.Println("Greeting: " + GetGreeting())
}
}
fn main() {
fn main() {
LED := arduino.GetPinLED()
for {
for {
time := arduino.Millis()
arduino.Println(time)
arduino.DigitalWrite(LED, arduino.HIGH)
arduino.DigitalWrite(LED, arduino.HIGH)
arduino.Delay(100)
arduino.Delay(100)
arduino.DigitalWrite(LED, arduino.LOW)
arduino.DigitalWrite(LED, arduino.LOW)
...
...
_examples/arduino/app.wasm.h
0 → 100644
浏览文件 @
3e1ba7be
unsigned
char
app_wasm
[]
=
{
0x00
,
0x61
,
0x73
,
0x6d
,
0x01
,
0x00
,
0x00
,
0x00
,
0x01
,
0x2a
,
0x08
,
0x60
,
0x01
,
0x7f
,
0x00
,
0x60
,
0x02
,
0x7f
,
0x7f
,
0x00
,
0x60
,
0x00
,
0x01
,
0x7f
,
0x60
,
0x01
,
0x7f
,
0x01
,
0x7f
,
0x60
,
0x04
,
0x7f
,
0x7f
,
0x7f
,
0x7f
,
0x01
,
0x7f
,
0x60
,
0x01
,
0x7f
,
0x02
,
0x7f
,
0x7f
,
0x60
,
0x00
,
0x00
,
0x60
,
0x03
,
0x7f
,
0x7f
,
0x7f
,
0x00
,
0x02
,
0x6f
,
0x06
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x0c
,
0x64
,
0x69
,
0x67
,
0x69
,
0x74
,
0x61
,
0x6c
,
0x57
,
0x72
,
0x69
,
0x74
,
0x65
,
0x00
,
0x01
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x09
,
0x67
,
0x65
,
0x74
,
0x50
,
0x69
,
0x6e
,
0x4c
,
0x45
,
0x44
,
0x00
,
0x02
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x07
,
0x70
,
0x69
,
0x6e
,
0x4d
,
0x6f
,
0x64
,
0x65
,
0x00
,
0x01
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x05
,
0x64
,
0x65
,
0x6c
,
0x61
,
0x79
,
0x00
,
0x00
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x06
,
0x6d
,
0x69
,
0x6c
,
0x6c
,
0x69
,
0x73
,
0x00
,
0x02
,
0x07
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x05
,
0x70
,
0x72
,
0x69
,
0x6e
,
0x74
,
0x00
,
0x01
,
0x03
,
0x13
,
0x12
,
0x03
,
0x00
,
0x04
,
0x05
,
0x03
,
0x00
,
0x06
,
0x07
,
0x06
,
0x07
,
0x06
,
0x00
,
0x00
,
0x01
,
0x06
,
0x06
,
0x06
,
0x06
,
0x04
,
0x04
,
0x01
,
0x70
,
0x00
,
0x01
,
0x05
,
0x03
,
0x01
,
0x00
,
0x01
,
0x06
,
0x43
,
0x0d
,
0x7f
,
0x01
,
0x41
,
0x80
,
0x10
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x7f
,
0x01
,
0x41
,
0x00
,
0x0b
,
0x07
,
0xdc
,
0x01
,
0x0c
,
0x06
,
0x6d
,
0x65
,
0x6d
,
0x6f
,
0x72
,
0x79
,
0x02
,
0x00
,
0x17
,
0x73
,
0x79
,
0x73
,
0x63
,
0x61
,
0x6c
,
0x6c
,
0x24
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x2e
,
0x50
,
0x72
,
0x69
,
0x6e
,
0x74
,
0x6c
,
0x6e
,
0x00
,
0x0d
,
0x14
,
0x73
,
0x79
,
0x73
,
0x63
,
0x61
,
0x6c
,
0x6c
,
0x24
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x2e
,
0x69
,
0x6e
,
0x69
,
0x74
,
0x00
,
0x0e
,
0x15
,
0x73
,
0x79
,
0x73
,
0x63
,
0x61
,
0x6c
,
0x6c
,
0x24
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x2e
,
0x50
,
0x72
,
0x69
,
0x6e
,
0x74
,
0x00
,
0x0f
,
0x0c
,
0x72
,
0x75
,
0x6e
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x2e
,
0x69
,
0x6e
,
0x69
,
0x74
,
0x00
,
0x10
,
0x13
,
0x24
,
0x72
,
0x75
,
0x6e
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x2e
,
0x77
,
0x61
,
0x50
,
0x72
,
0x69
,
0x6e
,
0x74
,
0x49
,
0x33
,
0x32
,
0x00
,
0x11
,
0x14
,
0x24
,
0x72
,
0x75
,
0x6e
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x2e
,
0x77
,
0x61
,
0x50
,
0x72
,
0x69
,
0x6e
,
0x74
,
0x52
,
0x75
,
0x6e
,
0x65
,
0x00
,
0x12
,
0x0f
,
0x24
,
0x72
,
0x75
,
0x6e
,
0x74
,
0x69
,
0x6d
,
0x65
,
0x2e
,
0x77
,
0x61
,
0x50
,
0x75
,
0x74
,
0x73
,
0x00
,
0x13
,
0x0d
,
0x5f
,
0x5f
,
0x6d
,
0x61
,
0x69
,
0x6e
,
0x5f
,
0x5f
,
0x2e
,
0x69
,
0x6e
,
0x69
,
0x74
,
0x00
,
0x14
,
0x0f
,
0x5f
,
0x5f
,
0x6d
,
0x61
,
0x69
,
0x6e
,
0x5f
,
0x5f
,
0x2e
,
0x69
,
0x6e
,
0x69
,
0x74
,
0x23
,
0x31
,
0x00
,
0x15
,
0x0d
,
0x5f
,
0x5f
,
0x6d
,
0x61
,
0x69
,
0x6e
,
0x5f
,
0x5f
,
0x2e
,
0x6d
,
0x61
,
0x69
,
0x6e
,
0x00
,
0x16
,
0x06
,
0x5f
,
0x73
,
0x74
,
0x61
,
0x72
,
0x74
,
0x00
,
0x17
,
0x0a
,
0xc1
,
0x07
,
0x12
,
0x0b
,
0x00
,
0x23
,
0x00
,
0x23
,
0x00
,
0x20
,
0x00
,
0x6a
,
0x24
,
0x00
,
0x0b
,
0x02
,
0x00
,
0x0b
,
0x25
,
0x00
,
0x20
,
0x00
,
0x20
,
0x00
,
0x04
,
0x40
,
0x20
,
0x00
,
0x41
,
0x01
,
0x36
,
0x00
,
0x00
,
0x20
,
0x00
,
0x20
,
0x01
,
0x36
,
0x00
,
0x04
,
0x20
,
0x00
,
0x20
,
0x02
,
0x36
,
0x00
,
0x08
,
0x20
,
0x00
,
0x20
,
0x03
,
0x36
,
0x00
,
0x0c
,
0x0b
,
0x0b
,
0x06
,
0x00
,
0x20
,
0x00
,
0x20
,
0x00
,
0x0b
,
0x16
,
0x00
,
0x20
,
0x00
,
0x20
,
0x00
,
0x04
,
0x40
,
0x20
,
0x00
,
0x20
,
0x00
,
0x28
,
0x00
,
0x00
,
0x41
,
0x01
,
0x6a
,
0x36
,
0x00
,
0x00
,
0x0b
,
0x0b
,
0x6d
,
0x01
,
0x05
,
0x7f
,
0x20
,
0x00
,
0x41
,
0x00
,
0x46
,
0x04
,
0x40
,
0x0f
,
0x0b
,
0x20
,
0x00
,
0x28
,
0x00
,
0x00
,
0x41
,
0x01
,
0x6b
,
0x21
,
0x01
,
0x20
,
0x01
,
0x04
,
0x40
,
0x20
,
0x00
,
0x20
,
0x01
,
0x36
,
0x00
,
0x00
,
0x05
,
0x20
,
0x00
,
0x28
,
0x00
,
0x08
,
0x21
,
0x03
,
0x20
,
0x03
,
0x04
,
0x40
,
0x20
,
0x00
,
0x28
,
0x00
,
0x04
,
0x21
,
0x02
,
0x20
,
0x02
,
0x04
,
0x40
,
0x20
,
0x00
,
0x28
,
0x00
,
0x0c
,
0x21
,
0x04
,
0x20
,
0x00
,
0x41
,
0x10
,
0x6a
,
0x21
,
0x05
,
0x03
,
0x40
,
0x20
,
0x05
,
0x20
,
0x03
,
0x11
,
0x00
,
0x00
,
0x20
,
0x02
,
0x41
,
0x01
,
0x6b
,
0x21
,
0x02
,
0x20
,
0x02
,
0x04
,
0x40
,
0x20
,
0x05
,
0x20
,
0x04
,
0x6a
,
0x21
,
0x05
,
0x0c
,
0x01
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x20
,
0x00
,
0x10
,
0x07
,
0x0b
,
0x0b
,
0x2c
,
0x00
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x04
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x05
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x07
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x08
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x09
,
0x41
,
0x04
,
0x10
,
0x06
,
0x24
,
0x0a
,
0x41
,
0x0c
,
0x10
,
0x06
,
0x24
,
0x0c
,
0x0b
,
0x32
,
0x01
,
0x02
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x03
,
0x41
,
0x00
,
0x21
,
0x04
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x03
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x04
,
0x20
,
0x01
,
0x20
,
0x02
,
0x10
,
0x13
,
0x41
,
0x0a
,
0x10
,
0x12
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x20
,
0x00
,
0x10
,
0x0b
,
0x0b
,
0x6f
,
0x01
,
0x03
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x00
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x00
,
0x0e
,
0x03
,
0x00
,
0x01
,
0x02
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x01
,
0x23
,
0x06
,
0x21
,
0x02
,
0x20
,
0x02
,
0x04
,
0x40
,
0x0c
,
0x02
,
0x05
,
0x0c
,
0x01
,
0x0b
,
0x0b
,
0x41
,
0x01
,
0x21
,
0x01
,
0x41
,
0x01
,
0x24
,
0x06
,
0x23
,
0x07
,
0x41
,
0x00
,
0x36
,
0x00
,
0x00
,
0x23
,
0x09
,
0x41
,
0x01
,
0x36
,
0x00
,
0x00
,
0x23
,
0x08
,
0x41
,
0x00
,
0x36
,
0x00
,
0x00
,
0x23
,
0x0a
,
0x41
,
0x01
,
0x36
,
0x00
,
0x00
,
0x23
,
0x05
,
0x41
,
0x02
,
0x36
,
0x00
,
0x00
,
0x0c
,
0x00
,
0x0b
,
0x41
,
0x02
,
0x21
,
0x01
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x2e
,
0x01
,
0x02
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x03
,
0x41
,
0x00
,
0x21
,
0x04
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x03
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x04
,
0x20
,
0x01
,
0x20
,
0x02
,
0x10
,
0x13
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x20
,
0x00
,
0x10
,
0x0b
,
0x0b
,
0x6c
,
0x01
,
0x03
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x00
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x00
,
0x0e
,
0x03
,
0x00
,
0x01
,
0x02
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x01
,
0x23
,
0x0b
,
0x21
,
0x02
,
0x20
,
0x02
,
0x04
,
0x40
,
0x0c
,
0x02
,
0x05
,
0x0c
,
0x01
,
0x0b
,
0x0b
,
0x41
,
0x01
,
0x21
,
0x01
,
0x41
,
0x01
,
0x24
,
0x0b
,
0x10
,
0x0e
,
0x23
,
0x0c
,
0x41
,
0x00
,
0x10
,
0x0a
,
0x23
,
0x0c
,
0x28
,
0x00
,
0x00
,
0x10
,
0x0b
,
0x36
,
0x00
,
0x00
,
0x23
,
0x0c
,
0x41
,
0x08
,
0x36
,
0x00
,
0x04
,
0x23
,
0x0c
,
0x41
,
0x07
,
0x36
,
0x00
,
0x08
,
0x0c
,
0x00
,
0x0b
,
0x41
,
0x02
,
0x21
,
0x01
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x24
,
0x01
,
0x02
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x01
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x02
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x24
,
0x01
,
0x02
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x01
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x02
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x2a
,
0x01
,
0x02
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x02
,
0x41
,
0x00
,
0x21
,
0x03
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x02
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x03
,
0x20
,
0x00
,
0x20
,
0x01
,
0x10
,
0x05
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x5f
,
0x01
,
0x04
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x00
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x41
,
0x00
,
0x21
,
0x03
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x00
,
0x0e
,
0x03
,
0x00
,
0x01
,
0x02
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x01
,
0x23
,
0x03
,
0x21
,
0x02
,
0x20
,
0x02
,
0x04
,
0x40
,
0x0c
,
0x02
,
0x05
,
0x0c
,
0x01
,
0x0b
,
0x0b
,
0x41
,
0x01
,
0x21
,
0x01
,
0x41
,
0x01
,
0x24
,
0x03
,
0x10
,
0x0e
,
0x10
,
0x01
,
0x21
,
0x03
,
0x23
,
0x04
,
0x20
,
0x03
,
0x36
,
0x00
,
0x00
,
0x10
,
0x15
,
0x0c
,
0x00
,
0x0b
,
0x41
,
0x02
,
0x21
,
0x01
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x3f
,
0x01
,
0x03
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x00
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x00
,
0x0e
,
0x01
,
0x00
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x01
,
0x23
,
0x04
,
0x28
,
0x00
,
0x00
,
0x21
,
0x02
,
0x20
,
0x02
,
0x41
,
0x01
,
0x10
,
0x02
,
0x41
,
0x00
,
0x10
,
0x0a
,
0x41
,
0x0f
,
0x41
,
0x24
,
0x10
,
0x0d
,
0x0c
,
0x02
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x74
,
0x01
,
0x06
,
0x7f
,
0x41
,
0x00
,
0x21
,
0x00
,
0x41
,
0x00
,
0x21
,
0x01
,
0x41
,
0x00
,
0x21
,
0x02
,
0x41
,
0x00
,
0x21
,
0x03
,
0x41
,
0x00
,
0x21
,
0x04
,
0x41
,
0x00
,
0x21
,
0x05
,
0x02
,
0x40
,
0x03
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x02
,
0x40
,
0x20
,
0x00
,
0x0e
,
0x02
,
0x00
,
0x01
,
0x00
,
0x0b
,
0x41
,
0x00
,
0x21
,
0x01
,
0x0c
,
0x00
,
0x0b
,
0x41
,
0x01
,
0x21
,
0x01
,
0x23
,
0x04
,
0x28
,
0x00
,
0x00
,
0x21
,
0x02
,
0x23
,
0x09
,
0x28
,
0x00
,
0x00
,
0x21
,
0x03
,
0x20
,
0x02
,
0x20
,
0x03
,
0x10
,
0x00
,
0x41
,
0xe4
,
0x00
,
0x10
,
0x03
,
0x23
,
0x04
,
0x28
,
0x00
,
0x00
,
0x21
,
0x04
,
0x23
,
0x07
,
0x28
,
0x00
,
0x00
,
0x21
,
0x05
,
0x20
,
0x04
,
0x20
,
0x05
,
0x10
,
0x00
,
0x41
,
0x84
,
0x07
,
0x10
,
0x03
,
0x41
,
0x01
,
0x21
,
0x00
,
0x0c
,
0x01
,
0x0b
,
0x0b
,
0x0b
,
0x0b
,
0x08
,
0x00
,
0x10
,
0x0c
,
0x10
,
0x14
,
0x10
,
0x16
,
0x0b
,
0x0b
,
0x39
,
0x01
,
0x00
,
0x41
,
0x00
,
0x0b
,
0x33
,
0x24
,
0x24
,
0x77
,
0x61
,
0x64
,
0x73
,
0x24
,
0x24
,
0x61
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0xe5
,
0x87
,
0xb9
,
0xe8
,
0xaf
,
0xad
,
0xe8
,
0xa8
,
0x80
,
0x28
,
0x57
,
0x61
,
0x29
,
0x2f
,
0x41
,
0x72
,
0x64
,
0x75
,
0x69
,
0x6e
,
0x6f
,
0x20
,
0x69
,
0x73
,
0x20
,
0x72
,
0x75
,
0x6e
,
0x6e
,
0x69
,
0x6e
,
0x67
,
0x20
,
0x2e
,
0x2e
,
0x2e
};
unsigned
int
app_wasm_len
=
1512
;
_examples/arduino/arduino.ino
0 → 100644
浏览文件 @
3e1ba7be
/*
* Wasm3 - high performance WebAssembly interpreter written in C.
* Copyright © 2020 Volodymyr Shymanskyy, Steven Massey.
* All rights reserved.
*/
#include <wasm3.h>
#include <m3_env.h>
/*
* Configuration
*/
// Redefine the default LED pin here, if needed
#ifndef LED_PIN
#define LED_PIN LED_BUILTIN
#endif
#define WASM_STACK_SLOTS 1024
#define NATIVE_STACK_SIZE (32*1024)
// For (most) devices that cannot allocate a 64KiB wasm page
#define WASM_MEMORY_LIMIT 8096
/*
* WebAssembly app
*
* This is essentially a simple "Blink" sketch, compiled to WebAssembly
* You can build a wasm binary using C/C++, Rust, AssemblyScript, TinyGo, ...
* See https://github.com/wasm3/wasm3-arduino/tree/master/wasm_apps for details
*/
#include "app.wasm.h"
/*
* API bindings
*
* Note: each RawFunction should complete with one of these calls:
* m3ApiReturn(val) - Returns a value
* m3ApiSuccess() - Returns void (and no traps)
* m3ApiTrap(trap) - Returns a trap
*/
m3ApiRawFunction
(
m3_arduino_millis
)
{
m3ApiReturnType
(
uint32_t
)
m3ApiReturn
(
millis
());
}
m3ApiRawFunction
(
m3_arduino_delay
)
{
m3ApiGetArg
(
uint32_t
,
ms
)
// You can also trace API calls
//Serial.print("api: delay "); Serial.println(ms);
delay
(
ms
);
m3ApiSuccess
();
}
// This maps pin modes from arduino_wasm_api.h
// to actual platform-specific values
uint8_t
mapPinMode
(
uint8_t
mode
)
{
switch
(
mode
)
{
case
0
:
return
INPUT
;
case
1
:
return
OUTPUT
;
case
2
:
return
INPUT_PULLUP
;
}
return
INPUT
;
}
m3ApiRawFunction
(
m3_arduino_pinMode
)
{
m3ApiGetArg
(
uint32_t
,
pin
)
m3ApiGetArg
(
uint32_t
,
mode
)
#if !defined(PARTICLE)
typedef
uint8_t
PinMode
;
#endif
pinMode
(
pin
,
(
PinMode
)
mapPinMode
(
mode
));
m3ApiSuccess
();
}
m3ApiRawFunction
(
m3_arduino_digitalWrite
)
{
m3ApiGetArg
(
uint32_t
,
pin
)
m3ApiGetArg
(
uint32_t
,
value
)
digitalWrite
(
pin
,
value
);
m3ApiSuccess
();
}
m3ApiRawFunction
(
m3_arduino_getPinLED
)
{
m3ApiReturnType
(
uint32_t
)
m3ApiReturn
(
LED_PIN
);
}
m3ApiRawFunction
(
m3_arduino_print
)
{
m3ApiGetArgMem
(
const
uint8_t
*
,
buf
)
m3ApiGetArg
(
uint32_t
,
len
)
Serial
.
write
(
buf
,
len
);
m3ApiSuccess
();
}
M3Result
LinkArduino
(
IM3Runtime
runtime
)
{
IM3Module
module
=
runtime
->
modules
;
const
char
*
arduino
=
"arduino"
;
m3_LinkRawFunction
(
module
,
arduino
,
"millis"
,
"i()"
,
&
m3_arduino_millis
);
m3_LinkRawFunction
(
module
,
arduino
,
"delay"
,
"v(i)"
,
&
m3_arduino_delay
);
m3_LinkRawFunction
(
module
,
arduino
,
"pinMode"
,
"v(ii)"
,
&
m3_arduino_pinMode
);
m3_LinkRawFunction
(
module
,
arduino
,
"digitalWrite"
,
"v(ii)"
,
&
m3_arduino_digitalWrite
);
// Test functions
m3_LinkRawFunction
(
module
,
arduino
,
"getPinLED"
,
"i()"
,
&
m3_arduino_getPinLED
);
m3_LinkRawFunction
(
module
,
arduino
,
"print"
,
"v(*i)"
,
&
m3_arduino_print
);
return
m3Err_none
;
}
/*
* Engine start, liftoff!
*/
#define FATAL(func, msg) { Serial.print("Fatal: " func " "); Serial.println(msg); return; }
void
wasm_task
(
void
*
)
{
M3Result
result
=
m3Err_none
;
IM3Environment
env
=
m3_NewEnvironment
();
if
(
!
env
)
FATAL
(
"NewEnvironment"
,
"failed"
);
IM3Runtime
runtime
=
m3_NewRuntime
(
env
,
WASM_STACK_SLOTS
,
NULL
);
if
(
!
runtime
)
FATAL
(
"NewRuntime"
,
"failed"
);
#ifdef WASM_MEMORY_LIMIT
runtime
->
memoryLimit
=
WASM_MEMORY_LIMIT
;
#endif
IM3Module
module
;
result
=
m3_ParseModule
(
env
,
&
module
,
app_wasm
,
app_wasm_len
);
if
(
result
)
FATAL
(
"ParseModule"
,
result
);
result
=
m3_LoadModule
(
runtime
,
module
);
if
(
result
)
FATAL
(
"LoadModule"
,
result
);
result
=
LinkArduino
(
runtime
);
if
(
result
)
FATAL
(
"LinkArduino"
,
result
);
IM3Function
f
;
result
=
m3_FindFunction
(
&
f
,
runtime
,
"_start"
);
if
(
result
)
FATAL
(
"FindFunction"
,
result
);
Serial
.
println
(
"Running WebAssembly..."
);
result
=
m3_CallV
(
f
);
// Should not arrive here
if
(
result
)
{
M3ErrorInfo
info
;
m3_GetErrorInfo
(
runtime
,
&
info
);
Serial
.
print
(
"Error44: "
);
Serial
.
print
(
result
);
Serial
.
print
(
" ("
);
Serial
.
print
(
info
.
message
);
Serial
.
println
(
")"
);
if
(
info
.
file
&&
strlen
(
info
.
file
)
&&
info
.
line
)
{
Serial
.
print
(
"At "
);
Serial
.
print
(
info
.
file
);
Serial
.
print
(
":"
);
Serial
.
println
(
info
.
line
);
}
}
}
void
setup
()
{
Serial
.
begin
(
115200
);
delay
(
100
);
// Wait for serial port to connect
// Needed for native USB port only
while
(
!
Serial
)
{}
Serial
.
println
(
"
\n
Wasm3 v"
M3_VERSION
" ("
M3_ARCH
"), build "
__DATE__
" "
__TIME__
);
#ifdef ESP32
// On ESP32, we can launch in a separate thread
xTaskCreate
(
&
wasm_task
,
"wasm3"
,
NATIVE_STACK_SIZE
,
NULL
,
5
,
NULL
);
#else
wasm_task
(
NULL
);
#endif
}
void
loop
()
{
delay
(
100
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录