日韩性视频-久久久蜜桃-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开发者指南的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 91 色| 无码国产精品一区二区免费式直播 | 肉色超薄丝袜脚交一区二区图片 | 麻豆国产尤物av尤物在线观看 | 97久久久久久久 | 男人的天堂视频 | 美女免费福利视频 | 国产成人无码一区二区三区在线 | 538国产精品一区二区免费视频 | 色哟哟中文字幕 | 精品国产96亚洲一区二区三区 | 麻豆一区产品精品蜜桃的特点 | 最近中文字幕在线视频 | 91自啪| 亚洲第一成肉网 | 日本三级视频在线观看 | 毛片在线视频观看 | 制服丝袜av在线播放 | 免费在线观看a级片 | 天天操天天干天天 | 青青操操| 久久人人爽人人爽人人av | 精品无码在线视频 | 亚洲午夜av在线 | 日本在线免费观看视频 | 极品人妻一区二区 | 中国av一级片 | 99久久婷婷国产精品综合 | 久久久综合久久 | 国产毛片视频 | 日韩欧美超碰 | 日本加勒比在线 | 91网址在线播放 | 欧美性受xxxx黑人xyx性 | 久久精品中文字幕 | 被黑人猛躁10次高潮视频 | 国产99久久九九精品无码 | 福利小视频在线播放 | 打屁股调教视频 | 久久久久久一区二区三区 | 国产深夜视频 | 日日碰 | 中文字幕视频观看 | 嫩草视频一区二区三区 | 亚洲男人影院 | 狠狠干成人 | 精品日韩在线视频 | 欧美精品91 | 日韩精品短片 | 轮番上阵免费观看在线电影 | 国产xxx| 男女啪啪av | 亚洲欧美激情在线观看 | 国产精品美女网站 | 国产视频你懂得 | 久久久一二三 | 国产精品成人免费一区久久羞羞 | av色片| 欧美影音 | 最新日韩中文字幕 | 91蝌蚪视频在线观看 | 尤物在线免费观看 | av噜噜在线 | 国产一线二线在线观看 | 日本夜夜操 | 精品h| 毛片的网站 | 男女裸体影院高潮 | 在线观看国产一区二区 | 波多野结衣中文一区 | 亚洲av熟女一区 | 操丝袜美女视频 | 人人爽人人 | 一级做a爱 | 欧美一级性片 | 日韩在线视频看看 | 日韩成人在线免费观看 | 亚洲欧美网址 | 欧美做受视频 | 黄色美女免费网站 | 狠狠澡 | 永久av| 欧美中文字幕在线观看 | 波多野结衣潜藏淫欲 | 激情片| 美女露胸露尿口 | 噼里啪啦免费高清看 | 夜夜干天天操 | 先锋成人 | 国产香蕉在线观看 | 日韩色综合 | 色香蕉影院 | 熟妇高潮一区二区 | 绿帽h啪肉np辣文 | 精品国产免费一区二区三区 | 日韩欧美亚洲一区二区三区 | 夜夜cao| 国产无码精品视频 | 国产亚洲精品女人久久久久久 |