tinygo(1):使用tinygo,控制arduino设备,超级简单,直接编译烧录到arduino设备上

前言


本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/103968186

未经博主允许不得转载。
博主地址是:http://blog.csdn.net/freewebsys

1,关于tinygo


基于LLVM,针对小型设备的Go编译器,可以支持很多开源硬件设备。
比如 arduino BBC micro:bit ,我就研究过 arduino ,需要写一个类似c的代码。
然后用一个ide 工具进行烧录。在 linux 上面也不算复杂。

然后 tinygo 用起来就超级简单了,可以直接一行命令就编译使用。
我购买了 esp8266 设备,但是目前看好像不支持,不过估计很快就可以支持了。

2,安装环境


直接找了台电脑安装成 xubuntu 系统,再上面折腾。
https://tinygo.org/getting-started/linux/
安装最新的软件:

wget https://github.com/tinygo-org/tinygo/releases/download/v0.11.0/tinygo_0.11.0_amd64.deb
sudo dpkg -i tinygo_0.11.0_amd64.deb
sudo apt-get install -y gcc-avr avr-libc avrdude

输入 tinygo 然后可以看到版本信息了。
代码样例:
https://github.com/tinygo-org/tinygo/tree/master/src/examples

3,编译并烧录到设备


可以控制的函数

https://tinygo.org/microcontrollers/arduino-uno/

https://tinygo.org/usage/basic/

tinygo flash -target=arduino -port=/dev/ttyACM0  ./demo01.go

然后嗖的一下子,就执行成功了。可以看到把 hex 直接拷贝过去了,490 bytes
符合golang 的特性,就是快。

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: NOTE: "flash" memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/tmp/tinygo247074216/main.hex"
avrdude: input file /tmp/tinygo247074216/main.hex auto detected as Intel Hex
avrdude: writing flash (490 bytes):

Writing | ################################################## | 100% 0.09s

avrdude: 490 bytes of flash written
avrdude: verifying flash memory against /tmp/tinygo247074216/main.hex:
avrdude: load data flash data from input file /tmp/tinygo247074216/main.hex:
avrdude: input file /tmp/tinygo247074216/main.hex auto detected as Intel Hex
avrdude: input file /tmp/tinygo247074216/main.hex contains 490 bytes
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.07s

avrdude: verifying ...
avrdude: 490 bytes of flash verified

avrdude done.  Thank you.

来一个 hello world ,led 开关灯。

package main

// This is the most minimal blinky example and should run almost everywhere.

import (
	"machine"
	"time"
)

func main() {
	led := machine.LED
	led.Configure(machine.PinConfig{Mode: machine.PinOutput})
	for {
		led.Low()
		time.Sleep(time.Millisecond * 500)

		led.High()
		time.Sleep(time.Millisecond * 500)
	}
}

可以看到和普通 arduino 设备一样,可以控制 led 闪亮。golang 开发起来就非常方便了。
在这里插入图片描述
在这里插入图片描述

4,总结


突然一下子明白了,是比较具有颠覆意义的,虽然支持的设备不是很多。
但是后续慢慢会好的,比直接用arduino 开发好,简单,而且感觉上可控制。
毕竟能用golang 写的代码多了,但是还是和普通的golang 有区别的,好多的功能是不能用的,下面是已经实现的lib 库。
https://tinygo.org/lang-support/stdlib/

基于golang 1.13 的但是有些没有实现,已经明白咋回事了。估计很快了。
1-2 个月更新一版,现在 tinygo 的版本是 0.11.0 期待以后更新。
以后做点小程序硬件啥的,就直接用tinygo了。

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/103968186

博主地址是:https://blog.csdn.net/freewebsys

作为 ChitGPT AI,我的认知能力主要是建立在自然语言处理与机器学习技术上的。对于您提出的问题,我们需要先了解一些基础知识: Arduino 是以 ATmega 系列微控制器为核心的开源电子原型平台,其编程语言基于 C 和 C++,可以快速地制作电子原型。Arduino IDE(集成开发环境)是一个用于编写和上传代码到 Arduino 板的软件。而 HEX 文件是一种可执行文件,其中包含处理器的二进制机器代码,可以直接写入到微控制器中,从而实现对设备控制。 而 AT90USB1286 是 Atmel 公司推出的高性能 8 位 AVR 微控制器,配备128KB Flash 存储器、4KB EEPROM 存储器、8KB SRAM 存储器,支持 USB 2.0、SPI、TWI 等多种通讯协议,广泛应用于各种嵌入式设备中。 回到您的问题,如果有arduino编译的hex文件,可以通过以下步骤直接烧录到 AT90USB1286 中: 1. 确认 AT90USB1286 开发板的硬件接口,包括 JTAG、ISP、PDI 等。选择一种可用的编程方式,并连接编程器到 AT90USB1286 开发板上。 2. 打开 Arduino IDE,并选择 AT90USB1286 开发板的型号。 3. 将 HEX 文件导入 Arduino IDE,打开“文件”->“将 sketch 或库导出为 HEX 文件”。 4. 将 HEX 文件上传到 AT90USB1286 开发板。具体步骤可以参考编程器的厂家提供的使用手册或者开发板的用户手册,通常需要使用编程器提供的命令行或者 GUI 工具进行操作。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值