M5Stack(ESP32)学习笔记(11)—— 把自己的Python代码文件编译到固件里

      我浏览了一下M5Stack的MicroPython固件的源码包里的目录和文件,发现还是有很多.py的Python代码文件的,所以就想,是不是也可以把我自己的.py文件编译到固件里面。答案是肯定的。 下面就来举个例子……

首先进入到 ~/M5Stack_MicroPython/MicroPython_BUILD/components/micropython/esp32/modules/目录下

root@debian:~# cd ~/M5Stack_MicroPython/MicroPython_BUILD/components/micropython/esp32/modules/
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD/components/micropython/esp32/modules# ls -l
total 200
-rw-r--r-- 1 root root  1342 Jun 11 23:07 README.md
-rw-r--r-- 1 root root  4332 Jun 11 23:07 ak8963.py
-rw-r--r-- 1 root root 16985 Jun 11 23:07 freesans20.py
-rw-r--r-- 1 root root   591 Jun 11 23:07 functools.py
-rw-r--r-- 1 root root  2094 Jun 11 23:07 logging.py
drwxr-xr-x 2 root root  4096 Jun 11 23:07 m5flow
-rwxr-xr-x 1 root root 10522 Jun 11 23:07 microWebSocket.py
-rwxr-xr-x 1 root root 35217 Jun 11 23:07 microWebSrv.py
-rwxr-xr-x 1 root root 12580 Jun 11 23:07 microWebTemplate.py
-rw-r--r-- 1 root root  5477 Jun 11 23:07 mpu6500.py
-rw-r--r-- 1 root root  1861 Jun 11 23:07 mpu9250.py
-rw-r--r-- 1 root root 27162 Jun 11 23:07 pye.py
-rw-r--r-- 1 root root  4900 Jun 11 23:07 ssd1306.py
-rw-r--r-- 1 root root  6106 Jun 11 23:07 tpcalib.py
-rw-r--r-- 1 root root  8226 Jun 11 23:07 upip.py
-rw-r--r-- 1 root root  2429 Jun 11 23:07 upip_utarfile.py
-rw-r--r-- 1 root root  4648 Jun 11 23:07 upysh.py
-rw-r--r-- 1 root root  3181 Jun 11 23:07 urequests.py
-rw-r--r-- 1 root root  5142 Jun 11 23:07 writer.py

可以看到有很多.py文件。

在这个目录下新建一个.py文件test.py,内容如下:

import display
tft = display.TFT()
tft.init(tft.M5STACK, width=240, height=320, rst_pin=33, backl_pin=32, miso=19, mosi=23, clk=18, cs=14, dc=27, bgr=True, backl_on=1)

def hello():
    tft.println('Hello world!')

保存以后,来个编译烧写一条龙……

root@debian:~/M5Stack_MicroPython/MicroPython_BUILD/components/micropython/esp32/modules# cd ../../../../
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD# ./BUILD.sh clean
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD# ./BUILD.sh menuconfig
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD# ./BUILD.sh
root@debian:~/M5Stack_MicroPython/MicroPython_BUILD# ./BUILD.sh flash

重新启动后进入REPL,尝试运行如下命令:

>>> import test
>>> test.hello()
>>> test.hello()
>>> test.hello()
>>> test.hello()
>>>

可以看到M5Stack的显示屏上显示出4行 “Hello world!”, 说明test.py文件已经在编译过程中打包到固件中了。

这样,以后可以把自己常用的.py文件直接编译到固件里面,方便调用。
另外一个好处是,可以很好的保护程序的源代码,比起简单的将.py编译 打包为.mpy文件,效果要好多了。
PS. 可以使用mpy-cross工具来打包mpy文件。(在~/M5Stack_MicroPython/MicroPython_BUILD/components/micropython/mpy-cross/

参考资料:
https://www.cnblogs.com/xxosu/p/7389871.html
https://www.cnblogs.com/xxosu/p/8177252.html
https://blog.csdn.net/messidona11/article/details/71707776
http://old.tpyboard.com/support/studyexample14/318.html
http://old.tpyboard.com/support/studyexample14/319.html

你可能感兴趣的:(M5Stack(ESP32)学习笔记(11)—— 把自己的Python代码文件编译到固件里)