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