如何给R128在FreeRTOS下配置/data目录

news2024/10/6 22:22:34

在调试音频、usb等模块时,会发现SDK的根目录下没有/data该目录,导致无法存储所需要的文件,这就是因为/data目录没有配置好的原因。

1、选上配置

首先需要选上的配置:
运行mrtos_menuconfig,选上COMPONENT_LITTLEFS

-> System components
    -> thirdparty components
        [*] LittleFS Filesystem

选上littlefs只是支持了这个功能,另外还需要对分区进行配置。

2、确认分区表

通过命令cconfigs,跳转到方案配置目录,找到文件sys_partition.fex

这里需要注意,目录下可能会有多个分区文件,带着不同后缀的,比如说nor,xip等等的,因此需要确认用的是哪一个分区表,以免修改不生效

在方案已经编译完成之后,运行

pack

命令对方案进行打包,通过打包时打印出来的log信息,可以提取到用的是哪一个分区表,如下:

在这里插入图片描述

如图片,可以确认到打包示例中调用的分区表。

3、修改分区表

在分区表中加入以下配置代码:

[partition]
    name         = UDISK
    downloadfile = "data_udisk.fex"
    user_type    = 0x8100

通过上述的代码,在打包固件调用的pack_img.sh脚本中,通过函数

function make_data_image()

会创建对应的分区。

4、挂载目录

分区已经建好的话,剩下就是通过littlefs将区分挂载到目录下了。

在方案的main.c函数中(这里只是举个例子,在系统启动时挂载目录即可,但是需要注意要在flash初始化完成之后才能挂载)

在main.c中,添加以下代码:

littlefs_mount("/dev/UDISK", "/data", true);

/dev/UDISK就是分区名字,由分区表产生的。
/data则是创建目录的名字及路径。

通过以上步骤,即可为方案新建一个/data目录,可以用于保存一些程序所需要用到的文件。

5、保存文件到data目录下

1.在SDK编译环境中存放文件
可以在编译时,所需要的文件放到UDISK分区。

存放文件到UDISK分区方法为:

直接将文件拷贝到编译环境对应的路径下:

{root_dir}/board/芯片名/方案名/data/UDISK

在SDK打包时就会将UDISK目录下的文件全部打包生成udisk的镜像,最终打包到image里。

在烧录时,就会udisk的镜像烧录到对应的分区里。系统启动,挂载分区之后,就直接可以通过/data目录访问到对应的文件了。

2.通过代码读写文件
FreeRTOS SDK中,通过fopen fwrite fread等POSIX接口,即可操作UDISK分区(/data目录)的文件。

以下做个示例:

static int save_to_file(void *str, void *start, int length)
{
        FILE *fp = NULL;

        fp = fopen(str, "wb+"); //save more frames
        if (!fp) {
                printf(" Open %s error\n", (char *)str);

                return -1;
        }

        if (fwrite(start, length, 1, fp)) {
                fclose(fp);

                return 0;
        } else {
                printf(" Write file fail (%s)\n", strerror(errno));
                fclose(fp);

                return -1;
        }

        return 0;
}
  • str: 路径名,若为/data目录的话,比如说写入一个a.txt,str可以定义为 /data/a.txt
  • start:所需要写入的数据起始地址
  • length:所需要写的数据的长度。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1124122.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IDC报告:腾讯云领跑工业云市场,装备制造领域位列行业第一

10月23日,全球领先的IT市场研究和咨询公司IDC发布了《中国工业云IaaSPaaS市场份额,2022:分化初现》报告,腾讯云凭借领先的技术优势和助力实体经济数字化转型成果,成为头部厂商中增速最快的云计算厂商。在装备制造领域&…

服务器数据恢复-raid0硬盘故障导致服务器崩溃的数据恢复案例

服务器故障&分析: 某公司一台服务器,共2块磁盘组建了一组raid0磁盘阵列。RAID0阵列中有1块硬盘出现故障离线,导致服务器崩溃。 通过和用户方的沟通,北亚企安数据恢复工程师初步判断:故障服务器中出现故障离线的硬盘…

为什么学完了 C#觉得自己什么都干不了?

为什么学完了 C#觉得自己什么都干不了? 俺一向的观点:(1)学跟干是两码事。学,你要往外掏钱或时间或两个都得掏。干,是你从别人兜里掏钱。(2)如果没有干的需求,那么可以啥…

软件外包开发迭代管理工具

软件迭代的管理工具有助于团队有效地规划、跟踪和管理迭代开发过程,确保项目按时交付,并与团队成员之间进行协作。以下是一些常用的软件迭代管理工具,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司&#…

【触想智能】工控一体机与5G物联网技术结合是未来发展趋势

工控一体机也叫工业电脑一体机,是工业应用非常重要的一种产品。目前,工控一体机在工业领域的应用已经非常普及,在繁忙的生产车间、数字化机床、自助服务终端设备等场景中,我们都有看到它的身影。 工控一体机应用的普及已经潜移默化…

Java程序设计2023-第四次上机练习

8-1三子棋 编写程序,实现简单的三子棋游戏。在三子棋中,双方在33的棋盘中轮流下棋,一方用*示,另一方用O表示。如果一方的3个棋子占据了同一行,同一列或者对角线,则该方获胜。如果棋盘已被棋子占满&#xf…

LLM实战(二)| 使用ChatGPT API提取文本topic

在大模型前时代,构建机器学习模型通常需要标注数据,然后使用这些标注数据来训练机器学习模型,这个过程一般需要几个月的时间,然而,在大模型时代下,几个小时就可以完成,比如情感分类,…

Windows环境如何使用Zblog+cpoalr搭建个人网站并远程访问?

文章目录 1. 前言2. Z-blog网站搭建2.1 XAMPP环境设置2.2 Z-blog安装2.3 Z-blog网页测试2.4 Cpolar安装和注册 3. 本地网页发布3.1. Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 1. 前言 想要成为一个合格的技术宅或程序员,自己搭建网站制作网页是绕…

sql server 生成连续日期和数字

在sqlserver里,可以利用系统表master..spt_values里面存储的连续数字0到2047,结合dateadd()函数生成连续的日期 select convert (varchar(10),dateadd(d, number, getdate()),23) as workday from master..spt_values where type…

深入篇【Linux】学习必备:进程环境变量/进程切换

深入篇【Linux】学习必备:进程环境变量/进程切换 Ⅰ.环境变量Ⅱ.深层意义Ⅲ.全局属性Ⅳ.进程切换 Ⅰ.环境变量 1.环境变量是什么?:环境变量是系统提供的一组name/value形式的变量,不同的环境变量有不同的用户。 一般是用来指定操作…

【QT开发笔记-基础篇】| 第四章 事件QEvent | 4.9 右键菜单事件

本节对应的视频讲解:B_站_链_接 【QT开发笔记-基础篇】 第4章 事件 4.9 右键菜单事件 本章要实现的整体效果如下: QEvent::ContextMenu ​ 在窗口/控件上点击鼠标右键时,触发该事件,它对应的子类是 QContextMenuEvent 首先&…

无人值守变电站运维技术模式及应用-安科瑞黄安南

近年来,市场电子资源需求量的逐步上升,使变电系统建设逐步向复杂环境拓展。为保障变电系统运行稳定性及人员管理安全性,无人值班变电站技术运用势在必行,是解决复杂条件下变电设备运行不稳定及人员设备管理效益低下问题的重要核心…

打工人神器(随时会删,抓紧看)

今天是一期打工人神器,相信大家在工作上多多少少都遇到过一些这样的难题,比如找不到素材?写不出文案?等等之类,如果你遇到过以上这些情况,那么今天的干货分享一定要看完! 一、犀牛视频下载器 视…

k8s-----10、Controller-Deployment

Controller-Deployment 1、什么是controller2、 pod和controller关系3、Deployment控制器应用场景3.1 部署时yaml文件书写3.2 实际部署应用3.3 升级回滚3.3.1 升级3.3.2 回滚 3.4 弹性伸缩 1、什么是controller 在集群上管理和运行容器的对象 2、 pod和controller关系 pod是…

怎么用一个二维码展示多个内容?二维码汇总一个的方法

怎么将多个二维码内容组合到一个二维码中呢?最近有些小伙伴在问,在让别人扫码展示内容时,如何将其他二维码内容做成列表的形式,被浏览信息的人选择点击跳转到其他二维码展示对应的内容。比如制作旅游景点攻略,点击对应…

Python基础教程:列表(List)的常用操作

嗨喽~大家好呀,这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 列表是Python中最基本的数据结构,列表是最常用的Python数据类型,列表的数据项不需要具有相同的类型。 列表中的每个元素都分配一个数字 -…

java--赋值运算符

1.基本赋值运算符 1.1.就是“”,从右边往左看。 2.扩展赋值运算符 注意:扩展的赋值运算符隐含了强制类型转换。 byte x 10; byte y 20; x x y ;//这样写会报错 x y;/*这样不会报错,原因是java默认的都是int形式的 ,然后上面…

HIMA F3236 Z7138 Z7116全面的边缘人工智能解决方案

HIMA F3236 Z7138 Z7116全面的边缘人工智能解决方案 这一联合、完整的edge AI解决方案将结合Variscite的i.MX 8平台和Hailo的迷你PCIe AI模块,使企业能够更高效、更可持续地运行基于全面深度学习(DL)的应用,同时大幅降低成本。 Variscite的DART-MX8M-…

MAC地址修改工具 WiFiSpoof 简体中文

WiFiSpoof的功能优势主要在于其能够伪装和修改设备的MAC地址,以及支持随机生成MAC地址。这使得用户可以在连接Wi-Fi网络时隐藏自己的真实设备身份,增加网络安全性和隐私保护。同时,该功能还具有简单易用、兼容性强等特点,适用于多…

2023新版软件测试八股文及答案解析

前言 前面看到了一些面试题,总感觉会用得到,但是看一遍又记不住,所以我把面试题都整合在一起,都是来自各路大佬的分享,为了方便以后自己需要的时候刷一刷,不用再到处找题,今天把自己整理的这些…