Mpython的環(huán)境配置 GITHUB上拉去資源:mkdir -p ~/espcd ~/esp git clone -b v4.3 --recursive https://github.com/espressif/esp-idf.git 未成功完全拉取子模塊的話,更換網(wǎng)絡(luò),執(zhí)行以下步驟 git submodule update --init git submodule update --init --recursive 進(jìn)入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 設(shè)置環(huán)境變量 . $HOME/esp/esp-idf/export.sh 拷貝例程測(cè)試下 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 下載測(cè)試 idf.py -p /dev/ttyUSB0 flash idf.py -p /dev/ttyUSB0 monitor 如果USB權(quán)限不夠,執(zhí)行以下命令 sudo usermod -a -G dialout $USER 再拉取micropython進(jìn)行編譯cd ~/esp git clone https://github.com/micropython/micropython --depth=1 接著編譯一下 mpy-coress ,用來(lái)給 Python 文件預(yù)編譯為 bytecode 到固件里的工具鏈。 make -C mpy-cross 然后初始化一下相關(guān)的子倉(cāng)庫(kù)。 git submodule init lib/berkeley-db-1.xx git submodule update 最后在編譯(make)一下。 cd ports/esp32 Make 如果有問(wèn)題,需要確定esp-idf的版本是否匹配: micropython 依賴于 esp-idf ,但是需要切換 esp-idf 的版本,也就是說(shuō)隨著 micropython 不一定會(huì)支持最新的 esp-idf 代碼,如果出現(xiàn)錯(cuò)誤,你需要通過(guò) git checkout 切換版本號(hào)。 命令格式示范:git checkout <Current supported ESP-IDF commit hash> 而尾巴的<hash> 存放在 Makefile 文件中的,如下內(nèi)容。 # the git hash of the currently supported ESP IDF version ESPIDF_SUPHASH := 6b3da6b1882f3b72e904cc90be67e9c4e3f369a9 所以在 esp-idf 的目錄下有如下操作(注意和 readme 有點(diǎn)點(diǎn)不同鴨) cd esp-idf git checkout 6b3da6b1882f3b72e904cc90be67e9c4e3f369a9 git submodule update --init --recursive 最后編譯mpython Python 版本安裝的pyserial和 pyparsing包 pip install pyserial 'pyparsing<2.4' 拉取mpython的git倉(cāng)庫(kù), git clone https://github.com/labplus-cn/mpython.git 將拉取的文件(除了esp-idf,micropython 文件夾)復(fù)制到esp文件夾中,再執(zhí)行 git submodule update --init --recursive 編譯mpython固件 cd ~/esp/port make 打開(kāi)串口收發(fā),組合 Ctrl + A 和 Ctrl + Q 退出串口(需要安裝 picocom ) picocom -b 115200 /dev/ttyUSB0 擦除 esp32 中 flash 。 make erase 編譯后燒錄 micropython 固件。 make deploy 清理編譯結(jié)果。 make clean 組合命令,燒錄完固件后打開(kāi)串口。 make deploy && picocom -b 115200 /dev/ttyUSB0 額外的信息為什么固件只有一個(gè) firmware.bin 文件?固件編譯后的 firmware.bin 文件產(chǎn)生在 port/esp32/build 文件夾,它是通過(guò) 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 而來(lái)的一個(gè)單獨(dú)的 bin ,即為固件,所以只需要在 0x1000 起始位置燒入 esp32 的 flash 里就可以運(yùn)行 micropython 了。 如果要改為0x00開(kāi)始燒寫的話, 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 問(wèn)題參考: 安裝好依賴包,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中設(shè)置工具鏈并加入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 工具鏈: 2. 下載完成后,將它解壓到 ~/esp 目錄,更新環(huán)境變量 PATH export PATH="$PATH:$HOME/esp/xtensa-esp32-elf/bin" 1. 檢查 PATH 設(shè)置是否正確 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命令沒(méi)有,esp32工具鏈參考:https://blog.csdn.net/qq_40773212/article/details/108931402 fatal error: curses.h: 沒(méi)有那個(gè)文件或目錄 解決辦法:安裝ncurses即可 sudo apt-get install libncurses5-dev Arch Linux需按照以下應(yīng)用:sudo apt-get install gcc git wget make libncurses5-dev flex bison gperf python python-setuptools python-cryptography python-pyparsing python-pyelftools sudo apt install ubuntu-software /bin/sh: 1: /usr/bin/cmake: not found sudo apt install cmake #用這指令可以正常安裝到/usr/bin,但是可能會(huì)版本過(guò)低的情況,用容器sudo snap install cmake可以安裝3.20的但是路徑不對(duì)。 參考CMake安裝:https://www.cnblogs.com/wangdongfang/p/13550017.html 1、下載cmake源碼包(https:///download/),解壓后進(jìn)入解壓目錄 2、執(zhí)行安裝配置命令:配置軟件二進(jìn)制安裝到/usr/bin目錄下(esp32編譯路徑需改為/usr/bin)./bootstrap --prefix=/usr/bin 3、接下來(lái)執(zhí)行make命令,直至安裝成功 4、sudo make install 記得用sudo不然會(huì)新建不了文件以下報(bào)錯(cuò) file cannot create directory: /usr/bin/doc/cmake-3.19/cmsys. Maybe need administrative privileges. 安裝路徑還是有問(wèn)題。 Cmake官網(wǎng)有提供APT存儲(chǔ)庫(kù)的添加方法,https://apt./ 添加相應(yīng)Ubuntu版本的庫(kù),就能加載更多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)以下報(bào)錯(cuò)。 esp-idf/components/xtensa -- Configuring incomplete, errors occurred! 在makefile中添加如下內(nèi)容(ESPIDF應(yīng)根據(jù)自己的esp-idf目錄進(jìn)行更改): 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 切換分支從新安裝報(bào):FAILED: build.ninja |
|