本文檔主要介紹,在python環境下,如何開發嵌入式應用程序,以STM32H43板卡爲例介紹. 從系統環境搭建,到編譯,到用python實現硬件控制。可做爲入門教程。python
2. 準備工做linux
2.1 開發環境搭建git
開發環境能夠本身使用虛擬機而後安裝ubuntu系統,而Win10系統自帶有linux系統,只須要使能就能夠使用,比較方便,因此咱們以win10自帶的linux子系統爲例。ubuntu
在控制面板中啓用linux子系統,點擊啓用或關閉Windows功能。vim
以下圖勾選適用於linux的windows子系統,而後重啓電腦windows
點擊當即從新啓動微信
重啓後進入windows 10 應用商店,搜索Ubuntu,能夠選擇18.04或者20.02進行安裝網絡
下載安裝完畢,點擊啓動編輯器
設置用戶名和密碼,工具
安裝的默認路徑是
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgscLocalState ootfshome
路徑不能修改,至此linux環境就行了,能夠輸入一些經常使用命令看看,如ls,cp, rm等命令。
Win10地下安裝的linux子系統只支持命令行, 沒有本身用虛擬機安裝的功能全面,可是對於開發micropython 足夠。
2.1.2 虛擬機安裝
若是不想用windows10 安裝的,想本身搭建也是能夠,須要安裝虛擬機和下載ubunut的iso鏡像文件,進行安裝,這種安裝網上不少,咱們就不詳細列出了,推薦第一種安裝。
2.1.3 依賴軟件安裝
Git安裝,git用來獲取軟件包
使用克隆micropython的軟件包,也能夠去官網本身下載,拷貝到linux環境的home目錄下。
使用git 克隆軟件包
若是網絡很差,要等一段時間,比較慢。也能夠本身到官網下載,我已經下好,你們能夠找我索取當前最新板micropython-1.13
http://www.micropython.org/download/
2.1.4 Micropython 目錄結構
目錄結構比較重要,只有清除目錄結構了,你才能移植到不一樣的板卡。
詳細的目錄結構介紹能夠參考README.md
主要關注下目前micropython支持的ST開發板,和咱們關係比較大的是H7系列,能夠看到目前支持不少的ST芯片。
3. 交叉編譯工具鏈
在終端輸入sudo apt install gcc make 命令安裝 gcc, make
安裝完後能夠查看下版本
輸入 sudo apt-get install gcc-arm-none-eabi 安裝針對ARM的編譯器
若是你的交叉工具鏈安裝下載比較慢的話,請按如下步驟修改,由於linux自帶的軟件源地址都是國外的,國內更新下載安裝的話會比較慢,須要將列表更新爲國內
將打開的文件內容所有刪除掉,替換爲如下鏡像源
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
修改完軟件源後,更新軟件列表和軟件:
sudo apt update
sudo apt upgrade
若是對vim編輯器命令不熟悉,能夠本身百度,或者直接在如下目錄
C:Usershpp19AppDataLocalPackagesCanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgscLocalState ootfsetcapt 下將sources.list文件替換爲如下阿里雲鏡像源,這樣速度會很快。
編譯mpy-cross, mpy-cross是一個micropython的輔助工具,在編譯過程當中會用到,在micropython的源碼根目錄中輸入命令make -C mpy-cross
至此交叉編譯工具鏈就安裝完畢,能夠編譯STM32的程序了。
4. 編譯程序
在源碼根目錄下輸入命令make -C ports/stm32 若是不指定BOARD,則默認編譯的是ports/stm32下的PYBV10板子,而咱們須要的是能在H743上跑,因此須要裁剪移植一個對H743的板子,查看下能夠看到micropython目前支持的STM32板卡有F091, F401,F429,F446,F746,H743等,
複製NUCLEO_H743ZI命名爲BODEBOARD
輸入命令ls查看下已經有BODEBOARD文件夾和文件,進入查看下
主要有5個文件,而咱們就須要修改這裏面的文件
首先修改時鐘爲25000000,主要是修改stm32h7xx_hal_conf.h文件
修改mpconfigboard.h
將時鐘修改成以下配置,能夠複製咱們以前IAR工程下的時鐘配置。
修改其餘管腳,這一節咱們只以修改三個LED和UART1等管腳爲例,在文檔的下一個版本更新中,會更新全部用到的硬件管腳,仍是在這個文件中繼續修改對應的硬件管腳
保存退出
修改pins.csv文件
添加LED和UART1的管腳
保存退出。
由於咱們是參照的NUCLEO_H743ZI,因此mpconfigboard.mk文件不用修改。至此修改完畢,能夠編譯,在micropython根目錄下輸入命令 make -C ports/stm32 BOARD=BODEBOARD
等待編譯完成。
能夠看到生成了.hex和.dfu固件,任選一種下載入H743板子,這樣板卡里就有了python解析器,能夠識別python語言
編譯好的固件怎麼樣複製到windows主機呢,固然你能夠直接去生成的目錄底下拷貝,在win10 的linux子系統中默認已經將windows分區掛載好了,咱們能夠在/mnt目錄下看到
這樣咱們就能夠直接使用命令cp拷貝到windows了,固然若是你不習慣命令行操做,能夠安裝midinight commander 軟件,能夠方便的管理文件,輸入命令sudo apt install mc 進行安裝,安裝完後,輸入mc能夠直接打開軟件。
無論用那種方法,將Hex文件下載到硬件板卡,下載完畢後,給板子從新上電,能夠看到出現一個PYBFLASH相似U盤的盤符,打開裏面有boot.py
main.py 等四個文件,咱們最後的應用程序直接寫在main.py就能夠運行了。
5. 測試
咱們先來演示使用putty來控制板子上的LED燈,打開putty,配置波特率和串口號,
導入LED庫,就能夠控制LED了
能夠觀察H743的板子三個LED燈依次點亮,經過Putty能夠控制硬件就完成了,那麼如何讓板子上電就三個LED燈點亮,而不須要經過Putty控制呢。?
這就要編輯咱們前面提到的main.py文件,使用任何文本編輯器打開,寫入python代碼,保存退出,就能夠運行了。
經過以上代碼就實現了LED的點亮控制,實現用python控制單片機。至此就能夠用python編寫不少好玩的東西在單片機上跑了。
6. 參考文檔
序號 |
文獻 |
1 |
www.micropython.org |
本文分享自微信公衆號 - 嵌入式程序猿(InterruptISR)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。