个人学习笔记,仅做参考,能力有限,如有错误请不吝赐教
去年的时候,在B站看到了大佬稚晖君的视频,瞬间变成小迷弟,奢望以后能有稚晖君百分之一的成就
(感觉没啥希望)
新的一年准备做人生第一个开源项目(鸡汤闹钟)
因为是刚接触esp32,很多东西不懂,每次遇到问题的时候记录一下,争取养成写博客的习惯
idf+vscode+wsl
WROOM-32D
官方文档
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/get-started/get-started-devkitc.html
拷贝 esp-idf\examples\storage\ext_flash_fatfs工程到任意一个位置,当然你硬要在原来工程上修改我也拦不住你
终端执行idf.py menuconfig,第一次执行可能会报错,在执行一次就可以了
idf.py menuconfig
选择serial flasher config
官方默认的是2MB,如果你的也是2MB就不用修改了
修改为对应硬件大小,退出时会有提示按Y保存
从官方例程esp-idf\examples\system\console下面找到partitions_example.csv并刚才复制到工程文件夹下
修改分区大小,自己需要多少就给多少,注意总和不能超过flash大小,偏移地址可以不填,系统会自动计算
终端执行idf.py menuconfig,选择partition table
选择第一项
选择最后一项
选择后会回到上个界面,选择第二项,修改名字,修改完按回车确认
退出并保存
生成二进制分区表
idf.py partition_table
成功截图
分区表官方参考资料
https://docs.espressif.com/projects/esp-idf/zh_CN/latest/esp32/api-guides/partition-tables.html
1.取消外部flash初始化
2.添加文件系统初始化(初始化函数是从官方例程esp-idf\examples\system\console拷贝的)
#define MOUNT_PATH "/extflash"
static void initialize_filesystem(void)
{
static wl_handle_t wl_handle;
const esp_vfs_fat_mount_config_t mount_config = {
.max_files = 4,
.format_if_mount_failed = true};
esp_err_t err = esp_vfs_fat_spiflash_mount(MOUNT_PATH, "storage", &mount_config, &wl_handle);
if (err != ESP_OK)
{
ESP_LOGE(TAG, "Failed to mount FATFS (%s)", esp_err_to_name(err));
return;
}
}
过程只为快速演示效果,工程不规范的地方请自行修改
过程只为快速演示效果,工程不规范的地方请自行修改
过程只为快速演示效果,工程不规范的地方请自行修改
3.调用初始化
成功截图
(题外话:一说心里历程就想起了当初大学的时候,十几个窝在一个宿舍里面玩狼人杀,悍跳预言家的时候老是讲验人的心路历程)
搜了一圈网上没有相关资料(2021,1,4),不知道是我姿势不对还是压根就没有
不要问我为什么不自己写,问就是因为菜
既然面向百度失败,我就去官方历程里面找,然后就找到了ext_flash_fatfs历程
这就非常棒,我感觉这就是我苦苦寻找的她,一行源码我都不可能看,但凡看一眼都是对她的不信任
我编译下载一顿操作,满怀期待的等待着她即将给我的惊喜,结果狠狠给了我一个大嘴巴子,事实证明我在想屁吃
被迫无奈,看了看readme在瞅瞅源码,好把他的外部是指模组外
问题不大,把外部改成内部就可以了,接着就是看官方文档
看着看着就悟了,,彻底悟了,大彻大悟,先这样,再那样就可以了,很简单
第一步是先搞一个分区表,官方文档我看懂了,明白了,但是我不知道表咋弄,路径咋写
但是重点我抓住了,就是csv,我直接在例程里面找,果不其然被我找到了console例程
感觉这就是另一个她阿,文件系统初始化也有了
写不会写,抄我还不会吗,cv工程师上线
加一下初始化函数,改一下挂载地址,perfect