摘要:开发板,我们使用易芯联的YC-AIS(https://item.taobao.com/item.htm?id=925144665908&skuId=5803566756266),带个LCD屏、扬声器、麦克、按键,还有3个扩展口,基本上各种应用都可以用了,尤其带
今天正式开始Rust嵌入式开发物联网平台的系列,从零构建一个包括嵌入式、云平台、手机APP的一体化平台,实践一下rust的全栈开发。
我们基于ESP32S3芯片来开发,因为它既全面,性能又强悍,是一款全能的SoC:
主频最高240MHz支持WiFi,连接云平台支持蓝牙,连接手机16M的Flash,无需片外扩展可以干很多事儿支持I2S,我们可以实现多媒体应用开发板,我们使用易芯联的YC-AIS(https://item.taobao.com/item.htm?id=925144665908&skuId=5803566756266),带个LCD屏、扬声器、麦克、按键,还有3个扩展口,基本上各种应用都可以用了,尤其带一个RS-485的串口,这样就可以扩展接很多传感器之类的,后面的可玩性比较强。
首先要搭下环境,ESP32S3的SDK其实是C语言的,带一个FreeRTOS操作系统,支持no_std和std两种开发方式,使用STD的开发方式就可以使用线程、异步,跟在PC上开发一样,就比较方便,尤其是在开发多媒体和处理网络的时候,异步编程比较方便,我们这里全用std模式,基本在std模式下也完全可以使用no_std模式下的所有API。因为16M的Flash也不用考虑尺寸问题。
ESP32的Rust开发环境要在Linux类系统下,Windows下支持不好,当然也可以用Windows的WSL,但不建议,会有两个大坑:
一是路径问题,由于ESP-IDF的各种包含,路径会比较长,超过了Windows上支持的路径长度极限,工程目录只能放在某个盘的根目录,而且目录名的长度不能超过10个字符,这样很不实用,不好组织工程;
二是驱动问题:有些驱动安装比较麻烦。
所以强烈建议直接使用Linux虚拟机,安装干净的Linux操作系统,而且要新一些的,因为最新版的ESP-IDF的某些组件用到了glclib 2.39版本,我就是在Deepin23上安装了一半装不下去了,还需要改环境变量,比较麻烦,但如果重新编译进行系统升级就会有问题,我是试了Deepin25社区版,升级的Deepin23,然后就进不去桌面了,然后就重新装了。
直接装Deepin25是可以的,Ubuntu的话装最新的就行了,别折腾。有时间的可以试下Ubuntu,Deepin25被VMWare支持的还不好,无法启用网络磁盘的映射,这样虚拟机跟主机拷东西比较麻烦。
虚拟机的磁盘空间留得大一些,ESP32的开发环境安装完再加上编译时的各种包还是相当大的,虚拟机的磁盘空间最少留够80G,否则你啥也干不了,否则请安装操作系统的时候启用LVM,后面可以再扩展,要不就难了。
想系统了解下ESP32的Rust开发环境的请参考电子书:
系统默认应该是已经安装了Python 3.12,还需要装env
sudo apt install python3.12-venv这是ESP-32的Rust开发基础环境,包括了各种工具和库
sudo apt install build-essential libssl-dev libuv1-dev pkg-config libudev-dev cargo install cargo-generate ldproxy espupcargo install cargo-espflash espflashespup install因为这一步安装的时候会有很多是从github上下载的,中间可能失败,要么用代理,要么你就多试几次,github不是不能访问,应该是限制访问了。
我的连上之后可以用lsusb查看USB设备是否连接成功,
Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 004: ID 0e0f:0008 VMware, Inc. Virtual Bluetooth Adapter
Bus 001 Device 005: ID 303a:1001 Espressif USB JTAG/serial debug unit
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
对应的设备是/dev/ttyACM0
使用该设备时我的显示是`dev`出厂时芯片里都烧了程序,会输出日志,其实都不用啥设备工具,直接用cat命令即可:
cat /dev/ttyACM0创建工程从模板创建项目:
cargo install esp-generate然后根据提示创建项目就可以了,然后跟标准的rust用法就一样的,编译并运行hello-world:
cargo run基本平台就搭好了,后面我们再一块儿一块儿地驱动硬件
来源:物联一尘