首页 > 其他分享 >VS Code+platformio配置ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)工程

VS Code+platformio配置ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)工程

时间:2023-04-26 23:15:36浏览次数:53  
标签:16MB Code FLASH 8MB 开发板 board PSRAM

一、现有问题

platformio现有的板子库里面没有ESP32-S3-N16R8(8MB PSRAM + 16MB FLASH)的开发板模型,直接强行套用,要么就是解锁不了8MB PSRAM,要么就下载后运行不起来。但是Arduino可以正常解锁。

二、简单解决办法

先选用esp32-s3-devkitc-1作为开发板模型,在它的基础上做额外的修改:

具体修改配置已经整理到platformio.ini,如下:

[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
; 指定为16MB的FLASH分区表
board_build.arduino.partitions = default_16MB.csv
; 指定FLASH和PSRAM的运行模式
board_build.arduino.memory_type = qio_opi
; 预定义宏,启用PSRAM
build_flags = -DBOARD_HAS_PSRAM
; 指定FLASH容量为16MB
board_upload.flash_size = 16MB

编译、下载和运行即可。

三、扩展内容:解决问题的过程(问题解决方法看第二点即可)

3.1 选开发板模型

没找到ESP32-S3(8MB PSRAM + 16MB FLASH)的开发板模型,就随便ESP32-S3的其他模型,有几个能正常运行,但是没有解锁PSRAM;

好不容易发现几个标了2MB PSRAM字样的开发板模型,但是运行不起来;网上搜才知道2MB PSRAM运行模式是Quad SPI,而8MB PSRAM的运行模式是Octal SPI,两个完全不一样,肯定会运行失败;

3.2 查找配置

官方的platformio.ini指导说明里面没有说明怎么选PSRAM运行模式,只能看看那些标了2MB PSRAM字样的开发板模型是怎么做;全局搜索跟开发板名称相同的文件,看是不是有什么配置文件来控制这些参数:

打开所在的文件夹,发现全是json文件,大概率就是所有开发板模型的配置文件了。

3.3 修改配置

依次查找带PSRAM的配置json,发现adafruit_feather_esp32s3.json是2MB PSRAM的开发板模型,额外不同的是它多定义了"BOARD_HAS_PSRAM"的宏,直接复制到自己的工程修改platformio.ini,发现依旧不能解锁PSRAM;

接着继续看其他的json配置,发现adafruit_feather_esp32s3_nopsram.json"memory_type": "qio_qspi"选项似乎跟PSRAM有关;

打开Arduino,工具菜单栏里面PSRAM有三项配置,分别是:

尝试修改自己工程对应的json文件,"memory_type": "qio_qspi"改成"memory_type": "qio_opi",8MB PSRAM解锁成功!

最后发现platformio.ini可以直接配置json文件中的某些字段,经过调整,ESP32-S3(8MB PSRAM + 16MB FLASH)只需要选择board = esp32-s3-devkitc-1板子,然后修改board_build.arduino.memory_type = qio_opi,再把FLASH容量改好,基本上就没问题了,如下(和标题二提供的内容一样):

[env:esp32s3]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
; 指定为16MB的FLASH分区表
board_build.arduino.partitions = default_16MB.csv
; 指定FLASH和PSRAM的运行模式
board_build.arduino.memory_type = qio_opi
; 预定义宏,启用PSRAM
build_flags = -DBOARD_HAS_PSRAM
; 指定FLASH容量为16MB
board_upload.flash_size = 16MB

参考文章

[1] ESP32-S3-WROOM-1-N16R8 配置PSRAM

标签:16MB,Code,FLASH,8MB,开发板,board,PSRAM
From: https://www.cnblogs.com/macrored/p/17357581.html

相关文章

  • leetcode-350-两个数组的交集 II 题解
    题目给定两个数组,编写一个函数来计算它们的交集。示例1:输入:nums1=[1,2,2,1],nums2=[2,2]输出:[2,2]示例2:输入:nums1=[4,9,5],nums2=[9,4,9,8,4]输出:[4,9]说明:输出结果中每个元素出现的次数,应与元素在两个数组中出现次数的最小值一致。我们可以不考虑输出结果......
  • 【LeeCode】547. 省份数量--unknow
    【题目描述】有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份 是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 nxn 的矩阵 isConnected ,其中 isC......
  • 【LeeCode】130. 被围绕的区域
    【题目描述】给你一个 mxn 的矩阵 board ,由若干字符 'X' 和 'O' ,找到所有被 'X' 围绕的区域,并将这些区域里所有的 'O' 用 'X' 填充。https://leetcode.cn/problems/surrounded-regions/description/【示例】【代码】leecodepackagecom.company;importjava.util.......
  • 【LeeCode】934. 最短的桥 -- todo
    【题目描述】给你一个大小为 nxn 的二元矩阵 grid ,其中 1 表示陆地,0 表示水域。岛 是由四面相连的 1 形成的一个最大组,即不会与非组内的任何其他 1 相连。grid 中 恰好存在两座岛 。你可以将任意数量的 0 变为 1 ,以使两座岛连接起来,变成 一座岛 。返回必须......
  • 1351. 统计有序矩阵中的负数(leetcode)
    https://leetcode.cn/problems/count-negative-numbers-in-a-sorted-matrix/1351.统计有序矩阵中的负数1.二分法:把每一行进行一遍二分,找到正数与负数的边界,且此时grid[i][mid]也为负数,即边界下标的对应值是负数的左半边界那么一行中的个数即为size()-lclassSolution{pu......
  • 【Node】coderwhy node 项目视频中 jwt.sign 没有返回值的问题
    在写登录接口时,想生成token用于登录验证,但是在使用jwt生成token(jwt.sign())时却没有返回token,服务端没有报错但是使用postman验证接口时却没有得到正确的请求结果。如果你在使用openssl生成的private.key时是和coerwhy老师一样1024的话就会报错解决方法:最好是生成20......
  • #yyds干货盘点# LeetCode程序员面试金典:解数独
    题目:编写一个程序,通过填充空格来解决数独问题。数独的解法需遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 '.' 表示。 示例1......
  • #yyds干货盘点# LeetCode面试题:合并两个有序数组
    1.简述:给你两个按非递减顺序排列的整数数组 nums1和nums2,另有两个整数m和n,分别表示nums1和nums2中的元素数目。请你合并nums2到nums1中,使合并后的数组同样按非递减顺序排列。注意:最终,合并后数组不应由函数返回,而是存储在数组nums1中。为了应对这种情况,nums1......
  • 代码区添加shellcode
    //p44.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include<windows.h>#include<malloc.h>#defineShellCodeIen0x12#defineMessageBoxAdder0x77D507EABYTEShellCode[]={0x6A,00,0x6A,00,0x6A......
  • AtCoder Regular Contest 123 C 1, 2, 3 - Decomposition
    洛谷传送门AtCoder传送门从低位往高位考虑。设当前个位为\(k\),暴力搜索这一位向上进\(i\)位,设\(\left\lfloor\frac{n}{10}\right\rfloor-i\)的答案为\(t\)。若\(t>10i+k\)显然就不可行,因为就算个位全部填\(1\)也不能补齐;否则\(n\)的答案就是\(\max(t,\l......