【屏驱MCU】实现文件路径的的挂载

news2025/1/11 16:41:34

说明:本文涉及到一些底层的 .py 编译脚本以及编辑原理,笔者也不是完全明白,本文的主要目的是介绍一下流程,供小白使用。

接上文:【屏驱MCU】RT-Thread 文件系统接口解析

屏驱MCU系列文章

【屏显MCU】多媒体接口总结(一)

【DVP接口】0v5640的DVP接口设计分析(硬件)

【DVP接口】0v5640的DVP接口设计分析(软件)

【屏驱MCU】RT-Thread文件系统接口解析

【RT-Thread】串口接收数据并找出一帧完整的报文

【屏驱MCU】实现文件路径的的挂载

  • 0. 个人简介 && 授权须知
  • 1. 从编译的提示信息开始
    • 1.1 将【设置路径下的文件】编译生成 rodata.fatfs
    • 1.2 生成 pbp_cfg.bin
    • 1.3 生成 Image header
    • 1.4 合并生成 img 镜像文件
  • 2. 关于 makefatfs.py
    • 2.1 工作流程
    • 2.2 参数解析
    • 2.3 使用案例
  • 3. flash 分区中

0. 个人简介 && 授权须知

image-20230911133730620

📋 个人简介

  • 💖 作者简介:大家好,我是喜欢记录零碎知识点的菜鸟打工人。😎
  • 📝 个人主页:欢迎访问我的博客主页🔥
  • 🎉 支持我:点赞👍+收藏⭐️+留言📝
  • 📣 系列专栏:嵌入式开发专栏 🍁 🍁
  • 💬格言:写文档啊不是写文章,重要的还是直白!🔥

转载文章,禁止声明原创;不允许直接二次转载,转载请根据原文链接联系作者

若无需改版,在文首清楚标注作者及来源/原文链接,并删除【原创声明】,即可直接转载。
但对于未注明转载来源/原文链接的文章,我将保留追述的权利。

作者:积跬步、至千里

image-20230911133724204

比如,我想把某个路径下的【文件】,挂载到文件系统中
选择数据的路径为 xxxxxxxxxxxx
挂载的文件系统为 fatfs
在这里插入图片描述

1. 从编译的提示信息开始

在这里插入图片描述

1.1 将【设置路径下的文件】编译生成 rodata.fatfs

调用 makefatfs.py 文件,利用 tools/scripts/文件夹下的脚本工具,
inputdir ,也就是你在 menuconfig 中设置的工程文件夹路径中的文件,
编译输出为 rodata.fatfs文件,输出路径为outfile

更通俗的,将 gui_guider_demo/lvgl_src 路径下的所有文件添加到编译中,生成 rodata.fatfs

python3 F:\luban-lite\tools/scripts/makefatfs.py
--auto --cluster 8 --sector 512
--tooldir F:\luban-lite\tools/scripts/
--inputdir F:\luban-lite/packages/artinchip/lvgl-ui/aic_demo/gui_demo/lvgl_src
--outfile F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/rodata.fatfs

1.2 生成 pbp_cfg.bin

调用 mk_private_resource.exe ,结合两个 .json 文件中的配置信息,生成 pbp_cfg.bin 文件

F:\luban-lite\tools/scripts/mk_private_resource.exe -v -l

F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/pbp_cfg.json,

F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/partition.json

-o F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/pbp_cfg.bin

1.3 生成 Image header

psram
python3 F:\luban-lite\tools/scripts/elf_parse.py
output\d13x_kunlunpi88-nor_rt-thread_helloworld\images\d13x.elf
F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/
riscv64-unknown-elf-
F:\luban-lite\tools/scripts/mk_image.exe -v -c
F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/image_cfg.json
-d F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/
Creating F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/d13x_os.itb ...
Creating F:\luban-lite\output/d13x_kunlunpi88-nor_rt-thread_helloworld/images/bootloader.aic ...
Image header is generated.

1.4 合并生成 img 镜像文件

在这里插入图片描述

2. 关于 makefatfs.py

2.1 工作流程

makefatfs.py 是一个用于创建 FAT 文件系统的 Python 脚本。它可以将指定的路径内容编译成 Bin 文件。

脚本主要工作流程:

  1. 分析指定路径。读取和分析指定的路径,获取其中的文件和文件夹信息。
  2. 构建文件系统结构。根据获取到的文件和文件夹信息,在内存中构建 FAT 文件系统的结构,包括目录项、文件分配表等。
  3. 写入 Bin 文件。将构建好的文件系统结构按照特定的格式和规则,逐字节地写入到生成的 Bin 文件中。

2.2 参数解析

--auto --cluster 8 --sector 512 参数解释如下:

  1. --auto 表示是自动计算文件的大小
  2. --cluster 8 表示簇大小为8字节
  3. --sector 512 表示,存储时,扇区的大小为 512 字节

2.3 使用案例

以下是一些 makefatfs.py 参数调整的实际案例:

案例一:为小型嵌入式设备创建紧凑的文件系统

需求:在一个资源有限的嵌入式设备中,只需要存储少量的配置文件和小的日志文件,要求尽可能节省存储空间。

参数调整:

  • --size 2048000 (设置分区大小为 2MB)
  • --cluster-size 512 (使用较小的簇大小)

案例二:为多媒体存储创建大容量高性能文件系统

需求:用于存储大量的图片、音频和视频文件,需要较高的读写性能。
参数调整:

  • --size 1024000000 (设置分区大小为 1GB)
  • --cluster-size 4096 (较大的簇大小适合大文件存储)

3. flash 分区中

在这里插入图片描述

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

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

相关文章

【Python学习-UI界面】PyQt5 小部件6- QComboBox

样式如下: 一个 QComboBox 对象呈现一个下拉列表供选择。它在表单上占用的屏幕空间最小,仅显示当前选定项。 可以将组合框设置为可编辑;还可以存储像素映射对象。 常用方法如下: 序号方法描述1addItem将字符串添加到集合中2addItems在列…

第十一章、 Java常用类

第十一章、 Java常用类 11.1 包装类 11.1.1 包装类的分类 针对八种基本数据类型相应的引用类型-包装类有了类的特点,就可以调用类中的方法。 11.1.2 包装类和基本数据的转换 Jdk5前的手动装箱和拆箱方式,装箱:基本类型->包装类型&am…

Mysql——对数据基本操作(增删查改)——操纵语言(DML)

之前的创建数据库和创建表,类型、约束都是用的DDL【data definition language】 数据定义语言,用来维护存储数据的结构 代表指令: create, drop, alter 那么现在我们来学习数据操纵语言 DML【data manipulation language】 数据操纵语言,用来…

现网/生产/一线问题记录

为信息安全考虑,涉及到公司保密信息的,用某来代替 文章目录 问题现象定位过程查看节点日志分析重启原因发现kafka消息积压分析dump追踪代码 定位结论经验总结,编码教训 问题现象 凌晨升级微服务,维护通知升级后某微服务频繁重启…

【Python开发】Python环境安装(Python3.8.0)与VS Code配置相应环境

一、安装Python环境 Python3.8.0下载连接 下载好后同意用户协议并点击安装 等待安装 安装完成 二、检查Python环境 按住键盘上的【Win】键【R】键,并在弹出窗口输入cmd 在弹出界面输入“Python”后,按下键盘回车键 若提示如下则Python环境安装成功 三、…

深入理解 iOS 中的 AutoLayout(一)

目录 1.前言 一、AutoLayout 基本概念 1.AutoLayout的概念 1.外部的变化 2.内部的变化 3.AutoLayout和基于frame的布局 2.不使用约束进行自动布局 1.xib使用UIStackView 2.纯代码方式设置UIStackView 3.AutoLayout中的约束 1.Auto Layout中的属性 1.边距约束 2.宽…

软件架构设计师-UML知识导图

软件架构设计师-UML知识导图,包含如下内容: 结构化设计,包含结构化设计的概念、结构化设计的主要内容、概要设计、详细设计及模块设计原则;UML是什么:介绍UML是什么;UML的结构:构造块、公共机制…

【SpringCloud】RabbitMQ——五种方式实现发送和接收消息

SpringAMQP SpringAMQP是基于RabbitMQ封装的一套模板,并且还利用SpringBoot对其实现了自动装配。 SpringAmqp的官方地址:https://spring.io/projects/spring-amqp SpringAMQP提供了三个功能: 自动声明队列、交换机及其绑定关系基于注解的…

Docker基本语法

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、更新yum镜像仓库(一)查看本地yum镜像源地址(二)设置docker的镜像仓库(1)安装必要工具…

安卓相关环境配置

安卓相关环境配置 偶尔更新。。。 JEB(动态调试好用) JEB动态调试Smali-真机/模拟器(详细,新手必看) 夜步城 JADX官网(静态分析) https://github.com/skylot/jadx/releases/tag/v1.5.0 雷…

Upload-Lab第3关:如何巧妙应对黑名单文件后缀检测?

关卡介绍 在Pass03中,我们面临的挑战是绕过文件上传功能的黑名单检测机制。黑名单检测是一种常见的安全措施,它通过检查上传文件的后缀来阻止特定类型的文件(如 .php, .exe)被上传。在这一关,我们需要找到一种方法,上传一个可以执行的恶意文件,同时绕过黑名单检测。 …

Vue3学习 Day01

创建第一个vue项目 1.安装node.js cmd输入node查看是否安装成功 2.vscode开启一个终端,配置淘宝镜像 # 修改为淘宝镜像源 npm config set registry https://registry.npmmirror.com 3.下载依赖,启动项目 访问5173端口 第一个Vue项目的目录结构 我们先打…

C++ | Leetcode C++题解之第336题回文对

题目&#xff1a; 题解&#xff1a; //字典树节点 class TrieNode { private:bool isEnd;//单词结束标记int index;//单词序号vector<TrieNode*> children;//子节点 public://构造TrieNode():index(-1),isEnd(false),children(26,nullptr){}//析构~TrieNode(){for(int i…

php连接sphinx的长连接事宜以及sphinx的排除查询以及关于sphinx里使用SetSelect进行复杂的条件过滤或复杂查询

一、php连接sphinx的长连接事宜以及sphinx的排除查询 在使用php连接sphinx时&#xff0c;默认的sphinx连接非长连接&#xff0c;于是在想php连接sphinx能否进行一些优化 publish:January 9, 2018 -Tuesday: 方法&#xff1a;public bool SphinxClient::open ( void ) — 建立到…

24/8/15算法笔记 复习_决策回归树

from sklearn.tree import DecisionTreeRegressor from sklearn import tree import numpy as np import matplotlib.pyplot as plt#创建数据 X_train np.linspace(0,2*np.pi,40).reshape(-1,1)#训练数据就是符合要求的二维数据 #二维&#xff1a;[[样本一].[样本二]&#xff…

Elasticsearch、Easy-es 快速入门 SearchAfterPage分页 若依前后端分离 Ruoyi-Vue SpringBoot

一、环境安装 Elasticsearch ik分词器 1.1 下载解压Elasticsearch-7.x版本&#xff0c;越高越好&#xff0c;低版本有Log4j漏洞&#xff0c;Easy-es目前支持7.x 1.2 IK中文分词器 将对应Elasticsearch版本IK放进文件夹&#xff0c;Elasticsearch-7.6.1&#xff0c;ik对应版…

GPT-SoVITS

文章目录 model archS1 ModelS2 model model arch S1 model: AR model–ssl tokensS2 model: VITS&#xff0c;ssl 已经是mel 长度线性相关&#xff0c;MRTE(ssl_codes_embs, text, global_mel_emb)模块&#xff0c;将文本加强相关&#xff0c;学到一个参考结果 S1 Model cla…

Lora 全文翻译

作者&#xff1a; 地点&#xff1a;hby 来源&#xff1a;https://arxiv.org/pdf/2106.09685 工具&#xff1a;文心 LORA: LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS 摘要 自然语言处理的一个重要范式包括在通用领域数据上进行大规模预训练&#xff0c;并适应特定任务或…

Qt自定义控件:关于大佬“飞扬青云“的自定义UI控件的使用教程(MinGw,MSVC)

前言 最近在搞自定义控件&#xff0c;无意间发现大佬飞扬青云的开源项目&#xff0c;Qt/C编写超精美自定义控件 这里先贴出大佬项目地址和博客 码云&#xff1a;wwlzq5/qucsdk (gitee.com)&#xff08;旧版下载地址Qt4.7到Qt5.14&#xff09; github&#xff1a;https://git…

攻克面试:高频面试题与常见算法深度剖析

干货分享&#xff0c;感谢您的阅读&#xff01; &#xff08;暂存篇---后续会删除&#xff0c;完整版和持续更新见高频面试题基本总结回顾&#xff08;含笔试高频算法整理&#xff09;&#xff09; 备注&#xff1a;引用请标注出处&#xff0c;同时存在的问题请在相关博客留言…