问题标签 [tinygo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
go - 不能将 lib.Const(lib.Version 类型的常量 16777216)用作 lib.Version
我遇到了一个奇怪的错误。我有这个更大的项目,可以用典型的go build
. 但是,当我切换到 TinyGo (v0.8.0) 时。我从这段代码中得到了上述错误:
我更改了名称以减少混淆,但符号完全相同。lib.Const
是 a 的常数lib.Version
。指针也不是。
我理解这是一个非常具体的问题,因为它属于 TinyGo 领域。这更像是“记录在案”......而且我什至不得不创建“tinygo”标签,因为这个问题非常具体。但要添加更多细节:
- 在添加上述代码之前,它一直在编译。
- 确切的构建命令是
tinygo build -target=wasm -o build/out.wasm src/main-wasm.go
go - LinkError: WebAssembly.instantiate(): Import #... module="env" function="memcpy" error: function import requires a callable
我正在构建一个 Go wasm 模块(用 TinyGo 编译),它编译得很好。但是当我尝试在浏览器中运行它时,我得到了上述错误。
go - Go 支持 MCU 吗?
我已经探索过,Go 是否支持微控制器单元。得到了一些关于TinyGo的信息。怀疑 TinyGo 是否等同于 Linux 中支持的 Golang。
go - 最小化 PLL 频率计算中的整数舍入误差
在特定的 STM32 微控制器上,系统时钟由 PLL 驱动,其频率F
由以下公式给出:
S
是 PLL 输入源频率(1 - 64000000
或 64 MHz)。
其他因素M
、N
、K
和P
是用户可以修改以校准频率的参数。从我正在使用的 SDK 中的位掩码来看,每个位掩码的值可以限制为最大M < 64
, N < 512
,K < 8192
和P < 128
.
不幸的是,我的目标固件不支持 FPU,所以浮点运算不可用。相反,我需要F
使用仅整数算术进行计算。
我试图重新排列给定的公式,考虑到 3 个目标:
- 展开并分配所有乘法因子
- 最小化每个分母中的因子数
- 最小化执行的分割总数
- 如果两个表达式具有相同的除数,则选择分母具有最小最大值的一个(在前面的段落中确定)
但是,我每次扩展和重新排列表达式的尝试都会产生比最初逐字表达的原始公式更大的错误。
为了测试公式的不同排列并比较错误,我编写了一个 Go 小程序,您可以在此处在线运行。
是否可以改进这个公式,以便在使用整数运算时将误差最小化?还有我上面列出的任何目标不正确或无用吗?
linux - 使用 tinygo 从 x64 Linux 编译 arm 二进制文件:未定义的参考问题
当我输入以下命令时,我正在尝试使用 Linux 中的 tinygo 编译程序:
我有 :
上面显示的相关代码是:
我刚刚使用sudo apt-get install arm-linux-gnueabihf来安装这个包。
但是,GOARCH=arm go build -o ./main.go可以正常工作。使用 CGO_ENABLED="0" 标志不会改变任何东西。我在网上搜索过,没有发现类似的问题。感谢您提供任何可能的信息。
环境 :
go - 如何使用 TinyGo 控制 Arduino 上的 PWM 输出
我正在尝试使用带有用 Go 编写的代码的 Arduino ATMega2560 来转动电机。这里有一个使用 TinyGo v0.14.1 的示例: https ://create.arduino.cc/projecthub/alankrantas/tinygo-on-arduino-uno-an-introduction-6130f6
该示例实质上如下所示:
当我尝试打电话时machine.InitPWM()
出现错误InitPWM not declared by package machine
TinyGo 的当前版本(也是我正在运行的版本)是 v0.19。似乎机器包已被修改为以不同的方式使用 PWM,但是,我在任何地方都找不到如何正确使用它。
go - 是否可以通过使用 TinyGo 编译 Go 二进制文件来使其更小?
TinyGo主页说它是为微控制器(或 MCU)设计的。我想知道是否可以使用 TinyGo 将 go 编译成 ARM/Linux 系统的小二进制文件?
目前UPX --best --lzma
,我的 go 代码编译成 arm 二进制文件大约 1MB,我希望它更小,因为系统存储空间有限。
go - 如何在 tinygo 中映射两个值范围
我正在使用 Golang 用 tinygo 编写 arduino uno。我正在尝试映射两个值范围。
一个是编码器,范围在 0-1000 之间,另一个是 tinygo 的 ADC 范围在 0-65535 之间。我正在读取 ADC 范围,需要将其转换为 0-1000(编码器)的范围。
我已经尝试了几件事,但我遇到的基本问题是数据类型。例如,以下公式等于 0:
go - 如何在 tinygo 蓝牙中写入响应?
我正在尝试使用 Tinygo 蓝牙连接到 Timeflip v2(https://github.com/DI-GROUP/TimeFlip.Docs/blob/master/Hardware/TimeFlip%20BLE%20protocol%20ver4_02.06.2020.md)。
API 文档说,我需要登录(这是写入 f1196f57-71a4-11e6-bdf4-0800200c9a66,然后读取 f1196f53-71a4-11e6-bdf4-0800200c9a66 以检查登录结果)。
我在 TinyGo 中看到的 DeviceCharacteristics 的唯一内容是 WriteWithoutResponse ( https://pkg.go.dev/github.com/tinygo-org/bluetooth#DeviceCharacteristic.WriteWithoutResponse )。
当我使用它时,它看起来对结果没有影响。
结果是
至少有一个结果应该是 0x02(无效密码)。
有人可以给我一个提示吗?