STM32 进阶教程 1 - micropython 移植
前言
Python是一種解釋型、面向對象、動態數據類型的高級程序設計語言。
Python 是一個高層次的結合了解釋性、編譯性、互動性和面向對象的腳本語言。具有如下特點:
1.易于學習:Python有相對較少的關鍵字,結構簡單,和一個明確定義的語法,學習起來更加簡單。
2.易于閱讀:Python代碼定義的更清晰。
3.易于維護:Python的成功在于它的源代碼是相當容易維護的。
4.一個廣泛的標準庫:Python的最大的優勢之一是豐富的庫,跨平臺的,在UNIX,Windows和Macintosh兼容很好。
5.互動模式:互動模式的支持,您可以從終端輸入執行代碼并獲得結果的語言,互動的測試和調試代碼片斷。
6.可移植:基于其開放源代碼的特性,Python已經被移植(也就是使其工作)到許多平臺。
7.可擴展:如果你需要一段運行很快的關鍵代碼,或者是想要編寫一些不愿開放的算法,你可以使用C或C++完成那部分程序,然后從你的Python程序中調用。
8.數據庫:Python提供所有主要的商業數據庫的接口。
9.GUI編程:Python支持GUI可以創建和移植到許多系統調用。
10.可嵌入:?你可以將Python嵌入到C/C++程序,讓你的程序的用戶獲得"腳本化"的能力。
MicroPython 是Python 3編程語言的一種精簡而高效的實現,它包含Python標準庫的一個小子集,并且經過優化,可以在微控制器和受限環境中運行。MicroPython包含了許多高級特性,比如交互式提示符、任意精確整數、閉包、列表理解、生成器、異常處理等等。但是它足夠緊湊,可以在256k的代碼空間和16k的RAM中運行。MicroPython的目標是盡可能與普通Python兼容,允許您輕松地將代碼從桌面轉移到微控制器或嵌入式系統。
本節將帶領大家在STM32F407ZET6開發板上移植micropython,讓python的優點進入到單片機,進入到嵌入式程序開發層次!
?
示例詳解
基于硬件平臺: 正點源子的stm32f4 探索者開發板,MCU 的型號是?STM32F4ZET6。首先筆者使用的實驗環境為WIN10+Ubuntu14.04(虛擬機,安裝了python2.7 )。所用到的工具有JFLAH, PUTTY, ST_DFU工具(非必需)。
ST_DFU 工具下載:http://www.stmcu.org.cn/document/detail/index/id-215019
Putty工具下載:https://www.putty.org/
Jflasha工具下載(配合JLINK使用): https://www.segger.com/downloads/jlink/#J-LinkSoftwareAndDocumentationPack
?
本示例所用的開發板及部分原理圖:
?
?
sudo apt-get install git
下載micropythonid源碼(速度與網絡速度有關,幾分鐘到幾個小時都有可能):
git clone https://github.com/micropython/micropython
下載完成后,在home目錄下可以看到多了一個micropython文件夾:
在ports/stm32/boards下看到micropython支持的處理器或開發板:
?
在終端中依次輸入如下命令完成交叉編譯器的安裝:
sudo apt-get install gcc
sudo apt-get install gcc-arm-none-eabi
進入到micropython目錄,并列出其內容:
cd micropython
ls
進入ports/stm32/boards目錄,我們開發板芯片型號是STM32F407ET6, 最相近有F4 系列即STM32F4DISC。復制STM32F4DISC并重重命名為MYBOARD:
cd ports/stm32/boards
cp -r STM32F4DISC MYBOARD
回到源碼目錄micropython下,進入mpy-cross目錄,先編譯MicroPython cross-compiler(很多開發板需要先編譯好mpy-cross 然后才能成功編譯Micropython ):
cd mpy-cross
make
接下來就可以編譯Micropython了,回到micropython輸入下列命令下源碼中的一些子模塊submoudle下載下來:
git init
git submodule update –init (跟網絡速度有關,要點時間)
(筆者電腦之前已初始化過,很快便完成了)
?
進入stm32目錄下編譯執行,生成我們所需要的固件DFU或者HEX形式的:
cd ports/stm32/
make BOARD=MYBOARD PYTHON=python2
BOARD=MYBOARD是用于指定要編譯的開發板, PYTHON=python2是因為筆者電腦安裝的python是2.7版本的,如果安裝的是python3,該參數可以省略(見redme.md文件)。
如上圖,編譯成功,在stm32目錄下會生成一個build-MYBOARD文件夾:
在文件夾中有對應的燒入或升級文件:
Firmware.elf, firmware.hex是用于燒錄的完整固件,firmware0.bin是bootLoader程序文件,firmware1.bin是程序app文件,firmware.dfu是配合ST-DFU工具用的app文件。
本實現我們用jlink工具直接燒錄firmware.hex文件來下載程序到開發板,關于DFU的使用請參考筆者的“STM32 基礎系列教程 28 - USB_DFU”一節內容:
?
將firmware.hex復制到WIN10系統,在win10環境下打開jflah工具,選擇創建新工程后點“start j-flash”
選擇對應開發板對應的芯片型號,操作如下:
直接OK后,選擇File-Open data file … 打開剛復制過來的firmware.hex文件:
將jlink工具接上電腦,與開發板連接好,開發板供電接好,完整的接線如下圖(當前步驟只是燒錄,只要求JLINK與開發板連接好并開發板正常供電即可):
在jflash工具菜單中的Options選項中選擇Project Seting命令,在彈出的對話框中選中Production標簽頁并勾選其中的Start application 選項:
依次執行 Target 菜單中的Connect 及 Production Programming 命令,完成對芯片的連接與編程操作,編程完成后彈出如下提示:
?
程序運行后在電腦資源管理器中會多一個USB 串行設備串口,如下圖中的COM24,
如果你的電腦中沒有出現USB串行設備,而是多了一下STM32_BOOTloader設備,這可能是能的電腦上的打開了開發板上的USB_232串口 導致,這時需在PC上先關閉該串口(找到對應的串口工具,關閉串口先),然后按下開發板上的復位鍵即可。
程序正常跑起來后,在WIN10系統下按WIN+E快捷鍵,在彈出的資源管理器中可以看到電腦上多了個pybFLAHS盤:
?
安裝并打開PUTTY工具,指令剛設置管理器中看到的USB 串行設備,打開串口,連接開發板:
成功連接,并且輸出對應的提示信息,哈哈,大功完成一半:
下面就是來輸入命令驗證一下:
Help()
加減乘除運算:
操作IO口:
mypin.high()
mypin.low()
?
隨機數產生:
?
本次的基于micropython的移植教程就完成了,關于micropython的更多介紹與教程可以去:http://docs.micropython.org/en/latest/pyboard/quickref.html#timers,有興趣的同學或有實際應用案例的同學可以好好研究與利用一下。本節內容只是成功移植了micropython,但是針對于本實例所用的開發板,還有很多功能是用不了的,比如不支持GPIOFK口的操作,LED控制的端口不對,UART1使用不了等等,下一節,將給大家介紹如何針對于我們的實驗平臺,一一的解決上面的問題。
?
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關注了,會有不定期技術干貨推出!!
?
文中源碼資料下載,在公眾號里給十三發消息:
下載|STM32進階教程1
?
關注十三公眾號
可參考博文:https://blog.csdn.net/bobo184/article/details/84174990
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的STM32 进阶教程 1 - micropython 移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: STM32 基础系列教程 50 – Mb
- 下一篇: STM32 进阶教程 2 - micro