安装工具链

整个ESP-IDF环境需要用到很多软件,使用如下命令安装:

$ sudo apt-get install git wget make libncurses-dev flex bison gperf python python-serial

64位操系统和32位操作系统所使用的工具链不同,所以根据系统选择对应的工具链安装。这里使用wget命令下载64位的工具链,并解压安装:

$ mkdir -p /opt/esp

$ cd /opt/esp/

$ wget https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz

$ tar -xzvf xtensa-esp32-elf-linux64-1.22.0-73-ge28a011-5.2.0.tar.gz

解压后的工具链位于路径/opt/esp/xtensa-esp32-elf下面,该目录下面的bin目录就是用来编译ESP-IDF工程所需的工具。如果要使系统能够直接使用这些程序,需要将这个bin文件夹路径添加到系统的环境变量PATH中去,这里直接使用echo命令将其添加到脚本文件~/.bashrc中(系统每次启动时都会执行这个脚本)。第一次添加后需要对该脚本执行source ~/.bashrc操作,让该脚本立即生效。

$ echo "export PATH=$PATH:/opt/esp/xtensa-esp32-elf/bin" >> ~/.bashrc

下载编译

ESP-IDF的全称是Espressif IoT Development Framework(乐鑫IoT开发框架),即通常所说的SDK,它里面提供了丰富的可供调用的库和API。下载SDK:

$ mkdir -p /srv/esp

$ cd /srv/esp

$ git clone --recursive https://github.com/espressif/esp-idf.git

clone后面的参数--recursive表示递归克隆该仓库的子仓库,这是一种在开源界非常流行的做法,可以方便地对多个仓库进行控制。在clone时使用到这个参数,也可以使用下面的命令来手动更新该仓库的子模块:

$ git submodule update --init

ESP-IDF下载完成后,还需要导出环境变量IDF_PATH,今后在编译工程代码时会使用这个变量来查找ESP-IDF所在路径。同样使用echo命令将其追加到脚本文件~/.bashrc,完成后执行source ~/.bashrc命令。

$ echo "export IDF_PATH=/srv/esp/esp-idf" >> ~/.bashrc

ESP-IDF提供了丰富的demo程序,位于路径examples下面。这里先试试hello world,进入源码所在目录,然后编译:

$ cd examples/get-started/hello_world/

$ make

如果是第一次执行make命令,系统会弹出一个图形配置界面,如下图所示:

可以通过键盘上的tab键在下面的菜单中进行跳转。当光标跳转到菜单后,按下回车键,退出配置菜单,然后系统会自动编译ESP-IDF目录下的各个组件以及hello world目录下的源码。编译完成后,可以在hello wolrd工程所在目录下生成一个build文件,用于存放编译过程中生成的临时文件以及最终可以直接烧写到开发板的.bin文件。此外,系统还会直接在 hello world工程所在目录生成一个配置文件sdkconfig,它存放了在配置界面所配置的各种值。

烧录

用USB将开发板与PC连接在一起,系统会识别到设备/dev/ttyUSB0,先修改该设备的权限,然后烧写并监视串口输出:

$ sudo chmod 777 /det/ttyUSB0

$ make flash monitor

Flashing binaries to serial port /dev/ttyUSB0 (app at offset 0x10000)...

esptool.py v2.1

Connecting........_

Chip is ESP32D0WDQ5 (revision 0)

Uploading stub...

Running stub...

Stub running...

Configuring flash size...

Auto-detected Flash size: 4MB

Compressed 19600 bytes to 11523...

Wrote 19600 bytes (11523 compressed) at 0x00001000 in 1.0 seconds (effective 153.3 kbit/s)...

Hash of data verified.

Compressed 130336 bytes to 69700...

Wrote 130336 bytes (69700 compressed) at 0x00010000 in 6.2 seconds (effective 169.1 kbit/s)...

Hash of data verified.

Compressed 3072 bytes to 82...

Wrote 3072 bytes (82 compressed) at 0x00008000 in 0.0 seconds (effective 2107.5 kbit/s)...

Hash of data verified.

Leaving...

Hard resetting...

MONITOR

--- idf_monitor on /dev/ttyUSB0 115200 ---

--- Quit: Ctrl+] | Menu: Ctrl+T | Help: Ctrl+T followed by Ctrl+H ---

ets Jun 8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

ets Jun 8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0xee

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:2

load:0x3fff0018,len:4

load:0x3fff001c,len:5692

load:0x40078000,len:0

load:0x40078000,len:13804

entry 0x40079030

I (68) boot: Detected ESP32

I (32) boot: ESP-IDF v3.0-dev-1295-g08be5213 2nd stage bootloader

I (32) boot: compile time 23:46:05

I (32) boot: Enabling RNG early entropy source...

I (38) boot: SPI Speed : 40MHz

I (42) boot: SPI Mode : DIO

I (46) boot: SPI Flash Size : 4MB

I (50) boot: Partition Table:

I (53) boot: ## Label Usage Type ST Offset Length

I (61) boot: 0 nvs WiFi data 01 02 00009000 00006000

I (68) boot: 1 phy_init RF data 01 01 0000f000 00001000

I (76) boot: 2 factory factory app 00 00 00010000 00100000

I (83) boot: End of partition table

I (87) esp_image: segment 0: paddr=0x00010020 vaddr=0x3f400020 size=0x04ad0 ( 19152) map

I (103) esp_image: segment 1: paddr=0x00014af8 vaddr=0x3ffb0000 size=0x02118 ( 8472) load

I (108) esp_image: segment 2: paddr=0x00016c18 vaddr=0x40080000 size=0x00400 ( 1024) load

0x40080000: _iram_start at /srv/esp/esp-idf/components/freertos/./xtensa_vectors.S:1685

I (114) esp_image: segment 3: paddr=0x00017020 vaddr=0x40080400 size=0x081f4 ( 33268) load

I (137) esp_image: segment 4: paddr=0x0001f21c vaddr=0x400c0000 size=0x00000 ( 0) load

I (137) esp_image: segment 5: paddr=0x0001f224 vaddr=0x00000000 size=0x00dec ( 3564)

I (144) esp_image: segment 6: paddr=0x00020018 vaddr=0x400d0018 size=0x0fcdc ( 64732) map

0x400d0018: _stext at ??:?

I (180) boot: Loaded app from partition at offset 0x10000

I (180) boot: Disabling RNG early entropy source...

I (180) cpu_start: Pro cpu up.

I (184) cpu_start: Starting app cpu, entry point is 0x40080fe0

0x40080fe0: call_start_cpu1 at /srv/esp/esp-idf/components/esp32/./cpu_start.c:222

I (0) cpu_start: App cpu up.

I (194) heap_init: Initializing. RAM available for dynamic allocation:

I (201) heap_init: At 3FFAE6E0 len 00001920 (6 KiB): DRAM

I (207) heap_init: At 3FFB2920 len 0002D6E0 (181 KiB): DRAM

I (213) heap_init: At 3FFE0440 len 00003BC0 (14 KiB): D/IRAM

I (220) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM

I (226) heap_init: At 400885F4 len 00017A0C (94 KiB): IRAM

I (232) cpu_start: Pro cpu start user code

I (250) cpu_start: Starting scheduler on PRO CPU.

I (0) cpu_start: Starting scheduler on APP CPU.

Hello world!

This is ESP32 chip with 2 CPU cores, WiFi/BT/BLE, silicon revision 0, 4MB external flash

Restarting in 10 seconds...

Restarting in 9 seconds...

Restarting in 8 seconds...

Restarting in 7 seconds...

Restarting in 6 seconds...

Restarting in 5 seconds...

Restarting in 4 seconds...

Restarting in 3 seconds...

Restarting in 2 seconds...

Restarting in 1 seconds...

Restarting in 0 seconds...

Restarting now.

注意,再执行make flash monitor时,若是其它应用打开了串口,则应该先把它给关闭,否则该命令不能成功执行。

首次开箱,开发板启动后,串口信息如下:

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

ets Jun 8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP:0x00

clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00

mode:DIO, clock div:2

load:0x3ffc0000,len:0

load:0x3ffc0000,len:2304

load:0x40078000,len:3788

ho 0 tail 12 room 4

load:0x40098000,len:532

entry 0x4009813c

**************************************

* hello espressif ESP32! *

* 2nd boot is running! *

* version (V0.1) *

**************************************

compile time 18:16:58

SPI Speed : 40MHz

SPI Mode : DIO

SPI Flash Size : 4MB

Partition Table:

## Label Usage Type ST Offset Length

0 factory factory app 00 00 00010000 00100000

1 rfdata RF data 01 01 00110000 00040000

2 wifidata WiFi data 01 02 00150000 00040000

End of partition table

Loading app partition at offset 00010000

section 0: paddr=0x00000020 vaddr=0x00000000 size=0x0ffe8 ( 65512)

section 1: paddr=0x00010010 vaddr=0x3f400010 size=0x05b64 ( 23396) map

section 2: paddr=0x00015b7c vaddr=0x3ffba720 size=0x01378 ( 4984) load

section 3: paddr=0x00016efc vaddr=0x40080000 size=0x00400 ( 1024) load

section 4: paddr=0x00017304 vaddr=0x40080400 size=0x126ac ( 75436) load

section 5: paddr=0x000299b8 vaddr=0x00000000 size=0x06658 ( 26200)

section 6: paddr=0x00030018 vaddr=0x400d0018 size=0x325b4 (206260) map

start: 0x400807ac

Initializing heap allocator:

Region 19: 3FFBBA98 len 00024568 tag 0

Region 25: 3FFE8000 len 00018000 tag 1

Pro cpu up.

Pro cpu start user code

nvs_flash_init

frc2_timer_task_hdl:3ffbc564, prio:22, stack:2048

tcpip_task_hdlxxx : 3ffbeca8, prio:20,stack:2048

phy_version: 80, Aug 26 2016, 13:04:06, 0

pp_task_hdl : 3ffc34f0, prio:23, stack:8192

:>enter uart init

uart init wait fifo succeed

exit uart init

IDF version : master(db93bceb)

WIFI LIB version : master(934d079b)

ssc version : master(r283 4d376412)

!!!ready!!!

mode : softAP(32:ae:a4:80:53:f0)

dhcp server start:(ip: 192.168.4.1, mask: 255.255.255.0, gw: 192.168.4.1)

+WIFI:AP_START

参考文章

esp32 python开发环境搭建_ESP32:搭建Ubuntu开发环境相关推荐

  1. linux区块链环境搭建,区块链--ubuntu下环境搭建和使用

    一.ubuntu设置root登录 通过sudo passwd root给root设置密码 通过su root切换到root用户 进入/usr/share/lightdm/lightdm.conf.d目 ...

  2. OpenHarmony-鸿蒙 华为智能家居IoT设备开发-环境搭建篇 一键部署开发环境

    轻量与小型系统入门概述 简介 OpenHarmony轻量和小型系统适用于内存较小的IOT设备(参考内存≥128KiB).通过本文,开发者可以快速熟悉OpenHarmony轻量和小型系统的环境搭建.编译 ...

  3. 嵌入式Linux(一):东山派壹号 ubuntu开发环境配置

    前言 最近要学嵌入式Linux,网上查了下,被价格吓死了,基本上都是四五百或以上.终于找到了东山派壹号这块板子.主板和底板加起来两百多.本文,主要介绍这块板子 嵌入式linux开发环境的搭建,包括相关 ...

  4. ESP32 Ubuntu开发环境搭建

    在Ubuntu下搭建ESP32开发环境 文章目录 在Ubuntu下搭建ESP32开发环境 说明 开发环境 硬件准备 ESP32(NodeMCU-32S) NodeMCU-32S 引脚图 搭建步骤 安装 ...

  5. ESP32 入门笔记01:乐鑫ESP32-DevKitC开发板信息、开发环境搭建以及学资料准备

    文章目录 一.ESP32-DevKitC 开发板介绍 二.ESP32 开发环境 1. Arduino IDE 1.1 开发环境搭建步骤 1.2 实验:使用 Arduino IDE 将代码上传到 ESP ...

  6. ④ESP8266 开发学习笔记_By_GYC 【Ubuntu系统下ESP8266 开发环境搭建】

    目录 ④ESP8266 开发学习笔记_By_GYC [Ubuntu系统下ESP8266 开发环境搭建] 一.安装前准备 1.乐鑫官方的ESP-IDF 编程指南 2.ESP-IDF风格的ESP8266 ...

  7. ESP32-C3 VScode开发环境搭建(基于ESP-IDF—Windows和Ubuntu双环境)

    对于ESP32-C3开发,自己对Arduino环境使用起来很是不习惯,既然乐鑫官方都出对应的环境,还是来试试官方环境 ..1.6.5问题解决(VScode终端必须使用Windows自带cmd,不能是M ...

  8. mac搭建python开发环境_Mac打造python2 python3开发环境

    最新版的MacOS Sierra默认带的python环境仍然为2.7.10,本文将介绍使用Brew安装python3.5并做简单的配置,打造python2,python3共存的开发环境 直接尝试bre ...

  9. 老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境

    上一篇文章给大家介绍了ESP32使用Arduino官方IDE进行开发的流程. 老宇哥带你玩转ESP32:01入门介绍 (点击阅读) 有部分同学反馈下载的时候特别慢,这个库是托管在GitHub的,国内有 ...

  10. HPM6750系列--第二篇 搭建Ubuntu开发环境

    一.目的 作为命令行的深度用户,本篇就给大家介绍一下HPM6750 Ubuntu开发环境搭建 二.准备 1.系统环境 Ubuntu 18.04         2.查看cmake版本 cmake -- ...

最新文章

  1. Linux学习系列之Mount
  2. android http协议添加Authorization认证方式
  3. OxyPlot.SkiaSharp中文显示乱码的问题
  4. 石油计算机测控技术现场总线,中国石油北京《计算机测控技术》第二阶段在线作业...
  5. 从JAVA内存到垃圾回收,带你深入理解JVM
  6. parseInt原来是这样用的
  7. JSP教程第1讲笔记
  8. 【数学建模】基于matlab GUI理发店排队模拟系统【含Matlab源码 1116期】
  9. 集装箱装柜计算机器在线,装箱大师在线计算教程
  10. rufus下载包,exsi自启动制作工具
  11. HTML---鼠标悬停导航栏变颜色
  12. Mac版 Pycharm 查看内建函数的源码
  13. [论文笔记]Feature-constrained Active Visual SLAM for Mobile Robot Navigation
  14. dubbo环境的简单搭建
  15. ADB FORWARD
  16. python工程师是什么专业-python工程师的工作一般都在做什么?
  17. OpenCV+Python识别车牌和字符分割
  18. 镜头跑焦测试软件,简易的测试镜头跑焦和矫正AF微调办法
  19. TextInputLayout字数统计功能
  20. 作为一个新手程序员该如何成长?http://www.codeceo.com/article/how-new-programmer-grow.html#0-tsina-1-19469-397232819

热门文章

  1. PHP下简单交换两个变量
  2. Redis11-AOF持久化
  3. C# 模拟Form提交
  4. Deepin Linux 设置开机自动进入命令行模式
  5. POJ 1595 素数打表水题
  6. JSdom操作内容,样式,属性
  7. BZOJ1397 : Ural 1486 Equal squares
  8. Hyper-V 之04 SCVMM 2012 R2安装
  9. CentOS 下安装 Nginx
  10. 建立域信任关系后,查找位置中看不到另一个域的信息