跳转至

Linux下的固件烧录

概要

本编教程中,1Z实验室主要为大家详细讲解在Linux下对ESP32刷入MicroPython固件的具体流程。

开始之前

在开始之前,你应该仔细阅读本系列教程中之前的章节:

MicroPython固件烧录指南

阅读完成之后,你需要做到:

  • 下载MicroPython的固件到本地

  • 了解到烧录MicroPython固件需要使用到的工具

  • 把你的ESP32设备用一根正确的的数据线连接到你的电脑

获取工具

MicroPython固件烧录指南一文中笔者有提到:

为ESP32烧录MicroPython固件需要使用的工具:

  • Python3

  • pip python的包管理器,用来下载esptool模块

  • esptool 一个用于给ESP32刷入固件的Python工具模块

接下来我们重点讲解如何在Linux上获取这些工具。

Linux自带Python

在linux下的固件烧录十分的方便,这得益于linux发行版都通常自带了Python.很多发行版甚至同时自带Python2和Python3两个版本,接下来的示例,我们只以Python3为例。
虽然在linux下我们不用自己安装Python,但是我们需要为Python安装包管理器pip

获取pip

在你可爱的Linux里打开终端程序,按你的发行版对号入座,输入以下的命令

  • Arch Linux

    sudo pacman -S python3-pip
    

  • Ubuntu

    sudo apt-get install python3-pip
    

其余发行版自行百度吧,就不在此一一列举啦。

获取esptool

我们需要使用Python的包管理器pip来获取esptool,在命令行窗口中输入如下命令进行安装:

sudo pip3 install esptool

至此,linux下的工具就已经筹办完毕了。

使用esptool刷入固件

万事俱备,开始刷入MicroPython固件吧。

查看linux下的端口号

在开始之前,你需要知道你插入到电脑上的ESP32设备,在Linux中的端口号是多少。不同于Windows,linux中秉承着一切皆是文件的思想,usb串口设备,在Linux的文件系统中的/dev/目录下可以找到,Linux通常以ttyUSB+数字编号的方式为这些设备命名。可以使用如下的命令来查看:

ls -l /dev/ttyUSB* 

如上图所示, 笔者的ESP32在linux下的端口号为红色线框中的部分,和Windows的大相径庭.

注意: ttyUSB 后所跟的那位数字,可能也会随你的具体情况而定,不一定是0,如果存在多个USB串口设备,需要你去甄别具体哪一个是你的ESP32设备

擦除flash

同样的,为了保证固件刷入的成功率,我们先要对ESP32的flash进行清除.

sudo esptool.py --port <你的端口号> erase_flash

笔者借来的Mac上,端口号是/dev/ttyUSB0,所以我应该输入的指令是

sudo esptool.py --port /dev/ttyUSB0 erase_flash

注意: 务必替换其中的 <你的端口号> 为你自己的端口号

使用esptool刷入固件

找到之前你所下载的固件所在的完整路径,通常浏览器下载的固件存放在~/Downloads目录下

按照如下命令模板,开始刷入:

sudo esptool.py --chip esp32 --port <你的端口号> write_flash -z  0x1000 <你的固件的完整路径> 

注意: 务必替换其中的 <你的端口号> 和<你的固件的完整路径> ,确保二者的正确性

笔者的端口号为 /dev/ttyUSB0 , 固件路径为 ~/Dowloads/esp32-20180411-v1.9.3-534-g59dda710.bin

所以笔者的输入应为

 sudo esptool.py --chip esp32 --port /dev/ttyUSB0 write_flash -z  0x1000 ~/Dowloads/esp32-20180411-v1.9.3-534-g59dda710.bin 

如下是指令执行的完整输出, 用时53.5s:

➜  ~ sudo esptool.py --chip esp32 --port /dev/ttyUSB1 write_flash -z  0x1000 ~/Dowloads/esp32-20180411-v1.9.3-534-g59dda710.bin 
esptool.py v2.3.1
Connecting........_
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 973584 bytes to 604211...
Wrote 973584 bytes (604211 compressed) at 0x00001000 in 53.5 seconds (effective 145.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

至此, linux的固件烧录过程结束.