这才是优美的文件系统挂载方式,亲测有效

FlashDB数据库+Norflash移植和使用 前言 FlashDBFlashDB是一款超轻量级的嵌入式数据库,专注于提供嵌入式产品的数据存储方案。与传统的基于文件系统的数据库不同,FlashDB结合了 Flash 的特性,具有较强的性能及可靠性。并在保证极低的资源占用前提下,尽可能延长 Flash 使用寿命。 阅读详情

本文由RT-Thread论坛用户@mumumu原创发布:https://club.rt-thread.org/ask/article/573ddf0ba553a87c.html

按照手册与其它例子来挂载文件系统感觉不是很优美,研究了一下装载表的方式
在这里插入图片描述

然后在你的代码里(不限定具体文件,只要参与编译即可)加入以下代码:

//必要的头文件
#include <fal.h>
#include <dfs_fs.h>
#include <dfs_romfs.h>
#include <dfs_ramfs.h>
#include <dfs_posix.h>

rt_uint8_t rampool[1024];
#define FAL_PART_NAME "filesystem" //在fal_cfg.h中FAL_PART_TABLE定义
//ROMFS需要创建的目录,创建的目录位于/目录下给其它文件系统挂载
const struct romfs_dirent _root_dirent[] =
{
    {ROMFS_DIRENT_DIR, "ram", 0, 0},
    {ROMFS_DIRENT_DIR, "flash", 0, 0},
};
//自动挂载表
const struct dfs_mount_tbl mount_table[] =
{
    {RT_NULL, "/", "rom", 0, &(romfs_root)},//必须先创建rom文件系统,以提供后面的挂载目录
    {RT_NULL, "/ram", "ram", 0, (const void*)rampool},
    {FAL_PART_NAME, "/flash", "lfs", 0, 0},
    {0}
};
void norflash_init()
{
    fal_init();
    /* Create a block device on the file system partition of spi flash*/
    struct rt_device *flash_dev = fal_mtd_nor_device_create(FAL_PART_NAME);

}
//上电自动初始化norflash创建,保证在norflash挂载前创建设备,其它需要前期初始化的也可放入此函数
INIT_COMPONENT_EXPORT(norflash_init);

以下是执行结果:

 \ | /
- RT -     Thread Operating System
 / | \     4.0.5 build Jun 23 2022 16:33:28
 2006 - 2021 Copyright by rt-thread team
lwIP-2.1.2 initialized!
[4] I/sal.skt: Socket Abstraction Layer initialize success.
[D/FAL] (fal_flash_init:47) Flash device |                norflash0 | addr:
0x80000000 | len: 0x01000000 | blk_size: 0x00001000 |initialized finish.
                                                                     m
[I/FAL] | name       | flash_dev |   offset   |    length  |
                                                                     m
[I/FAL] | app        | norflash0 | 0x00000000 | 0x00400000 |
[I/FAL] | easyflash  | norflash0 | 0x00400000 | 0x00300000 |
[I/FAL] | download   | norflash0 | 0x00700000 | 0x00500000 |
[I/FAL] | filesystem | norflash0 | 0x00c00000 | 0x00400000 |
                                                                     m
                                                                      0m
[I/FAL] The FAL MTD NOR device (filesystem) created successfully
Not find the device(winUSB).Not find the device(i2c1).msh />[2098] I/NO_TAG
: PHY Status: Link up
[2098] I/NO_TAG: PHY Speed: 100Mbps
[2098] I/NO_TAG: PHY Duplex: full duplex


msh />mount
filesystem  device  mountpoint
----------  ------  ----------
devfs       (NULL)  /dev
rom         (NULL)  /
ram         (NULL)  /ram
lfs         filesy  /flash
msh />cd flash
msh /flash>ls
Directory /flash:
hello               <DIR>
msh /flash>mkdir hs
msh /flash>ls
Directory /flash:
hello               <DIR>
hs                  <DIR>

当然了必要的硬件与驱动需要打开,这里不再赘述。
需要加新的文件系统只用修改这个表即可,需要提前初始化的加到norflash_init()里面即可。

flash挂载到系统 spi_Linux mtd子系统专栏分析之一概述 从今天开始,我们进行linux mtd子系统的分析。mtd子系统即为内存技术设备子系统,主要包括nor flash、nand flash等闪存设备相关的子系统模块,而针对sd、tf等存储设备,则主要由mmc子系统模块进行管理并创建对应的块设备。而针对mtd子系统,则会基于mtd原始设备,创建mtd字符设备与mtd块设备,从而在上层与vfs系统进行关联。针对mtd子系统,主要涉及如下几个方面的介绍... 阅读详情

相关推荐

【RTT】SPI Flash 与文件系统(2):FAL

   参考文档(国内):FAL 参考文档    一、概述   FAL (Flash Abstraction Layer) ,即 Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API。   对于 FAL 的依赖来说,对 RT-Thread 无依赖,也可用于裸机。但是,测试命令功能需要依赖 RT-Thread FinSH/MSH。    二、FAL 的使用   对于 FAL 的使用,详细介绍可以查看上面的参考手册,这里只是做一

h451884098的博客 1586

FAL:Flash 抽象层的使用

FAL (Flash Abstraction Layer) Flash 抽象层,是对 Flash 及基于 Flash 的分区进行管理、操作的抽象层,对上层统一了 Flash 及 分区操作的 API

郁金香 1522

解决Jellyfin中文显示方框问题:Ubuntu 22.04字体配置与网络存储挂载技巧

本文针对Ubuntu 22.04上Jellyfin媒体服务器出现的中文显示方框问题,提供了从根源分析到完整解决方案的详细指南。核心在于系统级中文字体配置与网络存储的正确挂载,通过安装Noto CJK等字体包、优化Jellyfin字体路径,并设置SMB共享的UTF-8编码挂载,彻底解决文字方框问题,打造显示完美的个人媒体中心。

weixin_29197835的博客 626

RT-Thread | FAL软件包的使用,对FLASH进行分区管理

什么是分区管理 FLASH分区管理是怎么一回事呢?我们可以以个人电脑来做类比,我们的电脑通常都分有很多个盘符:这些都是我们硬盘的分区,我这里装了两块硬盘,512GB的机械硬盘+128GB...

嵌入式大杂烩 5720

WSL 2 完整指南:从安装配置到高效开发工作流搭建

在跨平台开发与运维中,如何在单一操作系统内无缝使用另一系统的工具链,是提升效率的关键。虚拟化技术为此提供了解决方案,通过在主机操作系统上创建隔离的虚拟环境来运行其他系统。其中,轻量级虚拟化因其资源占用低、启动快速而备受青睐。Windows Subsystem for Linux (WSL) 正是微软基于此理念推出的核心技术,它通过在Windows内核层实现兼容层或利用优化的虚拟机,允许原生运行Linux二进制文件。这项技术的核心价值在于,它让开发者无需重启或牺牲性能,即可在Windows上直接使用完整的Li

anheku1562的博客 497

Claude Code Skill机制解析:可执行的AI编程原子能力

Skill 是现代AI编程助手中的核心抽象概念,指代一种可声明、可上下文感知、可安全执行的自动化任务单元。它既非传统插件,也非代码包,而是通过文件系统约定(目录+SKILL.md)、YAML元数据契约与运行时协议协同构成的轻量级工作流范式。其技术价值在于将重复性开发操作(如代码审查、API文档生成、Git提交)固化为可复用、可调试、可权限管控的‘原子能力’,显著提升人机协同效率与工程确定性。典型应用场景包括CI/CD辅助、规范驱动开发、跨工具链自动化等。本文深入剖析Claude Code中Skill的设计原

weixin_33726313的博客 359

在Linux中 查看连接磁盘 l,如何在Linux中访问硬盘DOS分区、软盘和光盘

一般情况下,用户只能使用linux本身默认的ext-2文件系统。在我们的机器中常常有多个操作系统,能不能在Linux中也能够使用硬盘的DOS分区、软盘和光盘呢?我在使用Linux的过程中,逐渐摸索出了实现上面要求的方法,现总结如下。Linux的文件系统当你以root(系统管理员)身份登录进入Linux系统后,在系统的#提示符下,先用cd/命令,退回到系统的根目录。用ls-l命令可看到Linux系统...

weixin_31600859的博客 224

u盘制作双系统启动盘及在移动硬盘上安装Linux操作系统

就Linux的学习而言,一般有以下几种方法,每一种方法都有自己的优点,而这里我要说一下缺点:1、使用虚拟机,安装Linux,缺点:硬件是虚拟的,win上的虚拟机运行效率都不好,不能发挥硬件性能,对硬盘使用寿命影响比较大,虚拟硬件与真实硬件毕竟有差异,不利于学习Linux。2、安装win+linux双系统,缺点:每次安装双系统或多或少有一些麻烦,通常还是出现在重启的时候,不小心容易造成MBR混乱,同时,安装双系统会修改MBR,需要从之前分好区的硬盘里压缩出空余空间来安装linux,这个东西挺麻烦的,步骤繁琐而

悦分享 6392

Day1 9.19作业

一、破解密码 方法:添加rd.break 第1步 重启系统并编辑内核参数 按“e”进入 第2步 找到Linux这行,末尾空格后 输入 rd.break 然后按Ctl+x进入 第3步 这里sysroot是以只读的形式挂载的,所以要以可读可写的方式来挂载 第4步 以读写方式挂载/sysroot 第5步 修改密码 进入/sysroot子系统并修改密码 第6步 强制重置文件系统的上下文 第7步 退出,exit 再次执行exit,重置文件系统上下文,会有个百分比。 系统会在此处卡一会,耐心等待。

Fortheglory_B的博客 264

内存设计指南:01 Xilinx DDR4 design guide解析

最近有很多网友咨询FPGA DDR4为什么速率总是上不去的问题,发现他们的设计确实很随意,都没有遵守一些手册的基本要求,所以今天和大家一起重新读一读DDR4 design guide,看看哪些要求是一定不能忽略的。首次设计一款新的芯片或者内存方案时,可能会无从下手。对于内存设计,官方指导首推JEDEC规范,每一代内存推出时,在JEDEC官网均能找到对应的规范文档、各种内存形式的说明文档如DDR4-JESD79、DDR4 SDRAM UDIMM Design Specification以及内存条DEMO等。

halee_00的博客 3302

ANSYS MAXWELL内置式永磁同步电机(IPMSM)转矩最大时输入电流相位的确定

1.在转子转速为零时看一个周期内的转矩变化

qq_41752507的博客 6516

用Vectras VM在Android手机上安装老Windows系统全攻略

虚拟化技术让旧操作系统得以在现代设备上再生。QEMU作为开源纯软件虚拟化方案,能够模拟CPU、内存、硬盘等完整硬件环境,为运行老系统提供了坚实基础。Vectras VM正是基于QEMU的Android图形化前端,它将复杂的命令行参数封装成直观界面,使手机无需root即可创建虚拟机。借助VNC协议,用户能在局域网内远程操作虚拟桌面,体验上世纪经典系统的交互逻辑。这项技术不仅适合怀旧玩家重温Windows 95的开机旋律,也为软件测试、操作系统学习及旧数据查阅提供了轻量级工具。本文以Vectras VM为核心,

weixin_34072637的博客 407

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 228

git支持的协议大全

1git协议 git可以使用四种主要的协议来传输资料:本地协议、HTTP协议、SSH协议以及Git协议。在此,将讨论不同协议的使用场景。 1.1本地协议 1.1.1基本知识 最基本的就是 本地协议(Local protocol) ,其中的远程版本库就是硬盘内的另一个目录。 这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或者比较少见的多人共用同一台电脑的情况。 后...

一叶知春秋 1698

深入解析数据通信中的码元速率与比特率:从基础到实战应用

本文深入解析了数据通信中的核心概念码元速率与比特率,通过生动的比喻和公式(比特率=波特率×log₂(M))揭示其本质关系。文章结合BPSK、QPSK、16QAM等调制技术,剖析了从4G/5G到LoRa等实战场景中如何权衡速率、距离与可靠性,并提供了软考真题解析与系统设计建议,帮助读者从理论到应用全面掌握数据速率优化。

weixin_29324877的博客 213

VMware Workstation Pro必备技巧:5分钟搞定Ubuntu虚拟机磁盘瘦身(附常见错误解决)

本文详细介绍了如何为VMware Workstation Pro中的Ubuntu虚拟机进行磁盘瘦身,解决.vmdk文件只增不减的问题。通过清理系统垃圾、使用零填充空闲空间,并利用vmware-toolbox-cmd或vmware-vdiskmanager工具进行压缩,可有效回收被无效占用的磁盘空间。文章还提供了常见错误解决方案和预防性维护建议,帮助用户高效管理虚拟机存储。

sea99的博客 296

《精通git》笔记之七(服务器上面的git)

此外,希望合作者们即使在你的电脑未联机时亦能存取仓库 — 拥有一个更可靠的公用仓库十分有用。因此,与他人合作的最佳方法即是建立一个你与合作者们都有权利访问,且可从那里推送和拉取资料的共用仓库。 一个远程仓库通常只是一个裸仓库(bare repository)— 即一个没有当前工作目录的仓库。因为该仓库仅仅作为合作媒介,不需要从磁碟检查快照;存放的只有 Git 的资料。简单的说,裸仓库就是专案目录内的 .git 子目录内容,不包含其他资料。 协议 Git 可以使用四种主要的协议来传输资料:本地协议(Local

The_perfect_world的博客 306

YOLO26涨点改进 | 细节涨点篇 | 源自SCI一区 | YOLO26引入HWD小波下采样模块,而不会显著增加计算开销,(适合小目标分割任务、小目标检测任务)

本文提出了一种基于Haar小波变换的下采样模块HWD,用于改进YOLO26目标检测性能。HWD模块通过小波变换降低特征图分辨率,同时将空间信息编码到通道维度,有效保留了关键信息。相比传统下采样方法,HWD能显著减少信息不确定性,提升小目标检测精度。实验表明,该模块可无缝集成到CNN架构中,不增加计算开销。文章详细介绍了HWD的实现原理、代码结构以及在YOLO26中的集成方法,并提供了两种改进版yaml配置文件。该创新模块已在多种数据集上验证有效,特别适合语义分割和目标检测任务。

Ai缝合怪、助力小伙伴高效发论文 399

git 协议

git协议 git协议 本地协议 ssh协议 git协议 HTTPS协议 1. 本地协议 本地协议(Local protocol) ,远程仓库在该协议中就是硬盘上的另一个 目录。这常见于团队每一个成员都对一个共享的文件系统(例如 NFS )拥有访问权。 优点 基于文件仓库的优点在于它的简单,同时保留了现存文件的权限和网络访问权限。如果你的团队已经有一个全体共享的文件系统,

gtfaww的博客 551

前端使用二开Thingsboard一、二、三事(四)-部件库

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 739

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

搭建本地git服务器

一、环境 CentOS Linux release 7.5.1804 (Core) 二、git服务器通讯协议 本地协议(Local) 最基本的就是 本地协议(Local protocol) ,其中的远程版本库是硬盘内的一个目录。这常见于团队每一个成员都对一个共享的文件系统(例如一个挂载的 NFS)拥有访问权,或者比较少见的多人共用同一台电脑的情况。后者并不理想,因为你的所有代码...

weixin_30549175的博客 299

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

xp下硬盘安装ubuntu

(一)ubuntu的安装方式有三种:1.VM虚拟机安装2.使用ubuntu提供的wubi安装3.硬盘安装今天主要介绍在xp下硬盘安装的方法,其他方式的安装可见: http://forum.ubuntu.org.cn/index.php 这里比较齐全(二)使用xp硬盘安装的原因:1.不习惯win7的界面,华而不实,既不优美,也不好用,所以我只用XP2.在网上看到有说硬盘安装比虚拟安装快,这个没亲自测

相信科技改变生活 594

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

服务器上的 Git

服务器上的 Git 协议 Git 可以使用四种不同的协议来传输资料:本地协议(Local),HTTP 协议,SSH(Secure Shell)协议及 Git协议。 本地协议(Local protocol)是最基本的,其中的远程版本库就是同一主机上的另一个目录。 增加一个本地版本库到现有的 Git 项目,就可以通过新的远程仓库名 local_proj 像在网络上一样从远端版本库推送和拉取更新了。可以执行如下的命令: $ git remote add local_proj /srv/git/pr

david2018521 244
上一篇: RISC-V架构下 FPU Context 的动态保存和恢复
下一篇: 关于时间片调度算法issue的分析与解决
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值