當前位置:係統粉 >   IT資訊 >   微軟資訊 >  幹貨|教你在Win10的ubuntu子係統下編譯micropython

幹貨|教你在Win10的ubuntu子係統下編譯micropython

時間:2019-01-09 來源:互聯網 瀏覽量:

在Win10的應用商店中,提供了Linux的子係統,這是實際上是一個虛擬機軟件,與virtualbox和vmplayer功能類似。下麵就介紹在Linux子係統中安裝工具鏈和編譯micropython的方法。

先確認一下Windows10係統的版本,如果是LTSB版(Long Time Service Branch 企業長期服務版),就需要更換到企業版。

如果還沒有安裝過Linux子係統功能,首先需要在控製麵板的“程序和功能”中允許適用於Linux的Windows子係統功能,並重新啟動計算機。

幹貨|教你在Win10的ubuntu子係統下編譯micropython(1)

然後就可以在應用商店中,通過搜索Linux或者ubuntu,找到ubuntu應用。注意現在應用商店裏ubuntu有兩個版本,分別是16.04和18.04。

這兩個版本都是長期服務器版,但是我們需要選擇第一個,也就是16.04版本,因為目前gcc-arm編譯器還沒有支持18.04,使用18.04版本就需要自己手工安裝編譯器,比較麻煩。

幹貨|教你在Win10的ubuntu子係統下編譯micropython(2)

安裝好ubuntu 16.04後,運行就會出現下麵的控製台樣式窗口,它默認是隻有控製台(shell)界麵,沒有圖形化界麵。我們可以通過 lsb_release -a 命令查看係統版本。

幹貨|教你在Win10的ubuntu子係統下編譯micropython(3)

這個新安裝的ubuntu可以看成是一個全新的係統,大部分軟件都需要自己安裝。我們先安裝arm-gcc編譯器,同時可以更新一下軟件倉庫的內容。


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硬盤時,第一次編譯速度明顯快很多。在一個Windows10平板上(cpu的N3450,),編譯1.9.4版本的固件,使用了約260秒,而相同情況下使用虛擬機編譯約160秒,看起來Linux子係統的性能還有很大改進的空間。

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

編譯好固件怎樣複製到windows主機呢?在Linux子係統中,默認已經將windows的各分區掛載好了,我們可以在 /mnt 目錄下看到。將固件複製到進去就可以了。如果不習慣用命令行方式操作,可以安裝一個midinight commander軟件,它類似早期的norton commander,可以方便的管理文件。

sudo apt install mc

幹貨|教你在Win10的ubuntu子係統下編譯micropython(4)

使用Linux子係統,好處在於安裝和使用簡單,安裝後可以直接運行,沒有複雜的配置,文件體積比使用虛擬機要小,占用係統資源也較少。Linux係統作為windows的一個程序,比傳統用虛擬機方式更加容易使用。缺點是不能選擇用戶數據存放的目錄,所有文件都會保存到係統盤,需要在係統盤留出足夠的空間,此外性能比傳統虛擬機低。

以上圖文內容均轉載自訂閱號:電子工程世界(微信搜索 eeworldbbs 關注)

歡迎微博@EEWORLD

如果您也寫過此類原創幹貨歡迎將您的原創發至:bbs_service@eeworld.com.cn,一經入選,我們將幫你登上頭條!

聚焦行業關注熱點, 了解科技最新前沿

敬請關注EEWorld電子頭條

手機訪問:http://www.eeworld.com.cn/mp/wap

電腦訪問:http://www.eeworld.com.cn/mp

與更多行業內網友進行交流請登陸EEWorld論壇。

我要分享:

最新熱門遊戲

版權信息

Copyright @ 2011 係統粉 版權聲明 最新發布內容 網站導航