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

     然后正常编译就可以了!

     

  • 相关阅读:
    [leetCode]Reverse Words in a String
    [leetCode]Word Break
    [leetCode]Unique Binary Search Trees
    [leetCode]Binary Tree Inorder Traversal 递归 && 栈解法
    [leetCode]Binary Tree Zigzag Level Order Traversal
    [leetCode]Binary Tree Level Order Traversal
    [leetCode]Binary Tree Maximum Path Sum
    freemarker生成静态页面中文乱码(固定中文和动态生成的中文都乱码)
    多线程-安全的终止线程
    多线程-理解中断
  • 原文地址:https://www.cnblogs.com/sunsuoli/p/11094987.html
Copyright © 2020-2023  润新知