日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

micropython用什么编译_micropython开发者指南

發布時間:2025/3/11 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 micropython用什么编译_micropython开发者指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Author

shaniadolphin

獲取git工程

mkdir micropython

cd micropython

git clone https://github.com/micropython/micropython.git

git submodule update --init

運行的結果如下:

dolphin@DESKTOP-DR5OKOG:/mnt/h/proj/micropython$ cd micropython/

dolphin@DESKTOP-DR5OKOG:/mnt/h/proj/micropython/micropython$ git submodule update --init

Submodule 'lib/axtls' (https://github.com/pfalcon/axtls) registered for path 'lib/axtls'

Submodule 'lib/berkeley-db-1.xx' (https://github.com/pfalcon/berkeley-db-1.xx) registered for path 'lib/berkeley-db-1.xx'

Submodule 'lib/libffi' (https://github.com/atgreen/libffi) registered for path 'lib/libffi'

Submodule 'lib/lwip' (https://git.savannah.gnu.org/r/lwip.git) registered for path 'lib/lwip'

Submodule 'lib/nrfx' (https://github.com/NordicSemiconductor/nrfx.git) registered for path 'lib/nrfx'

Submodule 'lib/stm32lib' (https://github.com/micropython/stm32lib) registered for path 'lib/stm32lib'

Cloning into '/mnt/h/proj/micropython/micropython/lib/axtls'...

Cloning into '/mnt/h/proj/micropython/micropython/lib/berkeley-db-1.xx'...

Cloning into '/mnt/h/proj/micropython/micropython/lib/libffi'...

Cloning into '/mnt/h/proj/micropython/micropython/lib/lwip'...

GIT倉庫里的主要組件:

py/ -- Python核心應用,包括編譯器,runtime和核心庫。

mpy-cross/ -- MicroPython交叉編譯器,用于將腳本轉換成預編譯的字節碼。

ports/unix/ -- 運行在UNIX上的MyPython版本。

ports/stm32/ -- 運行在PyBoard(使用ST Cube HAL驅動)和類似的STM32板上的MicroPython版本。

ports/esp32/ -- 運行在Espressif的ESP32 SoC上的MicroPython版本。

ports/nrf/ -- 運行在Nordic的NRF 51和NFR52 MCU上的MicroPython版本。

ports/minimal/ -- 最小的MicroPython接口,用于將MicroPython移植到另一個MCU。

tests/ -- 測試框架和測試腳本。

docs/ -- 用戶文檔。

extmod/ -- 附加(非內核)C模塊。

tools/ -- 各種工具,包括PyBoard.Py模塊。

examples/ -- 一些Python腳本示例。

安裝gcc-arm-embedded

Build instructions

在為目標板編譯固件之前,必須編譯MicroPython交叉編譯器,它用于將一些內置的腳本預編譯為字節碼。在主機上編譯交叉編譯器:

dolphin@DESKTOP-DR5OKOG:/mnt/h/proj/micropython/micropython$ make -C mpy-cross

make: Entering directory '/mnt/h/proj/micropython/micropython/mpy-cross'

Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.

mkdir -p build/genhdr

GEN build/genhdr/mpversion.h

GEN build/genhdr/qstr.i.last

GEN build/genhdr/qstr.split

GEN build/genhdr/qstrdefs.collected.h

QSTR updated

GEN build/genhdr/qstrdefs.generated.h

mkdir -p build/py/

CC ../py/mpstate.c

編譯完后生成mpy-cross:

LINK mpy-cross

text data bss dec hex filename

139992 12976 864 153832 258e8 mpy-cross

make: Leaving directory '/mnt/h/proj/micropython/micropython/mpy-cross'

編譯PYBV11

STM32的目標板需要ARM編譯器arm-none-eabi-gcc:

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa

sudo apt-get update

sudo apt-get install gcc-arm-embedded

安裝好編譯器后即可進行編譯,可以通過參數BOARD= 來指定目標板,比如make BOARD=PYBV11、make BOARD=STM32F4DISC:

dolphin@DESKTOP-DR5OKOG:/mnt/h/proj/micropython/micropython$ cd ports/stm32

dolphin@DESKTOP-DR5OKOG:/mnt/h/proj/micropython/micropython/ports/stm32$ make BOARD=PYBV11

Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.

mkdir -p build-PYBV11/genhdr

GEN build-PYBV11/genhdr/pins.h

GEN stmconst build-PYBV11/modstm_qstr.h

GEN build-PYBV11/genhdr/pybcdc.inf

GEN build-PYBV11/genhdr/pybcdc_inf.h

GEN build-PYBV11/genhdr/pllfreqtable.h

GEN build-PYBV11/genhdr/mpversion.h

GEN build-PYBV11/genhdr/qstr.i.last

編譯生成firmware,隨后便可通過windows端的JFLASH或者DFU工具將固件燒錄到目標板中:

LINK build-PYBV11/firmware.elf

text data bss dec hex filename

331204 36 28028 359268 57b64 build-PYBV11/firmware.elf

GEN build-PYBV11/firmware.dfu

GEN build-PYBV11/firmware.hex

也可通過將PYBV11的P1/DFU引腳連接到3.3V,按復位按鍵重啟,進入DFU模式來更新(非win10的UBUNTU子系統中):

make BOARD=PYBV11 deploy

編譯ESP32

ESP32的esp-idf在github倉庫中的地址:https://github.com/espressif/esp-idf。在本地創建esp-idf所在的目錄,比如/mnt/h/proj/,使用git clone將esp-idf下載到該目錄中:

cd /mnt/h/proj/

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

更新esp-idf中的子模塊:

#Do not miss the --recursive option. If you have already cloned ESP-IDF without this option, run another command to get all the submodules:

cd ~/esp/esp-idf

git submodule update --init --recursive

由于micropython僅支持hash值30545f4cccec7460634b656d278782dd7151098e的版本,所以需要切換到這個版本,否則會丟失一些定義,造成編譯失敗。

git reset 30545f4cccec7460634b656d278782dd7151098e --hard

進入esp-idf的目錄,通過以下指令安裝requirements.txt中的Python包。

pip3 install --user -r $IDF_PATH/requirements.txt

注意esp32中的相關文件:

esp-idf

components

docs

examples

make

tools

xtensa-esp32-elf

其中xtensa-esp32-elf是工具鏈,可以通過官網下載:

下載完后運行tar -xzf解壓到esp-idf目錄中。

進入前文下載的micropython的ports/esp32目錄,在目錄下新建腳本env.sh,將esp-idf及xtensa-esp32-elf所在的路徑寫入腳本中,在命令行中運行source env.sh設置編譯所需的環境變量:

if ! echo "${PATH}" | grep -q "xtensa-esp32-elf"; then

export PATH="/mnt/h/proj/esp-idf/xtensa-esp32-elf/bin:$PATH"

fi

export IDF_PATH=/mnt/h/proj/esp-idf

export CROSS_COMPILE=xtensa-esp32-elf-

再在該目錄下新建makefie文檔,在文檔中寫入以下內容:

#PORT = /dev/ttyUSB0

#FLASH_MODE = qio

#FLASH_SIZE = 4MB

#CROSS_COMPILE = xtensa-esp32-elf-

CONFIG_SPIRAM_SUPPORT = 1

include Makefile

通過以下命令編譯micropython

$ cd ports/esp32

$ make

編譯生成固件的有關信息:

LINK build/application.elf

text data bss dec hex filename

787097 192024 74368 1053489 101331 build/application.elf

Create build/application.bin

esptool.py v2.5.1

Create build/firmware.bin

bootloader 17808

partitions 3072

application 979264

total 1044800

esp32所需要的bootloader.bin、partitions.bin和application.bin生成在build目錄中。

將esp32連接到電腦的串口上,串口的端口,FLASH的設置預定義在Makefile中,也可以通過makefile重新定義。

在燒錄前請用以下命令擦除FLASH:

$ make erase

如果要將micropython固件寫入esp32,運行以下指令,通過esp-idf中的esptool.py腳本下載固件:

$ make deploy

以下是micropython連接WiFi的一個應用示例:

def wlan_connect(ssid='MYSSID', password='MYPASS'):

import network

wlan = network.WLAN(network.STA_IF)

if not wlan.active() or not wlan.isconnected():

wlan.active(True)

print('connecting to:', ssid)

wlan.connect(ssid, password)

while not wlan.isconnected():

pass

print('network config:', wlan.ifconfig())

參考文檔

#

鏈接地址

文檔名稱

1

http://www.micropython.org/

2

http://www.micropython.org.cn/bbs/

總結

以上是生活随笔為你收集整理的micropython用什么编译_micropython开发者指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。