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源码编译与固件更新的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 7.0 解锁亮屏,And
- 下一篇: 绿联串口线linux驱动下载,绿联usb