电竞比分网-中国电竞赛事及体育赛事平台

分享

mpython、micropython的環(huán)境配置完整攻略

 beginnow1 2021-09-29

Mpython的環(huán)境配置

GITHUB上拉去資源:

mkdir -p ~/espcd ~/esp

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

未成功完全拉取子模塊的話,更換網(wǎng)絡,執(zhí)行以下步驟

git submodule update --init 

git submodule update --init --recursive

進入esp-idf 目錄 ,拉取子模塊

安裝工具環(huán)境:

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

參考官網(wǎng)鏈接:

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

安裝工具

cd ~/esp/esp-idf

./install.sh

設置環(huán)境變量

. $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權限不夠,執(zhí)行以下命令

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 代碼,如果出現(xiàn)錯誤,你需要通過 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'

拉取mpythongit倉庫,

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

將拉取的文件(除了esp-idf,micropython 文件夾)復制到esp文件夾中,再執(zhí)行

git submodule update --init --recursive

編譯mpython固件

cd ~/esp/port

make

打開串口收發(fā),組合 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 文件產(chǎn)生在 port/esp32/build 文件夾,它是通過 makeimg.py 合成的,看一下就知道發(fā)生了什么。

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./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./projects/esp-idf/zh_CN/latest/esp32/get-started/linux-setup.html

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

ubuntu中設置工具鏈并加入PATH環(huán)境變量

1. 需要先安裝以下軟件包:

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

· 1

1.  Espressif 的網(wǎng)站下載ESP32 工具鏈:
64-bit Linux:https://dl./dl/xtensa-esp32-elf-linux64-1.22.0-80-g6c4433a-5.2.0.tar.gz
32-bit Linux:https://dl./dl/xtensa-esp32-elf-linux32-1.22.0-80-g6c4433a-5.2.0.tar.gz

2. 下載完成后,將它解壓到 ~/esp 目錄,更新環(huán)境變量 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:///download/),解壓后進入解壓目錄

2執(zhí)行安裝配置命令:配置軟件二進制安裝到/usr/bin目錄下esp32編譯路徑需改為/usr/bin

./bootstrap --prefix=/usr/bin

3、接下來執(zhí)行make命令,直至安裝成功

4、sudo make install

記得用sudo不然會新建不了文件以下報錯

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

  administrative privileges.

安裝路徑還是有問題。

Cmake官網(wǎng)有提供APT存儲庫的添加方法,https://apt./

添加相應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出現(xiàn)以下報錯。

esp-idf/components/xtensa

-- Configuring incomplete, errors occurred!

makefile中添加如下內容(ESPIDF應根據(jù)自己的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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多