Micropython開發之前篇--基於Ubuntu的Micropython交叉編譯環境搭建

Micropython開發之前篇–基於Ubuntu的Micropython交叉編譯環境搭建

Micropython的Dfu文件哪裏來的?當初爲了把Dfu轉成.hex燒進板子煞費苦心,也爲了讓STM32F407ZG,STM32F407VE用上Micropython熬夜奮戰,現在回想,真的是……

寫一篇博客,只是告訴大家當初筆者跳過的坑,破轉引玉,希望後來者都能比我做的更好

Micropython開發環境有人說可以Windows下搭建,筆者只能呵呵望洋興嘆,筆者只是嵌入式出身,Dos命令用的一塌糊塗,幸運的是,學嵌入式的有點基本功基本上都會一些簡單的linux操作:比如 cd……,ls……,sudo……,tar……等等常見指令,於是果斷選擇了自己熟悉的linux–Ubuntu

在用虛擬機或裝Ubuntu雙系統前,先透漏第一個坑:Ubuntu版本選擇!首先知道編譯的STM32肯定要用到
GNU Arm Embedded Toolchain ,直接貼上官網鏈接:

注意我用紅框框圈起來的地方----------敲黑板畫重點:

https://launchpad.net/gcc-arm-embedded/
在這裏插入圖片描述
Toolchain是編譯一定要用到的,Toolchain支持Ubuntu 12.04/14.04/16.04/16.10 32/64操作系統,所以其它Ubuntu版本長得再美,對不起,人家不支持!

對應版本請自己百度下載
然後就是虛擬機或者Ubuntu雙系統這裏不再贅述。
進入Ubuntu後先安裝arm-gcc編譯器,同時可以更新一下軟件堆棧的內容:Ctrl+Alt+t打開終端,輸入:
sudo add-apt-repository ppa:team-gcc-arm-embedded/ppasudo apt updatesudo apt install gcc-arm-embedded
然後安裝git軟件:
sudo apt install git
還需要安裝gcc編譯器和make軟件:
sudo apt install gcc make

到這一步,需要的軟件基本安裝完成,下面是用 git 同步下載 micropython 源碼。雖然可以使用zip方式下載,可是這樣不利便和源碼同步更新。我們先在用戶目錄中建立一個projects目錄,將micropython下載到projects目錄中:
cd
mkdir projects
cd projects
git clone https://github.com/micropython/micropython
由於文件多,github在海內會見速率也不快,下載速率與網絡有很大關係。若是下載,需要重複這個步驟。
下載後,進入micropython目錄,先下載使用到的其它庫文件:
cd micropythongit submodule update --init
micropython引用的外部庫也比力多,下載需要一準時間。若是提醒超時或者下載失敗,需要重複前面歷程。
下載源碼後,就可以最先編譯了,首先是編譯mpy-cross,它是一個micropython的輔助工具,在編譯歷程中會用到。
在micropython源碼的根目錄中,輸入下面下令:
make -C mpy-cross
這個法式不大,編譯速率也比力快。編譯後就可以編譯STM32的法式了,下面下令是編譯官方的pybv10開發板固件:
make -C ports/stm32
若是是編譯其它開發板,就需要在下令行中指定板子的名稱,注重BOARD必須大寫,等號雙方不能有空格:
make -C ports/stm32 BOARD=STM32F7DISC
若是其它開發板,替換板子的名稱就可以。若是是自己界說的板子,還需要將開發板的界說文件添加到ports/stm32/board目錄下。
以後若是micropython代碼更新了,我們就可以通過git同步更新,然後再次編譯。
git pull

編譯前最好先掃除以前的編譯內容,這樣可以制止由於更新造成的編譯錯誤
make -C ports/stm32 cleanmake -C ports/stm32
上面編譯出的固件是默認方式,不帶有雙精度浮點,也不支持線程功效。若是希望添加線程功效,需要打開板子的設置文件mpconfigboard.h,然後在文件中添加下面兩行:
#define MICROPY_PY_THREAD (1)#define MICROPY_PY_THREAD_GIL (1)

然後先掃除以前的暫時文件,再重新編譯。

若是需要雙精度浮點功效,在編譯時下令行中,添加 MICROPY_FLOAT_IMPL=double。

編 譯速率與盤算機的設置有較大關係,設置越高,CPU性能越好,速率越快。此外若是盤算機使用了通俗硬盤,第一次編譯也會較慢,需要較多的時間加載法式,使 用SSD硬盤時,第一次編譯速率顯着快許多。

編 譯後,發生的固件在 ports/stm32/build-xxxxx 目錄下(xxxxx是板子的名稱),編譯會同時發生elf、dfu、hex三種花樣的文件。dfu適合通過USB方式升級,elf和hex可以使用 jlink、stlink通過SWD下載(會丟失用戶磁盤內容)。

編譯好固件怎樣複製 到windows主機呢?如果是虛擬機並安好文件共享工具,直接“託“到電腦磁盤即可,如果使用雙系統,那挺麻煩的,需要重啓電腦,最簡單的辦法是U盤,對你沒聽錯,網上說使用ftp傳的都是公司局域網互傳,對你的單機沒有意義,最簡單可行的是用U盤,當然你也可以在Linux下直接把編譯好的文件燒錄進你的板子。

OK,希望有了我的介紹後能相你有幫助

總之,用Micropython操作STM32 F4及以上的單片機體驗絕對秒殺MDK。

不過有句老話說得好:存在既有道理,很多模塊開發還是需要用MDK或IAR,

Micropython還有很長的路要走。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章