首页
学习
活动
专区
圈层
工具
发布
44 篇文章
1
[PyUserInput]模拟鼠标和键盘模拟
2
银行排队模拟(离散事件模拟)
3
Linux网络模拟
4
Linux TC(Traffic Control)作为损伤仪的基础配置和使用
5
深入学习Docker网络(看这篇就完全够了)
6
【鸿蒙 HarmonyOS】鸿蒙手机模拟器 ( 鸿蒙远程模拟器 | 鸿蒙远程模拟器运行手机应用 )
7
探索嵌入式应用框架(EAF)
8
多 OS 混合部署框架
9
嵌入式系统架构浅谈:编程设计模式 (一)---访问硬件的设计模式
10
事件驱动和消息驱动
11
原来 8 张图,就能学废 Reactor 和 Proactor
12
Linux df -h 命令hang住没有反应
13
kafka消费组信息采集异常(hang住)排查
14
ext4 io hung模拟脚本
15
解决 umount 命令卸载磁盘时busy/卡死的问题
16
程序卡死在void HardFault_Handler的解决办法
17
执行sed命令卡死CPU消耗100%一例分析
18
记一次因Redis使用不当导致应用卡死过程
19
字节对齐不慎引发的挂死问题
20
解引用NULL为什么会导致程序挂死?
21
记64位地址截断引发的挂死问题
22
websocket 在线工具_websocket添加请求头
23
【嵌入式Linux应用开发】SquareLine Studio与LVGL模拟器
24
详解Handler机制中消息队列的出队逻辑
25
Android UpdateEngine模块流程(含序列图)
26
物联网时代的嵌入式开发平台
27
400+条实用C/C++框架、库、工具整理 ,你能想到的都在这里了
28
ESP32芯片IO解读
29
M5Stack在ubuntu上进行开发编译
30
【抽象那些事】不完整的抽象&多方面抽象&未用的抽象&重复的抽象
31
H264,你不知道的小技巧
32
linux 创建虚拟块设备,制作文件系统并挂载,用于测试lustre
33
基于linux开发uvc摄像头_uvc协议扩展
34
清晰讲解LSB、MSB和大小端模式及网络字节序
35
在树莓派中使用 MicroPython 接入 MQTT
36
MicroPython 玩转硬件系列1:环境搭建
37
嵌入式系统架构浅谈:编程设计模式 (二)---嵌入并发和资源管理的设计模式
38
嵌入式软件架构设计之分层设计
39
IC之路(一)Proteus-Arduino仿真环境搭建
40
图像处理基础(六)-libjpeg常用算法
41
OpenCV双目标定
42
L-K光流推导及OpenCV代码实现
43
NDI Webcam Input工具,那些你不知道的知识!
44
使用QEMU chroot进行固件本地调试
清单首页其它文章详情

M5Stack在ubuntu上进行开发编译

说明

M5Stack开发板内部采用的是ESP32的芯片,所以如果要建立相应的开发环境,可以在ubuntu上搭建ESP32的开发环境。接下来,整理一下M5Stack如何在ubuntu上进行开发编译工作。

第一步:安装必要的库文件

对于esp32的开发,需要依赖一些库。

代码语言:javascript
复制
sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial

第二步:创建工作目录

首先创建工程目录

代码语言:javascript
复制
mkdir esp32

接着创建工程子目录

代码语言:javascript
复制
mkdir crossTools demos sources

目录说明

crossTools:交叉编译环境

demos:例程

sources:SDK源代码

第三步:交叉编译环境下载

可以到官网上下载xtensa-esp32-elf-linux64-交叉编译环境,也可以用wget在控制台上进行下载。

代码语言:javascript
复制
wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-75-gbaf03c2-5.2.0.tar.gz

下载完成后解压即可。

代码语言:javascript
复制
tar -zxvf xtensa-esp32-elf-linux64-1.22.0-75-gbaf03c2-5.2.0.tar.gz

第四步:将编译环境添加至环境变量

这一步的作用是可进行全局编译

修改/etc/profile文件

代码语言:javascript
复制
sudo vim /etc/profile

末尾添加自己解压的交叉编译环境的目录

例如:

代码语言:javascript
复制
export PATH=$PATH:/home/bigmagic/work/esp32/crossTools/xtensa-esp32-elf/bin

其中/home/bigmagic/work/esp32/是我自己电脑上的目录,可以根据自己实际需求修改

配置完成后source一下环境

代码语言:javascript
复制
source /etc/profile

检查一下是否成功

代码语言:javascript
复制
xtensa-esp32-elf-gcc -v

出来如下的画面,表示成功

第五步:下载SDK代码

由于采用的是乐鑫的工具链,所以需要下载SDK,首先下载esp-idf。

代码语言:javascript
复制
git clone --recursive https://github.com/espressif/esp-idf.git

同时设置环境变量

代码语言:javascript
复制
export IDF_PATH=/home/bigmagic/work/esp32/sources/esp-idf

注意,这里也是需要自己的工作目录,需要进行相应的修改。

最后更新一下环境

代码语言:javascript
复制
source /etc/profile

第六步:编译与配置

有了上述的交叉编译工具,并且有了相应的SDK,那么就可以编译工程了

在demo目录下添加工程文件hello_world,具体的目录在下面的文件中

代码语言:javascript
复制
/XXX/esp32/sources/esp-idf/examples/get-started/hello_world

将该文件夹全部转移到demo目录下

进入hello_world文件夹,直接make menuconfig

需要配置的地方主要有三点

(1)交叉编译工具

(2)设置bootload的打印级别

(3)配置烧写模式

配置完成后即可编译固件

代码语言:javascript
复制
make all -j8

编译完成后可进行烧录

代码语言:javascript
复制
make flash

可能会提示如下的错误

这是因为/dev/ttyUSB0访问权限不够造成

将该权限提高即可烧写

分析串口的烧写过程,实际上是有三个部分

代码语言:javascript
复制
0x1000 build/bootloader/bootloader.bin
0x10000 hello-world.bin
0x8000 partition_singleapp.bin

启动minicon即可看到

此时,表示系统启动并验证成功。

总结

在ubuntu上使用ESP32的开发环境的好处是编译的很快,同时,烧写起来比较方便,但是编辑代码与下载调试不如windows。个人以为,在window上使用vscode+platform IO的开发编译环境更为方便。

下一篇
举报
领券