ESP32开发之路(1)--- 基于idf框架的HelloWorld工程

ESP32开发之路(1)— 基于idf框架的HelloWorld工程

本次开发基于Ubuntu虚拟机

一、ESP32简介

首先,上图,看一下我手上的ESP32开发板
在这里插入图片描述
其中使用的是ESP32-WROOM-32模组,该模组内置 ESP32-D0WDQ6 芯片,是一款基础且常用的 ESP32 模组。ESP32-WROOM-32模组 集成了4 MB 的SPI flash。然后我们看一下官方技术手册对ESP32-D0WDQ6芯片 CPU 和片上存储的描述:
在这里插入图片描述
简单来说就是4MB的外部SPI Flash,448KB的内部ROM,520KB的内部SRAM
下图是ESP32的地址映射图:
在这里插入图片描述
详细信息可以参考官方编程指南

二、安装准备

首先,安装依赖:

sudo apt-get install git wget flex bison gperf python python-pip python-setuptools python-serial python-click python-cryptography python-future python-pyparsing python-pyelftools cmake ninja-build ccache libffi-dev libssl-dev

然后还有工具链的依赖

sudo apt-get install git make gcc libncurses5-dev flex bison gperf python-serial

对于不同的Ubuntu版本可能会出现不一样的情况,不过按照提示进行安装应该就可以了

三、获取源码

用git命令来拉取下来,这就可以可以同步最新的框架版本!不能直接一个downLoad 下载,发现会有错误,切记!
不过,乐鑫的开放源码都放在GitHub,而GitHub又被微软收购了,这一年的访问下载速度慢得乌龟一样,所以,这里有位大佬提供了一个可供代替的方法https://blog.csdn.net/xh870189248/article/details/80208099
首先,拉取代码,不过不拉取子模块,注意,不要加sudo,加sudo后面编译时会出问题

sudo git clone https://gitee.com/xuhongv/esp-idf.git

然后打开.gitmodules,我们看到下子模块源路径是不规范的,这里,我们再修改为码云上的:
1、进入esp-idf目录,打开.gitmodules

sudo vim .gitmodules

2、修改替换为下面的代码!

[submodule "components/esptool_py/esptool"]
	path = components/esptool_py/esptool
	url = https://gitee.com/xuhongv/esptool.git

[submodule "components/bt/controller/lib"]
	path = components/bt/controller/lib
	url = https://gitee.com/xuhongv/esp32-bt-lib.git

[submodule "components/bootloader/subproject/components/micro-ecc/micro-ecc"]
	path = components/bootloader/subproject/components/micro-ecc/micro-ecc
	url =  https://gitee.com/xuhongv/micro-ecc.git

[submodule "components/coap/libcoap"]
	path = components/coap/libcoap
	url =  https://gitee.com/xuhongv/libcoap.git

[submodule "components/nghttp/nghttp2"]
	path = components/nghttp/nghttp2
	url =  https://gitee.com/xuhongv/nghttp2.git

[submodule "components/libsodium/libsodium"]
	path = components/libsodium/libsodium
	url =  https://gitee.com/xuhongv/libsodium.git

[submodule "components/spiffs/spiffs"]
	path = components/spiffs/spiffs
	url =  https://gitee.com/xuhongv/spiffs.git

[submodule "components/json/cJSON"]
	path = components/json/cJSON
	url =  https://gitee.com/xuhongv/cJSON.git

[submodule "components/mbedtls/mbedtls"]
	path = components/mbedtls/mbedtls
	url =  https://gitee.com/xuhongv/mbedtls.git

[submodule "components/asio/asio"]
	path = components/asio/asio
	url =  https://gitee.com/xuhongv/asio.git

[submodule "components/expat/expat"]
	path = components/expat/expat
	url =  https://gitee.com/xuhongv/libexpat.git

[submodule "components/lwip/lwip"]
	path = components/lwip/lwip
	url =  https://gitee.com/xuhongv/esp-lwip.git

[submodule "components/mqtt/esp-mqtt"]
	path = components/mqtt/esp-mqtt
	url =  https://gitee.com/xuhongv/esp-mqtt.git

[submodule "components/protobuf-c/protobuf-c"]
	path = components/protobuf-c/protobuf-c
	url =  https://gitee.com/xuhongv/protobuf-c.git

[submodule "components/unity/unity"]
	path = components/unity/unity
	url =  https://gitee.com/xuhongv/Unity.git

[submodule "examples/build_system/cmake/import_lib/main/lib/tinyxml2"]
	path = examples/build_system/cmake/import_lib/main/lib/tinyxml2
	url =  https://gitee.com/xuhongv/tinyxml2.git

[submodule "components/bt/host/nimble/nimble"]
	path = components/bt/host/nimble/nimble
	url =  https://gitee.com/xuhongv/esp-nimble.git

[submodule "components/cbor/tinycbor"]
	path = components/cbor/tinycbor
	url = https://gitee.com/xuhongv/tinycbor.git

[submodule "components/esp_wifi/lib"]
	path = components/esp_wifi/lib
	url =  https://gitee.com/xuhongv/esp32-wifi-lib.git

[submodule "components/tinyusb/tinyusb"]
	path = components/tinyusb/tinyusb
	url = https://gitee.com/xuhongv/tinyusb.git

3、然后再更新子模块 , 你会发现快的一匹,

git submodule update --init --recursive

四、获取工具链

工具链下载地址https://dl.espressif.com/dl/xtensa-esp32-elf-gcc8_2_0-esp-2020r1-linux-amd64.tar.gz
然后使用命令解压:

tar -xzvf xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz

五、设置 PATH 路径

先拿到上述的SDK路径即为IDF路径,以及工具链的路径, 比如我的路径即设置为:

export IDF_PATH=/home/william/esp/esp-idf
export PATH=$PATH:/home/william/esp/tools/xtensa-esp32-elf/bin

1、打开.bashrc

sudo vim ~/.bashrc

2、添加IDF_PATH和PATH环境变量:
在这里插入图片描述
3、使之生效

source ~/.bashrc

4、IDF_PATH 路径测试是否设置成功:

echo $IDF_PATH

5、测试工具链环境是否设置成功:

xtensa-esp32-elf-gcc -v

在这里插入图片描述

六、安装 Python 软件包

ESP-IDF 所需的 Python 软件包位于 IDF_PATH/requirements.txt 中,运行以下命令进行安装

python -m pip install --user -r $IDF_PATH/requirements.txt

七、开始编译工程

进入esp-idf/examples/get-started/hello_world目录下,执行make menuconfig
在这里插入图片描述
可以保持默认配置,按【s】会Save,然后回车,按【Esc】或【q】退出即可,然后使用make all -j2编译,编译成功如下
在这里插入图片描述

八、烧录下载

将当前用户增加至 dialout 组 :sudo usermod -aG dialout 用户名

sudo usermod -aG dialout william

然后重启系统

通过dmesg | grep ttyS*命令查看串口

dmesg | grep ttyS*

然后烧录

make flash

或者指定端口

make flash ESPPORT=/dev/ttyUSB0

等到出现Connecting.......按住开发板上的BOOT按键
在这里插入图片描述
下载成功
在这里插入图片描述
然后使用make monitor命令查看串口输出

make monitor

可以看到,Hello world!已经打印出来了,大功告成
在这里插入图片描述

发布了62 篇原创文章 · 获赞 13 · 访问量 5572

猜你喜欢

转载自blog.csdn.net/qq_38113006/article/details/104073718