MCU可用Go来开发了

 ✒️ @halomaster 📅 29 Jul 2022, 01:49 GMT⋮ 【硬件】 

# [tinygo 项目](https://github.com/tinygo-org/tinygo) TinyGo是一种针对嵌入式设备和WebAssembly的编译器。它是Go语言的子集,可以在可限制资源的环境中运行,并且可以转换成高效的代码。TinyGo还支持WebAssembly,使Go可以在Web浏览器等环境中运行,并且可以与JavaScript进行交互。 相比Go官方版本,tinygo生成的文件要小非常非常的多。对于一个简单的hello world,tinygo只需要一百多KB,而Go官方版本需要2MB。


[1] @halomaster • 30 Jul 2022, 09:37 GMT 
tinygo 项目编译需要有一些技巧。


[2] @halomaster • 01 Aug 2022, 00:55 GMT 
https://github.com/WebAssembly/wabt 优化工具 https://github.com/sendilkumarn/go-wasm 例子


[3] @halomaster • 01 Aug 2022, 01:00 GMT 
https://aykevl.nl/2019/04/llvm-from-go


[4] @halomaster • 01 Aug 2022, 01:00 GMT 
https://tinygo.org/media/articles/


[5] @halomaster • 01 Aug 2022, 01:01 GMT 
https://aykevl.nl/2019/02/tinygo-goroutines


[6] @halomaster • 01 Aug 2022, 03:18 GMT 
http://journal.stuffwithstuff.com/2015/02/01/what-color-is-your-function/


[7] @halomaster • 05 Aug 2022, 04:16 GMT 
在Go原版的实现里,goroutine每个初始状态就分配了2KB的stack;这对于嵌入式环境并不合适,而且这个stack还会自动增长,对于只有几百KB内存的MCU,是一个极大的不稳定因素。 因此TinyGo采用了完全不同的方案;TinyGo采用了类似C#/JavaScript/C++的协程方案:async/await模型。更妙的是,TinyGo会自动在编译时插入 async/await 关键字,而不需要程序员手写。由于WebAssembly不支持高效率的stack切换,TinyGo选择用 coroutines 替代 分离stack 来实现 goroutine。 LLVM coroutines https://llvm.org/docs/Coroutines.html 具体实现上,TinyGo采用了clang/llvm的coroutines,


[8] @halomaster • 06 Aug 2022, 13:49 GMT 
https://aykevl.nl/2019/04/llvm-from-go


[9] @halomaster • 06 Aug 2022, 14:10 GMT 
https://dev.to/sendilkumarn/tiny-go-to-webassembly-5168


[10] @halomaster • 06 Aug 2022, 14:10 GMT 
https://dev.to/sendilkumarn/reduce-your-webassembly-binaries-72-from-56kb-to-26kb-to-16kb-40mi


[11] @halomaster • 06 Aug 2022, 14:23 GMT 
https://dev.to/sendilkumarn/tiny-go-to-webassembly-5168 非常棒的TinyGo、WASM教程。


[12] @halomaster • 08 Aug 2022, 02:45 GMT 
物联网设备、CLI和WebAssembly的编码概念并不是一个新概念。但是,如果我告诉你,这三者都可以使用Golang呢?TinyGo是一个专门为小地方的开发而设计和使用的专门项目。[本文](https://dev.to/robertinoc_dev/tinygo-good-things-come-in-small-packages-3i1c) 解释了TinyGo的好处,它是什么,以及如何使用它。它还为您提供了一个Golang IoT代码示例,供您查看TinyGo的实际应用。


[13] @halomaster • 08 Aug 2022, 12:39 GMT 
https://github.com/cashoefman/TinyGo-On-ESP32 TinyGo On ESP32


[14] @halomaster • 08 Aug 2022, 12:39 GMT 
https://dev.to/cashoefman/how-to-install-ubuntu-on-raspberry-pi-for-go-and-tinygo-software-development-on-esp32-microcontrollers-8b8


[15] @halomaster • 08 Aug 2022, 12:47 GMT 
https://dev.to/search?q=TinyGo


[16] @halomaster • 13 Aug 2022, 22:35 GMT 
视频: ``` oled和矩阵键盘驱动直接操作gpio开发(c语言),然后提供接口给go语言调用。 t9输入法参考了原子哥,中文gbk字库也是自己生成。其实可以在linux系统安装中文字库,这样应该更简单。 造轮子:由于oled屏是128*64,输入界面比较特殊。所以用go语言做了几个显示组件,比如列表list、文本框memo,t9拼音输入界面就是组合了list和memo的方法做的。 做这个例子主要是为了总结之前所学,学完就要及时输出,可以更好的查漏补缺。下一步将用go语言和f1c100s开发个更加实用的 ``` https://www.bilibili.com/video/BV1s54y1R7Bd


1 of 1 pages  16 replies