首先,感谢正点原子和电子工程世界论坛提供的这次机会,让我得以体验这款正点原子ESP32P4开发板,希望能借此好好学习一番。

ESP32-P4已经上市一年多,但MicroPython尚未正式支持它。不过,已经有大神实现了对ESP32-P4的支持,本篇笔记就来分享一下如何为ESP32-P4编译MicroPython固件。
具体可参考:GitHub - favnec5/micropython at favnec5-esp32p4-1
--ESP32-P4 开发板 MicroPython 固件编译方法--
编译环境:VMware+Ubuntu22.04.3
在Ubuntu中运行以下命令,安装编译所需的依赖包:
sudo apt upgradesudo apt upgradesudo apt-get install gitwget libncurses-dev flex bison gperf python3 python3-pip python3-setuptools python3-serial python3-click python3-cryptography python3-future python3-pyparsing python3-pyelftools cmake ninja-build ccache libffi-dev libssl-dev python-is-python3
mkdir-p ~/espcd ~/espgit clone https://github.com/espressif/esp-idf.gitcd esp-idfgit checkout v5.4.1git submodule update --init--recursive./install.shsourceexport.sh
由于网络原因可能会失败,只需反复执行,直到成功为止。
输出以下结果表示搭建成功,将idf.py加入临时环境变量(每次开启新终端都要运行一次source export.sh):

在Ubuntu中顺序执行以下命令,克隆支持ESP32-P4的Micropython分支,并尝试完成一次固件编译:
cd ~/espgit clone -b favnec5-esp32p4-1 https://github.com/favnec5/micropython.gitcd micropythonmake-C mpy-crosscd ports/esp32make submodulesmake BOARD = ESP32_GENERIC_P4
如果顺利的话,就会在micropython/ports/esp32/build-ESP32_GENERIC_P4/中生成一个firmware.bin固件。
默认的下载模式(QIO)不适用于我们的开发板(DIO),需要修改sdkconfig.board文件,打开~/esp/micropython/ports/esp32/boards/ESP32_GENERIC_P4下的sdkconfig.board文件,改为以下代码:

MicroPython对ESP32默认支持48个引脚,而ESP32-P4拥有55个引脚。为了使MicroPython能够支持ESP32-P4的所有引脚,我们需要进行一些修改。
首先,需要修改~/esp/micropython/ports/esp32/boards目录下的make-pins.py文件,将支持的引脚数从默认的49修改为56个:

其次,还需要修改~/esp/micropython/ports/esp32目录下的machine_pin.h文件,以使能对更多引脚的支持:

正点原子ESP32P4开发板配备了一块MIPI-DSI接口的5.5寸LCD显示屏。为了能够正常驱动这块屏幕,我们需要将修改好的DSI驱动添加到固件中。具体操作方法与添加摄像头(camera)驱动的过程类似,具体步骤是:先将修改后的DSI驱动程序克隆到esp文件夹下,然后通过USER_C_MODULES命令将其添加到项目中:
cd ~/espgit clone https://gitee.com/py2012/esp32-p4_-atk_-lcd_-mpy.git
进入esp32文件夹,开始编译固件:
cd ~/esp/micropython/ports/esp32makemakeUSER_C_MODULES=~/esp/esp32-p4_-atk_-lcd_-mpy/micropython.cmake BOARD_VARIANT=ESP32_GENERIC_P4

编译好的固件详见我的gitee或QQ群文件。
编译好的固件详见我的gitee或QQ群文件。
参考《一文掌握ESP32固件烧录(flash)》,大的区别如下:
需要下载最新版 Flash 工具(不低于 3.9.7 版),下载地址为:工具|乐鑫科技 。
在烧录配置方面,SPI MODE应选择DIO,BAUD选择460800:

固件建议采用 3 个 bin 文件(只刷firmware.bin好像有点问题),地址分别为:0x2000(bootloader.bin)、0x8000(partition-table.bin)、0x10000(micropython.bin):

9.点灯测试
常规操作,先点个灯测试一下:
from machine import Pinimport timeled = Pin(51,Pin.OUT)while True:led.value(1)time.sleep(1)led.value(0)time.sleep(1)
