在调试音频、usb等模块时,会发现SDK的根目录下没有/data该目录,导致无法存储所需要的文件

在调试音频、usb等模块时,会发现SDK的根目录下没有/data该目录,导致无法存储所需要的文件,这就是因为/data目录没有配置好的原因。
1、选上配置首先需要选上的配置:
运行mrtos_menuconfig,选上COMPONENT_LITTLEFS
选上littlefs只是支持了这个功能,另外还需要对分区进行配置。
2、确认分区表通过命令cconfigs,跳转到方案配置目录,找到文件sys_partition.fex
这里需要注意,目录下可能会有多个分区文件,带着不同后缀的,比如说nor,xip等等的,因此需要确认用的是哪一个分区表,以免修改不生效
在方案已经编译完成之后,运行
命令对方案进行打包,通过打包时打印出来的log信息,可以提取到用的是哪一个分区表,如下:
如图片,可以确认到打包示例中调用的分区表。
3、修改分区表在分区表中加入以下配置代码:
通过上述的代码,在打包固件调用的pack_img.sh脚本中,通过函数
会创建对应的分区。
4、挂载目录分区已经建好的话,剩下就是通过littlefs将区分挂载到目录下了。
在方案的main.c函数中(这里只是举个例子,在系统启动时挂载目录即可,但是需要注意要在flash初始化完成之后才能挂载)
在main.c中,添加以下代码:
/dev/UDISK就是分区名字,由分区表产生的。
/data则是创建目录的名字及路径。
通过以上步骤,即可为方案新建一个/data目录,可以用于保存一些程序所需要用到的文件。
5、保存文件到data目录下1.在SDK编译环境中存放文件
可以在编译时,所需要的文件放到UDISK分区。
存放文件到UDISK分区方法为:
直接将文件拷贝到编译环境对应的路径下:
在SDK打包时就会将UDISK目录下的文件全部打包生成udisk的镜像,最终打包到image里。
在烧录时,就会udisk的镜像烧录到对应的分区里。系统启动,挂载分区之后,就直接可以通过/data目录访问到对应的文件了。
2.通过代码读写文件
FreeRTOS SDK中,通过fopen fwrite fread等POSIX接口,即可操作UDISK分区(/data目录)的文件。
以下做个示例:
str: 路径名,若为/data目录的话,比如说写入一个a.txt,str可以定义为 /data/a.txt
start:所需要写入的数据起始地址
length:所需要写的数据的长度。
回复
有奖活动 | |
---|---|
【EEPW电子工程师创研计划】技术变现通道已开启~ | |
发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
【EEPW在线】E起听工程师的声音! | |
“我踩过的那些坑”主题活动——第001期 | |
高校联络员开始招募啦!有惊喜!! | |
【工程师专属福利】每天30秒,积分轻松拿!EEPW宠粉打卡计划启动! | |
送您一块开发板,2025年“我要开发板活动”又开始了! | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
电流检测模块MAX4080S被打赏10分 | |
【我踩过的那些坑】calloc和malloc错误使用导致跑飞问题排查被打赏50分 | |
多组DCTODC电源方案被打赏50分 | |
【我踩过的那些坑】STM32cubeMX软件的使用过程中的“坑”被打赏50分 | |
新手必看!C语言精华知识:表驱动法被打赏50分 | |
【我踩过的那些坑】杜绑线问题被打赏50分 | |
【我踩过的那些坑】STM32的硬件通讯调试过程的“坑”被打赏50分 | |
【我踩过的那些坑】晶振使用的问题被打赏100分 | |
【我踩过的那些坑】电感选型错误导致的处理器连接不上被打赏50分 | |
【我踩过的那些坑】工作那些年踩过的记忆深刻的坑被打赏10分 |