引言
為MicroPython啟用LittleFS文件系統的想法在我的腦袋里已經醞釀了大半年。隨著MindSDK中QSPI驅動的完善,以及基于flash存儲芯片的sfud組件和LittleFS組件的成功集成(感謝同事Hao的出色工作),使我得以在MM32F5微控制上運行的MicroPython項目中,使用基于flash存儲芯片的LittleFS文件系統,替換掉基于SD卡的FatFS文件系統。經過剛剛過去兩天一夜的編碼和調試,終于大功告成!
在早期的MicroPython項目中使用的SD卡,本身也是一個獨立的小零件,很容易丟失或者損壞,并且因為物理連接件的問題,有接觸不良的風險,另外在開發板之外再購買SD卡也需要一定經濟花銷。使用開發板上集成的flash存儲芯片取代SD卡存儲設備,可以大大降低整個MicroPython開發板的成本,并且易于維護。至于用戶體驗,無論腳本文件存放在SD卡還是flash芯片上,開發板都能正常運行Python腳本,并且能夠適配Thonny IDE,用戶不會感到一絲絲的不快。借用星爺的一句話:“一個字,絕!”
在本文中,將講述如何自己動手制作基于MM32F5微控制的最小系統板,并獲取與之配套的預先編譯好的MicroPython固件,以及使用圖形界面開發環境Thonny IDE在MM32F5微控制器上使用Python進行開發的基本用法。幫助MicroPython的開發者自己動手制作一塊基于微控制器的開發板。
MM32F5微控制器簡介
MM32F5270 是上海靈動微電子第一款搭載了安謀科技 Arm China STAR-MC1 內核的 MCU 產品,也是MM32F5系列的第一款產品,其工作頻率可達 120MHz,內置256KB Flash 和 192KB RAM,配置浮點運算單元(Floating Point Unit, FPU)、數字信號處理單元(Digital Signal Processing,DSP)、信號間互聯矩陣 MindSwitch、可配置邏輯單元 CLU、三角函數加速單元 CORDIC等算法加速單元,并集成了豐富的外設模塊和充足的 I/O 端口。MM32F5270 相較于靈動原有產品全面提升了性能、存儲容量、總線架構和外設配置,旨在覆蓋更廣泛的工業、汽車和 IoT 應用。
figure_mm32f5270_product_selection
圖1 MM32F5270系列微控制器選型## 制作MicroPython開發板
基于MM32F5270微控制器,搭建一個可以運行MicroPython的最小系統,除了以MM32F5270微控制為核心的最小系統外,只要外接一個SPI接口的flash存儲芯片即可(例如復旦微的FM25Q128)。當然,如果能附加一個USB轉串口的電路,將會顯著提升開發者的使用體驗。我手頭上有一塊內部使用的小板子,剛好滿足這樣的要求。如圖2所示。如果有開發者愿意自己設計MM32F5270的最小系統板,也是非常容易的。
圖2 MM32F5270電路板
預編譯的固件使用了特定的引腳,用于支持REPL通信的UART,和連接flash存儲芯片的QSPI。對于不愿意重新改寫代碼編譯MicroPython固件的開發者們,在自行制作電路板時,必須要使用同樣的引腳。實際上,這里的限制并不是很苛刻,對于使用了144引腳的芯片來說,僅綁定2個UART引腳和6個QSPI引腳并不是一件麻煩的事情,而搭建編譯MicroPython的環境并改寫源碼重新編譯固件,則將會是一個比較繁瑣并且需要一定調試能力去解決各種瑣碎麻煩的過程。關于綁定引腳的清單,可見表1。
PS:甚至外擴的flash存儲芯片都是不是必須的!如果你不打算讓芯片上電之后自動運行一個自行編寫Python程序文件,僅使用基于UART的REPL同MicroPython內核進行交互的話,那么使用flash存儲芯片作為存儲介質的文件系統也可以精簡掉。
表1 MicroPython綁定MM32F5270最小系統板的引腳| MCU引腳 | 綁定功能 | 備注 |
| --------- | ----------- | ------ |
| PB6 | UART1_TX | 必需 |
| PB7 | UART1_RX | 必需 |
| PA6 | QSPI1_CS | 可選 |
| PG7 | QSPI1_SCK | 可選 |
| PG6 | QSPI1_D0 | 可選 |
| PA3 | QSPI1_D1 | 可選 |
| PB3 | QSPI1_D2 | 可選 |
| PG8 | QSPI1_D3 | 可選 |
MM32F5270電路板上有通過UART外接USB轉串口芯片部分的原理圖。如圖3所示。
figure-cubic-f5270-uart-sch
圖3 MM32F5270電路板的UART電路MM32F5270電路板上有通過QSPI外接flash存儲芯片部分的原理圖。如圖4所示。
figure-cubic-f5270-qspi-sch
圖4 MM32F5270電路板的QSPI電路我手上的另一塊MM32F5270微控制器的開發板,PLUS-F5270開發板,板子上集成了一顆W25Q64的flash存儲芯片和USB轉串口電路,也能滿足運行MicroPython的條件。PLUS-F5270開發板是成都逐飛科技有限公司設計生產的一款基于MM32F5270微控制器的開發板,這也是靈動官方軟件MindSDK支持的開發板。這塊開發板已經對外出售,開發者可以在市面上買到。PLUS-F5270開發板的外觀如圖5所示。
圖5 PLUS-F5270開發板
獲取并下載MicroPython固件到開發板
為了獲取MicroPython的預編譯固件或者源代碼,可能需要一個CSDN或者gitee的賬號,登錄到網站上下載對應的文件。
獲取預編譯的可執行文件
本例中使用的MM32F5270最小系統板:使用12MHz外部晶振,串口波特率115200。
https://download.csdn.net/download/suyong_yq/86246621
PLUS-F5270開發板:使用12MHz外部晶振,串口波特率115200。QSPI1_CS引腳綁定到PB10引腳,其余引腳同本例相同。
https://download.csdn.net/download/suyong_yq/86246723
開源的完整項目的代碼倉庫
包含對MM32F5270微控制器支持的MicroPython項目代碼倉庫:
git@gitee.com:suyong_yq/micropython-su.git
下載可執行文件到MM32微控制器
可以使用DAPLink或者JLink作為調試器,使用Keil或者Segger Ozone作為PC端軟件。
《使用DAP-Link單獨下載可執行文件到MM32F5微控制器》一文中介紹了使用Keil和Ozone作為PC端軟件配合DAPLink調試器下載獨立的可執行文件到MM32微控制器上,同樣的方法也適用于使用JLink調試器的情況。
但若是使用JLink調試器,必須使用JLink v9以后的版本,之前市面上流行的老款JLink v8(俗稱“黑磚頭”)已經不支持Arm Cortex-M33,以及MM32F5微控制器所使用的ArmChina STAR-MC1內核。
在單片機上運行Python小程序
MM32F5270最小系統板上設計了一個可編程的LED燈,對應主控芯片的PC8
引腳。接下來以編寫Python程序控制這個LED燈為例,展示在電路板上運行MicroPython的玩法。
MM32F5270電路板上有通過QSPI外接flash存儲芯片部分的原理圖。如圖6所示。
figure-cubic-f5270-led-sch
圖6 MM32F5270電路板的LED電路### 使用基于UART串口終端的REPL
將MM32F5270微控制器上的串口通過USB轉串口電路同電腦相連,啟動串口終端軟件Tera Term,在終端界面中通過串口輸入Python腳本,如圖7所示。
圖7 通過REPL編寫MicroPython程序### 使用圖形開發環境Thonny IDE
Thonny是由愛沙尼亞的Tartu大學開發,非常適合初學者和教學的一款輕量級IDE,提供可視化的編程界面,并可逐句調試運行Python程序。可從官網上下載適配多操作系統平臺的安裝包(https://thonny.org/)。如圖8所示。
figure-thonny-overview
圖8 Thonny概覽啟用圖形開發環境Thonny IDE中,指定串口同MM32F5270電路板相連,然后在代碼編輯區中輸入Python程序,或從電腦上導入預先寫好的Python程序文件。然后通過Thonny IDE運行腳本,在Thonny內置的串口終端界面中可以產生輸出。Thonny內置的串口終端界面也可以像REPL一樣,直接輸入Python語句立即執行。如圖9所示。
demo-micropython-thonny
圖9 在Thonny中運行Python程序### 將Python程序保存在文件系統中上電自啟
如果希望編寫的Python程序能在開發板上電復位后自動運行,可以將Python腳本文件保存在MicroPython掛載的文件系統中。之后,通過電路板的硬件復位或者MicroPython的軟件復位,都可以激活已經存入文件系統中的腳本運行。如圖10所示。
demo-micropython-thonny-2
圖10 保存程序文件到文件系統中## 總結
作者將早期開發MicroPython項目中的文件系統從SD卡遷移到開發板的flash存儲器上,在完全不影響用戶使用體驗的情況下,簡化了電路系統,降低了整個MicroPython電路系統的成本,提高了系統的可靠性。
當然,如果進一步考慮,還可以將文件系統從片外flash遷入片內flash,利用未使用的flash存儲空間做文件系統,可以繼續降低成本。但是,使用片內文件系統也要面臨一些麻煩:
- 程序的可移植性變差了,每個不同的微控制器芯片可能使用不同的片內flash,對應的操作方式不同。
- 需要足夠大的片內flash,并不是每款微控制器芯片都有很大的片內flash。
- 單位空間的片內flash比片外flash貴。
- 操作片內flash比操作片外flash麻煩,可能需要將存放在片內flash上操作flash的函數搬運到RAM中才能正常工作。
-
微控制器
+關注
關注
48文章
7336瀏覽量
150120 -
文件系統
+關注
關注
0文章
280瀏覽量
19831 -
開發板
+關注
關注
25文章
4771瀏覽量
96184 -
Micropython
+關注
關注
0文章
68瀏覽量
4681 -
MM32F5
+關注
關注
0文章
12瀏覽量
522
發布評論請先 登錄
相關推薦
評論