前两天在github上下载的MicroPython 版本1.20.0,怎么配置都无法开启片上psrom的支持,折腾了一周,都自我怀疑了,最后更新版本为1.23.0一编译直接就过了。。。下面记录下过的,过程,这边使用的是四线SPI的片上版本
以编译指令为:make BOARD=ESP32_GENERIC_S3 例子
1、去目录下micropython-1.23.0/ports/esp32/boards/ESP32_GENERIC_S3
检查 mpconfigboard.cmake 文件是否包含 boards/sdkconfig.spiram_sx 如果不包含请添加这个配置文件
2、检查 sdkconfig.board 文件 记住CONFIG_ESPTOOLPY_FLASHFREQ_选项的相关速度,psram的总线速度要与其flash一致
3、去目录micropython-1.23.0/ports/esp32/boards下,打开sdkconfig.spiram_sx文件
根据你的芯片对psram进行配置,我这里如下:
CONFIG_SPIRAM_MODE_QUAD=y 四线SPI
CONFIG_SPIRAM_TYPE_AUTO=y psram类型自动判断我这里是2MB的片上psram
CONFIG_SPIRAM_CLK_IO=30 时钟线的gpio号,这里不是芯片引脚号
CONFIG_SPIRAM_CS_IO=26 是能gpio号
CONFIG_SPIRAM_SPEED_80M=y spi速度
CONFIG_SPIRAM=y 打开psram
CONFIG_SPIRAM_BOOT_INIT=y 在启动时就初始化psram
CONFIG_SPIRAM_IGNORE_NOTFOUND=y 如果遇到初始化psram失败停止启动,但是这里好像不生效
CONFIG_SPIRAM_USE_MALLOC=y 直接使用malloc函数就可以申请psram内的空间
4、执行 make clean 然后 make BOARD=ESP32_GENERIC_S3,这里一定clean一下,以前没这一下总是编译失败,编译完后会生成build-ESP32_GENERIC_S3文件夹
5、去micropython-1.23.0/ports/esp32/build-ESP32_GENERIC_S3目录下打开sdkconfig文件,检查我们的配置有没有生效,这个文件夹是espidf的配置文件,一致就是设置OK了,不一致就是设置有冲突,如下:
跟自己的配置一致,那么大概率你就成功了,启动板子查看自己的成果吧。
同理其他的配置你也可以自己配置按照这个流程,我就将自己的cpu频率设置为240Mhz了,在sdkconfig.board文件添加了:
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240=y
CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=240
后面就靠大家看sdkconfig内的所有配置,然后自己举一反三了。
6、然后再说说linux下多个bin合成1个bin。
生成一个159MB的空白bin文件,名称为micropython_end.bin
dd if=/dev/zero of=micropython_end.bin bs=1 count=1590288
将bootloader.bin添加到micropython_end.bin里,位置为0
dd if=./build-ESP32_GENERIC_S3/bootloader/bootloader.bin of=micropython_end.bin bs=1 seek=0 conv=notrunc
将partition-table.bin添加到micropython_end.bin里,位置为32760(0x8000)
dd if=./build-ESP32_GENERIC_S3/partition_table/partition-table.bin of=micropython_end.bin bs=1 seek=32768 conv=notrunc
将micropython.bin添加到micropython_end.bin里,位置为65536(0x10000)
dd if=./build-ESP32_GENERIC_S3/micropython.bin of=micropython_end.bin bs=1 seek=65536 conv=notrunc
这些执行后三个bin就合成到micropython_end.bin了,到时候直接在0地址下载micropython_end.bin到芯片就可以了