golang可以写嵌入式,对于做嵌入式开发来说,golang的网络支持是非常好用的,主要是为嵌入式开发平台打造,基于cgo实现了golang对于/dev目录下的uart设备控制,读写等操作。cgo相关部分已封装成golang包,在golang业务代码中使用golang调用即可。
本文的操作环境:Windows10系统、go1.20版本、dell g3电脑。
在嵌入式设备中一般存储控件都比较小,go编译后的程序包含运行时,体积一般比较大,所以我们需要对程序做一个瘦身,瘦身的方法很简单,编译的时候去除调试信息,然后使用upx来做压缩,upx支持各种cpu架构的压缩。
主要是为嵌入式开发平台打造,基于cgo实现了golang对于/dev目录下的uart设备控制,读写等操作。cgo相关部分已封装成golang包,在golang业务代码中使用golang调用即可。
编译方法
x86平台:go build
arm平台:CGO_ENABLED=1 GOOS=linux GOARCH=arm CC=arm-none-linux-gnueabi-gcc go build (注意:CC是你的交叉编译工具名称)
执行程序方法
两种平台都是:
./cgouart
在移植过程中, 需要更改main.go执行程序的相应串口设备名称,即可移植使用,例如6Q的: /dev/ttymxc1或者x86的:ttyUSB0。这个需要自己根据自己平台串口的名称进行更改移植
对于做嵌入式开发来说,golang的网络支持是非常好用的,但是往往嵌入式平台下,经常需要用到一些外设,比如gpio,uart、i2c,spi等等一些/dev目录下的一些设备。所以,使用cgo封装成go包,对于要求需要网络,同时也需要基础硬件控制的平台来说,将会非常方便。