ESP32,使用gitee搭建 ESP-IDF 开发框架

ESP32便宜,开发方便,非常适合初学者用来学习,之前我自己写的开发环境可能不再适合,推荐下面这篇文章。

=====

关于如何搭建ESP32的开发环境,乐鑫官方给出了很详细的教程和文档,基本上跟着官方教程来操作,都可以顺利把ESP-IDF的开发环境搭建好,并且运行一个helloworld程序。

乐鑫官方提供的ESP-IDF框架搭建文档,参考以下链接:

https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/index.html

网上也有很多关于ESP32开发环境搭建的文章,我个人觉得写得比较好的是以下这两篇,文章已经包括了windows和Linux下的开发环境搭建。

https://blog.csdn.net/qq_36347513/article/details/115619605

https://hellobug.blog.csdn.net/article/details/108405073

乐鑫官方提供的文档,以及网上大部分ESP32环境搭建的文章,在搭建开发环境获取源码的时候,由于使用了国外知名的程序员交友平台github,往往会导致源码获取中断或失败,github访问失败是一些特别的原因导致的。

正因为这样,很多开发者在搭建开发环境上浪费了很多时间,甚至还没开始就想放弃。为了解决国内开发者从github上获取ESP相关仓库缓慢的问题,乐鑫提供了在gitee上获取ESP-IDF源码的方法。

在windows上搭建ESP-IDF开发环境的时候,可以使用乐鑫提供的ESP-IDF工具安装器,指定优先选择Espressif的下载服务器,上面提供的博客文章,已经有提及,本文主要是使用Linux命令行的方式搭建开发环境。

为什么使用Linux命令行搭建开发环境,主要是因为自由度高,虽然操作略复杂,但乐鑫官方很多资料和文档,都是基于Linux或windows命令行的方式开发的,因此,建议开发者学习一下如何使用命令行搭建ESP32的开发环境。

阅读本文需要有一定的Linux或windows命令行操作基础,需要掌握一定的git命令使用,以及具备一些脚本使用的基础知识。ESP32的开发环境搭建,均使用了git命令,Linux命令行,以及可执行脚本。

建议先阅读 ESP-IDF 编程指南快速入门 的相关章节,对开发环境搭建有一个基本的了解,并且已经完成第一步的安装准备工作,再执行本文的相关操作。

本文使用的操作系统是ubuntu18.04,操作目录是/opt/esp32,使用root用户进行操作,如果没有特别说明,操作路径均是相对路径,在执行命令的时候,重点注意命令的执行路径是相对路径还是绝对路径。

1、执行以下命令,在/opt目录下创建esp32文件夹,并修改文件夹的权限为可读可写,命令如下图所示。

cd /opt/

mkdir esp32

chmod 666 esp32/

ls -al

2、进入esp32目录,执行git clone 命令,获取ESP-IDF在gitee上托管的源码和工具,注意,这次的git clone仅仅是获取ESP-IDF的源码,还没有包含ESP-IDF的子模块,ESP-IDF的源码需要结合子模块才能使用,子模块在后面的步骤进行获取。

cd esp32/

git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git

git clone https://gitee.com/EspressifSystems/esp-idf.git

3、在esp-gitee-tools工具包里面,提供了一个submodule-update.sh脚本,用来更新ESP-IDF框架的子模块,这个脚本主要是使用了gitee作为镜像源,更新ESP-IDF框架必要的子模块,避免了在github下载缓慢或出错的情况。

cd esp-gitee-tools/

export EGT_PATH=$(pwd)

cd ../esp-idf/

$EGT_PATH/submodule-update.sh

耐心等待一段时间后,如果网络没有问题的话,子模块一般都会更新完成,至此,整个ESP-IDF的源码及子模块已经下载完毕,如下图所示。

4、下载完ESP-IDF源码后,还需要下载和设置ESP相关的工具,比如编译器,调试器,Python包,等等。由于github下载缓慢,可以优先选用乐鑫的下载服务器进行github资源下载。

export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"

./install.sh

编译器、调试器和Python包这些工具,默认下载在/root/.espressif目录下,也可以通过修改环境变量来改变这个下载目录,但为了方便起见,不建议修改,如下图所示。

下载完成后,如下图所示。

5、工具包下载完成后,还需要设置环境变量,让操作终端知道当前的工具包位置,根据下载完成的提示,需要在esp-idf目录下,执行export.sh脚本,来完成环境变量的配置,如下图所示。

. ./export.sh

(注意,命令开始的“.”与export.sh脚本之间,有一个空格)

为了方便在任何终端使用配置好的环境变量,不用每次重新打开终端窗口都敲一堆指令去,可以为该脚本创建一个别名,在/root/.bashrc添加以下指令,重启终端后,就可以用get_idf指令来刷新环境变量了。

alias get_idf='. /opt/esp32/esp-idf/export.sh'

6、在ESP-IDF的目录下面,examples文件夹包含了一系列例程,我们可以使用examples文件夹里面的 get-started/helloworld工程,来验证开发环境是否搭建成功。复制helloworld工程到esp32目录,复制完成后,如下图所示。

cp examples/get-started/hello_world/ ../ -a

7、进入helloworld工程目录,设置目标芯片,使用menuconfig配置工程,对于helloworld示例,由于我使用的ESP32芯片是ESP32-S0WD,这是一款单核芯片,需要把ESP32芯片配置为单核模式,工程配置窗口如下图所示。

cd /opt/esp32/hello_world

idf.py set-target esp32

idf.py menuconfig

8、执行idf.py build构建和编译工程,这个命令可以编译helloworld应用程序和ESP-IDF所有组件,并且会生成bootloader、分区表和应用程序的二进制文件,编译成功后,如下图所示。

idf.py build

9、编译完成后,可以使用以下命令,将刚刚生成的二进制文件,烧录到开发板上,/dev/ttyUSB0是开发板在ubuntu18.04的串口端口号,需要根据实际情况进行设置,软件烧录成功后,可以在终端窗口观察到程序运行,打印输出helloworld。

idf.py -p /dev/ttyUSB0 flash monitor

10、至此,ESP-IDF开发环境已经搭建完成,在Linux环境下,可以使用vscode作为代码编辑工具,关于vscode的配置,网上已经有不少文章可以参考,这里不再重复描述。

-- END --

转自,如果有这方面开发要求,可以关注下面公众号,说是发哥朋友


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

嵌入式Linux

微信扫描二维码,关注我的公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/465674.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jQuery的ajax技术

编辑本博客 ajax异步的JavaScript和html load() 从服务器加载数据,并把返回的数据放入备选元素中。这里加载回来的数据可以只有一个p标签,无需head元素等 $("selector").load(url,data,callback) url:必选,规定加载的ur…

Linux设备树的传递以及kernel中对设备树的解析

当U-Boot将设备树加载到内存指定位置后,ARM内核的SoC以通用寄存器r2来传递dtb在内存中的地址。kernel获取到该地址后对dtb文件做进一步的处理。#设备树的传递当使用bootm加载kernel镜像时(bootz是对bootm的一种封装以及功能扩展,实质一样&…

常用shell命令

要复制整个目录,请使用 cp 命令的 -r 选项。例如,如果有一个名为 mydir 的目录,其中包含 myfile 和 newfile,则可以将该目录复制到一个名为 mydir2 的新目录。mydir2 还将包含 myfile 和 newfile 的副本。请使用以下命令&#xff…

Linux kernel之SMP初始化

01—SMP数据结构SMP的数据结构如下图所示,主要由2部分构成,通过两个宏定义CONFIG_SMP和CONFIG_HOT_PLUG来控制。当设置kernel支持SMP模式时,那么CONFIG_SMP选项是一定会打开的,因此第一部分是必须实现的内容。而第二部分是否需要实…

Python3——多线程之threading模块

Python3——多线程之threading模块 目录 Python3——多线程之threading模块 Threading模块的对象 Threading模块的Thread类 queue模块(线程间通信) Python 提供了多个模块来支持多线程编程,包括 thread、 threading 和 Queue 模块等。程…

MTK笔试1题~

这个题目是前几天一个好友分享给我的,但是因为时间原因没有及时写成文章。这是他参加MTK笔试的题目题目如下:网友提供的代码如下:#include "stdio.h"typedef struct n{int data;struct n* next;struct n* pre; }*pnode;int main(){…

Python3 —— 逗号分隔值CSV

Python3 —— 逗号分隔值CSV 目录 Python3 —— 逗号分隔值CSV CSV 读写CSV文件 CSV 逗号分隔值( Comma-Separated Value, CSV)。与专有的二进制文件格式截然不同, CSV 通常用于在电子表格软件和纯文本之间交互数据。CSV 文件…

教你如何防止电脑插入u盘后自动运行

今天重装了系统,安装了驱动和各种软件,然后打完了补丁。在使用的过程中,当我插入U盘的时候发现是自动打开的,那么怎样防止这一个现象呢?思考片刻我想到了本地组策略,于是找了一下,结果还真有一个…

从单片机步入Linux之运行地址与加载地址

大家好,我是情报小哥!本文为【单片机步入嵌入式Linux】系列文章的第二篇,主要是跟大家讲解一下链接过程中几个地址的区分与理解~01单片机存储分配

Python3——JSON

Python3——JSON 目录 Python3——JSON Python和JSON数据类型对比 dumps()/loads() JSON是JavaScript的子集,专门用于指定结构化的数据。JSON 是轻量级的数据交换方式,易于阅读和编写。 Python和JSON数据类型对比 dict object list,tuple array …

不要错过秋招

标题就是重点~这是今天跟一个同学聊天说到的问题,之前我不是直播了嘛,我在直播里面说,如果大家有求职面试相关的事情,可以私下找我,这位同学还是很积极,今天就找我聊了。他的简历整体上问题不大&#xff0c…

VMware HA与VMotion的部署与搭建

VMware HA与VMotion的部署与搭建一.VMware HA 由于公司虚拟化的不断使用,不允许出现ESX Server的单点故障,因此考虑用VMware 自己的解决方案,及VMware的群集,对于群集的相关介绍,这里就不再叙述了&#…

这几个电子行业优质公众号,让你学习不迷路

古人都知道白天看日,晚上追星,如何学习不迷路,让自己的学习更加有效率,当然是要学习大佬们的经验总结。2021已过半,碎片时间充斥了我们的生活,与其淹没在信息洪流里不如只阅读精挑细选的优质,内…

计算机科学数学理论浅谈 (转载)

【来源:TSTC文档中心】 计算机自从其诞生之日起,它的主要任务就是进行各种各样的科学计算。文档处理,数据处理,图像处理,硬件设计, 软件设计等等,…

工作后和在学校最大的区别是什么?

昨晚有同学在群里问我问题,上图是问题和我的回复,今天想稍微展开来说说这个问题。新人(也就是刚进入工作岗位者)刚工作实际上有个很大的门槛。如何适应公司生活和规章制度?如何融入工作团队,处理好和同事领…

VS2008水晶报表发布部署总结

如果你安装了VS2008,那么可以找到如下目录: C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper\Packages\CrystalReports10_5 此目录下有如下文件: COPY到服务器上根据服务器CPU情况选择性地安装一下。 二、 将WEB项目打包成安装程…

VS2015配置环境支持opencv3库(网络方法总结)

今天安装了opencv3.4.1的版本,之前一直是在ubuntu上做的,本次在windows10上使用VS2015来开发。 VS2015是之前安装的,能正常的编译程序。 1. 安装opencv,下载opencv的exe文件,其他它就是一个压缩包,双击exe文…

Kernel中如何操作CPU及外设寄存器

01ARM Coretex-A9寄存器对于ARM Coretex-A9处理器而言其寄存器主要包括两大部分,分别是通用寄存器以及系统控制寄存器。上图所示的通用寄存器,主要是在代码运行过程中使用到,CPU通过该部分寄存器执行代码并完成相关的运算操作。对于调试过程中…

初识设计模式(装饰者模式)

前言:总结这两天学到的装饰者模式,并用java小小的实现一下。书中有写到:给爱用继承的人一个全新的设计眼界。(ps,本文最后有个小问题待解决) 什么是装饰者模式(Decorator Pattern)&a…

帮一个读者解锁手机

昨天晚上,深圳下了好大好大的雨,我还在加班的时候,小云就发消息说家里打雷很大,到了十点多,我打开手机准备打车,发现打车排队有800多人,然后我赶紧冲下楼,拿起两个雨衣,消…