在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', )

 然后正常编译就可以了!

 

原文地址:https://www.cnblogs.com/sunsuoli/p/11094987.html