在micropython固件中增加自己的模塊


     micropython中可以將自己做的模塊以.py文件的方式存儲,以備調用,但是這種方式容易被用戶更改或者抄襲,所以micropython允許用戶將自己的模塊增加到標准的固件里。由於這部分工作需要linux系統下進行的,所以我用了VNC控制樹莓派進行編譯。有些設置權限的步驟,如果在直接登錄的linux上不需要的話,請自行忽略。

1.安裝arm-none-eabi-gcc交叉編譯工具和gcc編譯器。

  sudo apt-get install gcc-arm-none-eabi
  sudo apt-get install gcc

2.下載micropython源碼包到本地,我下載到了pi目錄下

  sudo git clone --recursive https://github.com/micropython/micropython.git

3.修改micropython權限

  sudo chmod -R 777 /home/pi/micropython/

4.編寫自定義模塊

  在/home/pi/micropython/ports/stm32/modules/ #目錄下增加自己的.py模塊

5.更改運行目錄到交叉編譯工具

  cd /home/pi/micropython/mpy-cross/ #切換至交叉編譯器目錄下

6.執行交叉編譯

  make #執行交叉編譯

7.更改運行目錄至STM32

  cd /home/pi/micropython/ports/stm32/ #切換至STM32目錄下

8.執行編譯

  sudo make BOARD=PYBV10 #編譯生成UDF、HEX文件

編譯完成后在stm32目錄下有個build-PYBV10文件夾,在里面可以找到firmware.duf和firmware.hex,選擇自己想要的文件燒寫的硬件去吧!

 

2019-11-22補充:如果需要編譯多線程固件,將STM32目錄下mpconfigport.h中        

#define MICROPY_PY_THREAD           (0)

改為 

#define MICROPY_PY_THREAD           (1)

然后進行上面操作即可!

然而,github上最新的源碼STM32/里面沒有了modules/文件夾,查看makefile文件,發現少了FROZEN_MPY_DIR ?= modules,而多了這句話:FROZEN_MANIFEST ?= boards/manifest.py

打開boards/manifest.py,內容如下:

 而這幾個模塊正是之前版本里modules文件夾里的模塊

 

也就是說想要增加py文件到固件,除了增加py文件外還需要修改manifest.py里的內容。具體方法如下:

在micropython/drivers/里增加modules文件夾用來放置自定義的py模塊,在manifest.py里增加如下代碼:

freeze('$(MPY_DIR)/drivers/modules', )

 然后正常編譯就可以了!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM