日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新

發布時間:2024/9/27 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在實際開發中,難免會遇到編譯Micropython源碼的情況:比如當前固件損壞、固件版本升級、需要裁剪固件節省空間等。本文介紹在Linux環境中編譯Micropython源碼并下載到TPYBoard運行的流程。

獲取Micropython源碼

Linux環境下獲取Micropython源碼非常簡單,使用git clone:

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

安裝arm-none-eabi交叉編譯器

到?官網?下載arm-none-eabi安裝包,我使用的是gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2。

解壓:tar jxvf?gcc-arm-none-eabi-5_4-2016q3-20160926-linux.tar.bz2

解壓后生成目錄gcc-arm-none-eabi-5_4-2016q3,編譯器指令在bin目錄中。

將交叉編譯器加入環境變量:

在/etc/profile文件末尾添加export PATH=/opt/mpy_compiler/gcc-arm-none-eabi-5_4-2016q3/bin:$PATH

執行source /etc/profile

輸入arm-none-eabi-gcc -v驗證編譯器安裝、設置結果,能夠成功返回編譯器信息則表示安裝成功。

X86 Linux GCC版本約定

我使用的centos默認gcc版本為4.4.7,在編譯mpy-cross過程中報錯:py/objdict.c:473: error: dereferencing pointer ‘o’ does break strict-aliasing rules,原因是編譯器版本太低,因此將gcc編譯器升級到4.8。

升級步驟如下:

wget http://people.centos.org/tru/devtools-2/devtools-2.repo

mv devtools-2.repo /etc/yum.repos.d

yum install devtoolset-2-gcc devtoolset-2-binutils devtoolset-2-gcc-c++

安裝之后編譯器指令路徑為:/opt/rh/devtoolset-2/root/usr/bin

備份舊版本,為編譯器建立新的軟鏈接:

mv /usr/bin/gcc /usr/bin/gcc-4.4.7

mv /usr/bin/g++ /usr/bin/g++-4.4.7

mv /usr/bin/c++ /usr/bin/c++-4.4.7

ln -s /opt/rh/devtoolset-2/root/usr/bin/gcc /usr/bin/gcc

ln -s /opt/rh/devtoolset-2/root/usr/bin/c++ /usr/bin/c++

ln -s /opt/rh/devtoolset-2/root/usr/bin/g++ /usr/bin/g++

查看gcc版本:

[root@donkey bin]# gcc --version

gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15)

Copyright (C) 2013 Free Software Foundation, Inc.

This is free software; see the source for copying conditions. There is NO

warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

編譯mpy-cross

mpy-cross是Micropython自身的交叉編譯器,編譯固件之前需要先編譯mpy-cross。cd mpy-crossmake編譯完成生成命令mpy-cross:

CC main.c

CC gccollect.c

LINK mpy-cross

text data bss dec hex filename

133582 784 872 135238 21046 mpy-cross

編譯stmhal

stmhal為Micropython針對STM32的實現,因此編譯該目錄的代碼生成固件。

目前Micropython支持STM32的多種型號,這些型號的定義在目錄/stmhal/boards中,需要在Makefile中修改型號。本例中Makefile定義如下:

BOARD ?= PYBV10

進入stmhal目錄進行編譯:

cd stmhal

make

LINK build-PYBV10/firmware.elf

text data bss dec hex filename

321020 352 28088 349460 55514 build-PYBV10/firmware.elf

Create build-PYBV10/firmware.dfu

Create build-PYBV10/firmware.hex

編譯后生成.dfu和.hex固件:

[root@donkey build-PYBV10]# pwd

/opt/micropython/stmhal/build-PYBV10

[root@donkey build-PYBV10]# ls firmware*

firmware0.bin firmware1.bin firmware.dfu firmware.elf firmware.hex firmware.map

[root@donkey build-PYBV10]# du -h firmware.dfu

316K firmware.dfu

下載固件

下載方式有SWD ST-Link和DFU兩種,前者依賴ST-Link硬件,因此建議通過USB使用DFU模式燒寫固件,該方法非常簡便。

安裝DfuSedemo工具,運行。

將TPYBoard開發板的BOOT0和3.3V引腳短接,BOOT0引腳即DFU。

按下RST鍵,釋放RST鍵。

斷開BOOT0和3.3V。

此時DfuSedemo工具左上角的"Available DFU and compatible HID Devices"會識別到開發板。

點擊"Choose..." 選擇編譯好的.dfu文件,點擊"Upgrade"進行固件燒寫。

提示"Upgrade successful!"則固件燒寫成功,重啟TPYBoard,此時將運行新的固件。

總結

以上是生活随笔為你收集整理的micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新的全部內容,希望文章能夠幫你解決所遇到的問題。

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