引言
本文主要面向 2023年全國大學生物聯網設計競賽安謀科技命題 ,使用星辰處理器的靈動MM32F5微控制器開發板,基于MicroPython開發應用系統。這里講述的操作方法,也適用于靈動早年發布的使用Arm Cortex-M3微控制器的MM32F3微控制器開發板,以及各種使用MM32F3和MM32F5微控制器設計的開發板。
硬件
除了具有足夠Flash和SRAM的微控制器之外,運行MicroPython的電路板上最好有一個存儲介質,用于加載文件系統,進一步通過文件系統保存Python腳本,能夠讓電路板上電之后自動運行。筆者最早使用SD卡作為文件系統的載體,但后來在適配MM32F5微控制器的MicroPython項目中啟用了基于spiflash的LFS文件系統后,就轉而使用spiflash作為文件系統的載體。
相對于使用SD卡,使用spiflash的總體成本更加便宜,而且節約電路板的面積,并且不用擔心不小心丟掉SD卡這個小零件。當然,能夠擺脫使用SD卡轉而使用spiflash存儲芯片的一個更重要的原因,是筆者調通了Thonny IDE同MicroPython聯動,可以通過REPL向MicroPython的文件系統里存Python文件,否則不得不每次把SD卡拔下來通過SD卡讀卡器接到PC上,存好Python腳本文件后再插回電路板。
figure-smartcar-mm32f5-board-protrait
圖x ICAR-F5270開發板即周邊配套電路板
軟件
搭建MicroPython編譯環境
基于Windows操作系統搭建MicroPython開發環境:
- 安裝
Git
,從線上的代碼倉庫中獲取MicroPython項目的源碼。 - 安裝
msys2
,GNU工具集的運行環境,在Windows操作系統上模擬MicroPython原生的Linux編譯環境。 - 在
msys2
中安裝make
,使用Makefile
管理MicroPython工程。 - 在
msys2
中安裝Python
,運行編譯MicroPython過程中自動提取QSTR的腳本。 - 在
msys2
中安裝gcc
,在MicroPython項目中編譯生成運行在PC平臺的mpy-cross
工具,進而可將部分Python腳本文件編譯成微控制器平臺上運行MicroPython可以執行的字節碼,最終可打包進入將要下載到微控制器中的MicroPython固件中去。 - 安裝
arm-eabi-none-gcc
并導入msys2
,用于編譯MicroPython項目中的C源碼并生成MicroPython固件。 - 安裝
Keil MDK
和MM32F5微控制器的Keil設備支持包,用于將編譯創建的MicroPython固件下載到MM32F5微控制器中。 - 安裝
Tera Term
,一個常用的開源串口終端軟件,用于同運行MicroPython固件的微控制器開發板進行交互,輸入Python腳本并查看運行結果。
獲取MicroPython源碼
其中,在micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
目錄下,包含了基于MM32F5微控制器的使用spiflash掛載LFS文件系統的適配工程。如圖x所示。
figure-mm32f5-lfs-spiflash-project-in-git-repo
圖x MicroPython項目中的mm32f5-lfs-spiflash工程
編譯MicroPython源碼生成固件
下載MicroPython的代碼倉庫后,在msys2環境中,切換當前目錄到micropython-su/micropython-1.16/mpy-cross
目錄下,執行make
命令,編譯得到PC主機平臺上運行的MicroPython交叉編譯器,mpy-cross
。
Andrew@Andrew-PC MSYS /d/gitrepos/micropython-su/micropython-1.16/mpy-cross
# make
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
GEN build/genhdr/mpversion.h
CC main.c
LINK mpy-cross
text data bss dec hex filename
306417 3784 416 310617 4bd59 mpy-cross
然后再切換到micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
目錄下,運行make BOARD=icar-f5270
命令,編譯創建基于MM32F5微控制器的ICAR-F5270開發板適用的MicroPython固件。
Andrew@Andrew-PC MSYS /d/gitrepos/micropython-su/micropython-1.16/ports/mm32f5-lfs-spiflash
# make BOARD=icar-f5270
Use make V=1 or set BUILD_VERBOSE in your environment to increase build verbosity.
mkdir -p build-icar-f5270/genhdr
GEN build-icar-f5270/genhdr/mpversion.h
GEN build-icar-f5270/genhdr/moduledefs.h
...
CC ../../lib/libm/wf_lgamma.c
CC ../../lib/libm/wf_tgamma.c
CC ../../lib/libm/ef_sqrt.c
CC ../../drivers/bus/softspi.c
AS ../../lib/utils/gchelper_m3.s
CC ../../lib/mm32mcu/mm32f5270/devices/mm32f5277e/startup_mm32f5277e.S
LINK build-icar-f5270/firmware.elf
text data bss dec hex filename
169492 976 10424 180892 2c29c build-icar-f5270/firmware.elf
下載MicroPython固件到電路板
比較穩妥的做法,借用Keil MDK
,通過DAP-Link
向MM32F5微控制器下載編譯好的firmware.hex
文件。
在Keil工程的配置選項對話框的Debug
頁面中,指定使用CMSIS-DAP
調試器。在Output
頁面中,使用Select Folder for Objects ...
指定將要下載文件的路徑位于新創建的build-icar-f5270
目錄下。如圖x所示。
figure-keil-daplink-download-1
圖x 借用Keil下載MicroPython固件到芯片
運行第一個樣例工程
啟動串口終端軟件,識別到DAP-Link虛擬出來的UART串口,配置串口通信波特率115200,無校驗、8位數據、1位停止位,連上UART。
復位MM32F5電路板,運行MicroPython固件的程序。此時,用戶可以在串口終端軟件的界面中看到MicroPython啟動運行的提示信息,然后可以試著在串口終端軟件的界面中試著輸入一些Python語句,運行程序。如圖x所示。
figure-micropython-repl-welcome
圖x 試用MicroPython的REPL
-
微控制器
+關注
關注
48文章
7646瀏覽量
151869 -
Cortex-M3
+關注
關注
9文章
270瀏覽量
59541 -
GNU
+關注
關注
0文章
143瀏覽量
17523 -
SRAM存儲器
+關注
關注
0文章
88瀏覽量
13363 -
Micropython
+關注
關注
0文章
68瀏覽量
4762
發布評論請先 登錄
相關推薦
評論