mpython、micropython的环境配置完整攻略

Mpython的环境配置

GITHUB上拉去资源:

mkdir -p ~/espcd ~/esp

git clone -b v4.3 --recursive https://github.com/espressif/esp-idf.git

未成功完全拉取子模块的话,更换网络,执行以下步骤

git submodule update --init

git submodule update --init --recursive

进入esp-idf 目录 ,拉取子模块

安装工具环境:

sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

参考官网链接:

https://docs.espressif.com/projects/esp-idf/zh_CN/v4.3/esp32/get-started/linux-setup.html

安装工具

cd ~/esp/esp-idf

./install.sh

设置环境变量

. $HOME/esp/esp-idf/export.sh

拷贝例程测试下

cd ~/esp

cp -r $IDF_PATH/examples/get-started/hello_world .

cd ~/esp/hello_world

配置工程

idf.py set-target esp32

idf.py menuconfig

编译

idf.py build

下载测试

idf.py -p /dev/ttyUSB0 flash

idf.py -p /dev/ttyUSB0 monitor

如果USB权限不够,执行以下命令

sudo usermod -a -G dialout $USER

再拉取micropython进行编译

cd ~/esp

git clone https://github.com/micropython/micropython --depth=1

接着编译一下 mpy-coress ,用来给 Python 文件预编译为 bytecode 到固件里的工具链。

make -C mpy-cross

然后初始化一下相关的子仓库。

git submodule init lib/berkeley-db-1.xx

git submodule update

最后在编译(make)一下。

cd ports/esp32

Make

如果有问题,需要确定esp-idf的版本是否匹配:

micropython 依赖于 esp-idf ,但是需要切换 esp-idf 的版本,也就是说随着 micropython 不一定会支持最新的 esp-idf 代码,如果出现错误,你需要通过 git checkout 切换版本号。

命令格式示范:git checkout <Current supported ESP-IDF commit hash>

而尾巴的<hash> 存放在 Makefile 文件中的,如下内容。

# the git hash of the currently supported ESP IDF version

ESPIDF_SUPHASH := 6b3da6b1882f3b72e904cc90be67e9c4e3f369a9

所以在 esp-idf 的目录下有如下操作(注意和 readme 有点点不同鸭)

cd esp-idf

git checkout 6b3da6b1882f3b72e904cc90be67e9c4e3f369a9

git submodule update --init --recursive

最后编译mpython

Python 版本安装的pyserial和 pyparsing包

pip install pyserial 'pyparsing<2.4'

拉取mpython的git仓库,

git clone https://github.com/labplus-cn/mpython.git

将拉取的文件(除了esp-idf,micropython 文件夹)复制到esp文件夹中,再执行

git submodule update --init --recursive

编译mpython固件

cd ~/esp/port

make

打开串口收发,组合 Ctrl + A 和 Ctrl + Q 退出串口(需要安装 picocom )

picocom -b 115200 /dev/ttyUSB0

擦除 esp32 中 flash 。

make erase

编译后烧录 micropython 固件。

make deploy

清理编译结果。

make clean

组合命令,烧录完固件后打开串口。

make deploy && picocom -b 115200 /dev/ttyUSB0

额外的信息

为什么固件只有一个 firmware.bin 文件?

固件编译后的 firmware.bin 文件产生在 port/esp32/build 文件夹,它是通过 makeimg.py 合成的,看一下就知道发生了什么。

import sys

OFFSET_BOOTLOADER = 0x1000

OFFSET_PARTITIONS = 0x8000

OFFSET_APPLICATION = 0x10000

files_in = [

('bootloader', OFFSET_BOOTLOADER, sys.argv[1]),

('partitions', OFFSET_PARTITIONS, sys.argv[2]),

('application', OFFSET_APPLICATION, sys.argv[3]),

]

file_out = sys.argv[4]

cur_offset = OFFSET_BOOTLOADER

with open(file_out, 'wb') as fout:

for name, offset, file_in in files_in:

assert offset >= cur_offset

fout.write(b'\xff' * (offset - cur_offset))

cur_offset = offset

with open(file_in, 'rb') as fin:

data = fin.read()

fout.write(data)

cur_offset += len(data)

print('%-12s% 8d' % (name, len(data)))

print('%-12s% 8d' % ('total', cur_offset))

可以得知,firmware.bin 是由 bootloader + partitions + application 而来的一个单独的 bin ,即为固件,所以只需要在 0x1000 起始位置烧入 esp32 的 flash 里就可以运行 micropython 了。

如果要改为0x00开始烧写的话,

cur_offset = OFFSET_BOOTLOADER

改为

cur_offset = 0x00

参考链接:

https://github.com/labplus-cn/mpython

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

https://www.cnblogs.com/juwan/p/11448072.html

问题参考:

安装好依赖包,python,cmake3.5以上,pyserial ' pyparsing<2.4 '

sudo apt-get install git wget flex bison gperf python3 python3-pip python3-setuptools cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

pip install pyserial pyparsing==2.3.1

参考:https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/get-started/linux-setup.html

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

ubuntu中设置工具链并加入PATH环境变量

1. 需要先安装以下软件包:

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

· 1

1. 从 Espressif 的网站下载ESP32 工具链:
64-bit Linux:https://dl.espressif.com/dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
32-bit Linux:https://dl.espressif.com/dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz

2. 下载完成后,将它解压到 ~/esp 目录,更新环境变量 PATH

export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin"

1. 检查 PATH 设置是否正确

printenv PATH

检查一下字符串的末尾是否包含类似的工具链的路径

$ printenv PATH

/home/user-name/bin:/home/user-name/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/user-name/esp/xtensa-esp32-elf/bin

xtensa-esp32-elf命令没有,esp32工具链

参考:https://blog.csdn.net/qq_40773212/article/details/108931402

fatal error: curses.h: 没有那个文件或目录

解决办法:安装ncurses即可

sudo apt-get install libncurses5-dev

Arch Linux需按照以下应用:

sudo apt-get install gcc git wget make libncurses5-dev flex bison gperf python python-setuptools python-cryptography python-pyparsing python-pyelftools

ubuntu软件中心应用商店不见了

sudo apt install ubuntu-software

/bin/sh: 1: /usr/bin/cmake: not found

sudo apt install cmake

#用这指令可以正常安装到/usr/bin,但是可能会版本过低的情况,用容器sudo snap install cmake可以安装3.20的但是路径不对。

参考CMake安装:https://www.cnblogs.com/wangdongfang/p/13550017.html

1、下载cmake源码包(https://cmake.org/download/),解压后进入解压目录

2、执行安装配置命令:配置软件二进制安装到/usr/bin目录下(esp32编译路径需改为/usr/bin)

./bootstrap --prefix=/usr/bin

3、接下来执行make命令,直至安装成功

4、sudo make install

记得用sudo不然会新建不了文件以下报错

file cannot create directory: /usr/bin/doc/cmake-3.19/cmsys.  Maybe need

administrative privileges.

安装路径还是有问题。

Cmake官网有提供APT存储库的添加方法https://apt.kitware.com/

添加相应Ubuntu版本的库,就能加载更多APT版本

用以下方式查询APT支持的软件包版本

apt-cache madison <<package name>>

apt-cache policy <<package name>>

apt-get安装指定版本

apt-get install <<package name>>=<<version>>

在/esp/micropython/ports/esp32目录下,make出现以下报错。

esp-idf/components/xtensa

-- Configuring incomplete, errors occurred!

在makefile中添加如下内容(ESPIDF应根据自己的esp-idf目录进行更改):

ESPIDF = esp/esp-idf

#PORT = /dev/ttyUSB0

#FLASH_MODE = qio

#FLASH_SIZE = 4MB

#CROSS_COMPILE = xtensa-esp32-elf-

include Makefile

esp32 ninja: build stopped: subcommand failed

git checkout 4c81978a3e2220674a432a588292a4c860eef27b

切换分支从新安装报:FAILED: build.ninja

(0)

相关推荐