Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the simply-static domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /var/www/html/wp-includes/functions.php on line 6121
编译micropython-lvgl

编译micropython-lvgl

屏和esp32引脚接线重新定义:

https://github.com/lvgl/lv_binding_micropython

去除Envo Storefront主题的底部版权信息

今天发现一个wordpress的主题不错,风格超赞,但底部的“自豪地采用wordprss及Envo Storefront”极其刺眼,到网上找了一圈,没有看到去除的方法,于是自己动手,发现这个主题厂家很鬼,将版权信息放在了一个特殊的地方,修改如下:

编译esp32-c3 lv-micropython固件

git clone -b v4.3.1 --recursive https://github.com/espressif/esp-idf.git

$ cd esp-idf
$ git checkout v4.3.1
$ git submodule update --init --recursive

$ cd esp-idf
$ ./install.sh       # (or install.bat on Windows)
$ source export.sh   # (or export.bat on Windows)

$ git clone https://github.com/lvgl/lv_micropython.git
$ cd ~/lv_micropython
$ git submodule update --init
$ cd lib/lv_bindings/
$ git submodule update --init
$ cd ~/lv_micropython/
$ make -C mpy-cross

对于编译过程中缺少的文件,find / -name xxxx,然后拷贝即可,估计是路径设置问题导致

编译esp32-c3 micropython lvgl

https://blog.csdn.net/qq_34440409/article/details/118365689

https://blog.csdn.net/wangyx1234/article/details/108554228

git clone https://github.com/lvgl/lv_micropython.git
cd lv_micropython
git submodule update --init
cd lib/lv_bindings/
git submodule update --init

编译mpy-cross工具:

cd ~/lv_micropython
make -C mpy-cross

编译unix端口的mpy:

make -C ports/unix/

编译好后测试下

./ports/unix/micropython

重新编译mpy:

cd lv_micropython/ports/unix
make clean
make -j

Demo测试

lvgl官方提供的测试例子在这个路径下:lib\lv_bindings\examples

可以用编译出来的micropython解释器去执行该目录下的测试脚本。

举个栗子:

打开/lib/lv_bindings/examples/advanced_demo.py文件,在末尾加入以下代码:

if __name__ == '__main__':
   import time
   while True:
      time.sleep(1)

执行

 ./ports/unix/micropython lib/lv_bindings/examples/advanced_demo.py

编译esp32-c3

make -C mpy-cross
make -C ports/esp32 LV_CFLAGS="-DLV_COLOR_DEPTH=16 -DLV_COLOR_16_SWAP=1" BOARD=GENERIC_SPIRAM deploy

https://github.com/lvgl/lv_micropython/blob/master/ports/esp32/README.md#setting-up-the-toolchain-and-esp-idf

MicroPython端口到ESP32

这是 MicroPython 到乐鑫 ESP32 系列微控制器的端口。它使用ESP-IDF框架,MicroPython在FreeRTOS下作为任务运行。

支持的功能包括:

  • REPL(Python prompt)over UART0。
  • MicroPython任务的16k堆栈和大约100k的Python堆。
  • 启用了MicroPython的许多功能:unicode,任意精度整数,单精度浮点数,复数,冻结字节码以及许多内部模块。
  • 使用闪存的内部文件系统(目前大小为2M)。
  • 机器模块带有GPIO,UART,SPI,软件I2C,ADC,DAC,PWM,触摸板,WDT和定时器。
  • 支持无线局域网 (WiFi) 的网络模块。
  • 通过蓝牙模块支持低功耗蓝牙 (BLE)。

该 ESP32 端口的初始开发部分由 Microbric Pty Ltd 赞助。

设置 ESP-IDF 和构建环境

ESP32 上的 MicroPython 需要乐鑫 IDF 版本 4(物联网开发框架,又名 SDK)。ESP-IDF 包括管理 ESP32 微控制器所需的库和 RTOS,以及管理构建固件所需的构建环境和工具链的方法。

ESP-IDF 变化很快,MicroPython 仅支持某些版本。目前,MicroPython 支持 v4.0.2、v4.1.1 和 v4.2,但其他 IDF v4 版本也可能有效。

要安装 ESP-IDF,可在乐鑫入门指南中找到完整说明。

如果您使用的是 Windows 机器,那么适用于 Linux 的 Windows 子系统是安装 ESP32 工具链和构建项目的最有效方法。如果您使用 WSL,请按照 Linux 说明而不是 Windows 说明进行操作。

乐鑫说明将指导您使用(或)脚本下载工具链并设置环境。要采取的步骤总结如下。install.shinstall.bat

要签出 IDF 的副本,请使用 git 克隆:

$ git clone -b v4.0.2 --recursive https://github.com/espressif/esp-idf.git

您可以替换为 或或任何其他受支持的版本。(您不需要完整的递归克隆;有关更详细的设置命令,请参阅此存储库中的函数。v4.0.2v4.1.1v4.2ci_esp32_setuptools/ci.sh

如果您已经拥有 IDF 的副本,请签出与 MicroPython 兼容的版本,并使用以下命令更新子模块:

$ cd esp-idf
$ git checkout v4.2
$ git submodule update --init --recursive

克隆 IDF 并将其签出为正确版本后,运行以下脚本:install.sh

$ cd esp-idf
$ ./install.sh       # (or install.bat on Windows)
$ source export.sh   # (or export.bat on Windows)

该步骤只需执行一次。您将需要为每个新会话提供源。install.shexport.sh

注意:如果您正在为 ESP32-S2、ESP32-C3 或 ESP32-S3 构建 MicroPython,请确保您使用的是以下必需的 IDF 版本:

  • ESP32-S3 目前需要最新的 ,但最终或更晚可用时需要。masterv4.4
  • ESP32-S2 和 ESP32-C3 需要或更高版本。v4.3.1

构建固件

必须构建MicroPython交叉编译器以将某些内置脚本预编译为字节码。这可以通过以下方式完成(从此存储库的根目录):

$ git clone https://github.com/lvgl/lv_micropython.git
$ cd lv_micropython
$ git submodule update --init
$ cd lib/lv_bindings/
$ git submodule update --init
$ cd ~/lv_micropython
$ make -C mpy-cross

然后为 ESP32 运行构建 MicroPython:

$ cd ports/esp32
$ make submodules
$ make

这将在子目录中生成一个组合映像(此固件映像由以下部分组成:引导加载程序.bin、分区.bin和 micropython.bin)。firmware.binbuild-GENERIC/

要刷新固件,您必须将 ESP32 模块置于引导加载程序模式并连接到 PC 上的串行端口。有关如何执行此操作,请参阅特定 ESP32 模块的文档。您还需要具有用户权限才能访问设备。在 Linux 上,您可以通过将用户添加到组,然后重新启动或注销并再次登录来启用此功能。(注意:在某些发行版上,这可能是组,请运行以检查。/dev/ttyUSB0dialoutuucpls -la /dev/ttyUSB0

$ sudo adduser <username> dialout

如果您是首次将MicroPython安装到您的模块中,或者在安装任何其他固件之后,您应该首先完全擦除闪存:

$ make erase

要将 MicroPython 固件刷新到 ESP32,请使用:

$ make deploy

由上述命令构建的默认 ESP32 开发板是该版本,它应该适用于大多数 ESP32 模块。您可以通过传递给 make 命令来指定不同的电路板,例如:GENERICBOARD=<board>

$ make BOARD=GENERIC_SPIRAM

注意:上述“make”命令是作为 ESP-IDF 一部分的基础构建工具的精简包装器。您可以改为直接使用,例如:idf.pyidf.py

$ idf.py build
$ idf.py -D MICROPY_BOARD=GENERIC_SPIRAM build
$ idf.py flash

在设备上获取 Python 提示

您可以通过串行端口UART0获得提示,UART0与用于对固件进行编程的UART相同。REPL 的波特率为 115200,您可以使用如下命令:

$ picocom -b 115200 /dev/ttyUSB0

$ miniterm.py /dev/ttyUSB0 115200

您还可以使用 .idf.py monitor

配置无线网络和使用开发板

ESP32 端口在模块和面向用户的 API 方面(几乎)等同于 ESP8266。有一些小的区别,特别是 ESP32 在启动时不会自动连接到最后一个接入点。但在大多数情况下,ESP8266 的文档和教程应该适用于 ESP32(至少对于已实现的组件)。

有关快速参考,请参阅 http://docs.micropython.org/en/latest/esp8266/esp8266/quickref.html;有关教程,请参阅 http://docs.micropython.org/en/latest/esp8266/esp8266/tutorial/intro.html

以下功能可用于连接到WiFi接入点(您可以传入自己的SSID和密码,或更改默认值,以便您可以快速呼叫并正常工作):wlan_connect()

def wlan_connect(ssid='MYSSID', password='MYPASS'):
    import network
    wlan = network.WLAN(network.STA_IF)
    if not wlan.active() or not wlan.isconnected():
        wlan.active(True)
        print('connecting to:', ssid)
        wlan.connect(ssid, password)
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())

请注意,某些主板要求您在使用 WiFi 之前配置 WiFi 天线。在像LoPy和WiPy 2.0这样的Pycom板上,你需要执行以下代码来选择内部天线(最好将此行放在 boot.py 文件中):

import machine
antenna = machine.Pin(16, machine.Pin.OUT, value=0)

定义自定义 ESP32 开发板

默认的 ESP-IDF 配置设置由目录中的主板定义提供。对于自定义配置,您可以定义自己的主板目录。通过复制现有配置(如)并对其进行修改以适合您的主板来开始新的主板配置。GENERICboards/GENERICGENERIC

特定于 MicroPython 的配置值在特定于主板的文件中定义,该文件包含在 中。其他设置被放入 ,包括配置 ESP-IDF 设置的文件列表。目录中提供了一些标准文件,如 。您还可以在主板目录中定义自定义。mpconfigboard.hmpconfigport.hmpconfigboard.cmakesdkconfigsdkconfigboards/boards/sdkconfig.ble

有关配置的更多示例,请参阅现有主板定义。

配置故障排除

  • 编程后连续重启:确保主板正确(例如 ESP-WROOM-32 应为 DIO)。然后执行 、重新生成、重新部署。CONFIG_ESPTOOLPY_FLASHMODEmake clean

https://github.com/lvgl/lv_micropython

构建说明
Unix (Linux) 端口
sudo apt-get install build-essential libreadline-dev libffi-dev git pkg-config libsdl2-2.0-0 libsdl2-dev python3.8 parallelPython 3 是必需的,但如果需要,您可以安装其他版本的 python3 而不是 3.8。
git clone https://github.com/lvgl/lv_micropython.git
cd lv_micropython
git submodule update --init --recursive lib/lv_bindings
make -C mpy-cross
make -C ports/unix submodules
make -C ports/unix
./ports/unix/micropython
ESP32 端口
请为 esp-idf 安装目录设置参数。它需要与Micropython预期的esp-idf匹配,否则将显示警告(并且构建可能会失败)有关更多详细信息,请参阅设置工具链和ESP-IDFESPIDF

使用 IL9341 驱动程序时,需要将颜色深度和交换模式设置为与 ILI9341 匹配。这可以从命令行完成。以下是构建 ESP32 + LVGL 的命令,该命令与 ILI9341 驱动程序兼容:

make -C mpy-cross
make -C ports/esp32 LV_CFLAGS="-DLV_COLOR_DEPTH=16 -DLV_COLOR_16_SWAP=1" BOARD=GENERIC_SPIRAM deploy
关于参数的说明:

LV_CFLAGS用于覆盖颜色深度和交换模式,以实现 ILI9341 兼容性。
LV_COLOR_DEPTH=16如果您计划使用 ILI9341 驱动程序,则需要。
LV_COLOR_16_SWAP=1如果您计划使用纯微孔显示驱动程序,则需要。
BOARD- 我使用带有SPIRAM的WROVER板。您可以从目录中选择其他板。ports/esp32/boards/
deploy- make命令将创建Micropython的ESP32端口,并将尝试通过USB-UART桥部署它。
有关更多详细信息,请参阅 Micropython ESP32 自述文件。

JavaScript 端口
请参阅分支的自述文件:https://github.com/lvgl/lv_micropython/tree/lvgl_javascript_v8#javascript-portlvgl_javascript

树莓派皮库端口
此端口使用 C 模块的 Micropython 基础结构,并且必须提供:USER_C_MODULES

cd ports/rp2
make USER_C_MODULES=../../lv_bindings/bindings.cmake

参考

https://blog.csdn.net/qq_36953463/article/details/120378152

更换头文件:

cp /home/peter/micropython-esp32-homekit_ok/components/esp-idf/components/hal/esp32c3/include/hal/gpio_ll.h /home/peter/esp-idf/components/hal/esp32c3/include/hal/gpio_ll.h

gpio_ll下载

https://github.com/espressif/esp-idf/blob/master/components/soc/esp32/include/soc/i2s_reg.h

重要参考:

https://github.com/bupthl/lv_micropython

分类目录电子爱好者

固件

https://forum.lvgl.io/t/building-lv-micropython-for-raspberry-pi-pico-failed/7840/4