Linux MTD层的研究(Nandflash)

[uboot]支持mtd分区 参考: https://blog.csdn.net/weixin_42314225/article/details/83241230 问题: (1)uboot支持nor flash sf命令后,如何与网络配置进行版本更新? (2)uboot如何支持MTD设备,Nor flash MTD分区如何进行分区划分? (3)uboot中的分区如何与kernel中的分区进行统一? (4)uboot变量mtdparts=60000000.nor:2m@0x100000(nor_bank0_uboot),4 阅读详情

花了点时间学习Linux MTD层,下面简单总结一下!

以下是MTD层的结构图


      MTD层实现了文件系统与Flash之间的桥梁,下面就粗略说明字符型MTD驱动与下层驱动的关系。

分析对象:/drivers/mtdchar.c 字符型mtd设备

字符设备中定义了mtd_fops字符类的文件指针操作函数,完成字符设备读写与打开等功能。

1. static int mtd_open(struct inode *inode, struct file *file)
{
    int minor = iminor(inode);
    int devnum = minor >> 1;
    int ret = 0;
    struct mtd_info *mtd;
    struct mtd_file_info *mfi;
   ........
    mtd = get_mtd_device(NULL, devnum);    //在原始设备层实现, mtd/mtdcore.c文件中被EXPORTS_SYMBOL
    ........
} /* mtd_open */

/*====================

get_mtd_device在原始设备层中被实现,原始设备层中维护了一个struct mtd_info *mtd_table[MAX_MTD_DEVICES],用来存储注册mtd的设备列表。该文件中(该层)实现了如下的函数对外Export_Symbol:

EXPORT_SYMBOL_GPL(add_mtd_device);      //用于硬件驱动层调用,注册到原始设备层,调用路径为:s3c24xx_nand_probe()(/drivers/mtd/nand/s3c2410.c) --> add_one_partition(mtdpart.c) --> add_mtd_device()(mtdcore.c)
EXPORT_SYMBOL_GPL(del_mtd_device);    //用法与上面差不多
EXPORT_SYMBOL_GPL(get_mtd_device);    //得到table里面的具体mtd设备(mtd_info),该结构里有read等函数;该函数主要为mtd字符设备层调用
EXPORT_SYMBOL_GPL(get_mtd_device_nm);   //通过名字得到mtd设备(mtd_info)
EXPORT_SYMBOL_GPL(put_mtd_device);           //释放
EXPORT_SYMBOL_GPL(register_mtd_user);    //注册mtd_user;mtd原始层维护了一个mtd_notifiers链表,用于提供上层向下层注册 struct mtd_notifier {void (*add)(struct mtd_info *mtd); void (*remove)(struct mtd_info *mtd);struct list_head list; }
EXPORT_SYMBOL_GPL(unregister_mtd_user);
EXPORT_SYMBOL_GPL(default_mtd_writev);


2. 字符设备mtdchar.c中的


static ssize_t mtd_read(struct file *file, char __user *buf, size_t count,loff_t *ppos)
{
 

Linux MTD子系统与系统内核MTD分区 一、MTD框架 MTD设备通常可分为四层 上到下依次是:设备节点、MTD设备层、MTD原始设备层和硬件驱动层。 设备框架 二、MTD分区表的实现 在开机过程从console经常可以看到类似以下信息, 0x000000000000-0x000000100000 : "Bootloade" 0x000000100000-0x000002000000 : "Kernel" 0x000002000000-0x000003000000 : "User" 0x000003000000-0x0.. 阅读详情

相关推荐

长上下文技术的底层逻辑:Attention、压缩、缓存与跨页推理

如果把模型的参数视为“固化智能”,动态智能(Dynamic Intelligence)——模型不必依赖训练时的记忆,而是可以随时调用外部信息。这一点正在改变大模型的范式:Prompt 不再是输入,而是“操作系统事件”文档不再是知识,而是“模型的临时记忆”模型不再是一段神经网络,而是一个“具备阅读循环的推理引擎”当我们把上下文从 128K 拉到百万级,我们做的不是扩容,而是让模型第一次拥有阅读、回溯、定位、跨页分析的能力。这是一种新的智能。

aifs2025的博客 974

如何让Arduino IDE支持你手里的STM32 nucleo开发板

Arduino IDE开发环境在默认情况下不支持STM32 NUCLEO开发板,只有通过添加附加开发板管理包才能使用。目前为止,只有一部分板子支持使用Arduino IDE开发环境进行开发,分别是 Nucleo F207ZG, Nucleo F429ZI, Nucleo F030R8, Nucleo F091RC, Nucleo F103RB, Nucleo F303RE, Nucl...

mzw72188552的专栏 8953

从零构建PEMFC仿真模型:MATLAB/Simulink中的模块化拆解与系统集成

本文详细介绍了如何在MATLAB/Simulink环境中从零构建质子交换膜燃料电池(PEMFC)仿真模型,包括电化学模型、气体供应系统和热管理系统的模块化实现。通过多物理场耦合技巧和系统集成策略,帮助工程师和研究者高效开发PEMFC控制策略,优化性能并实现实时仿真。

weixin_29294975的博客 340

ExpressLRS 915MHz vs 2.4GHz:实测对比与TX12遥控器的最佳搭配方案

本文深入对比了ExpressLRS 915MHz与2.4GHz两种频段在穿透能力、延迟、抗干扰等方面的实测表现,并结合RadioMaster TX12遥控器的硬件特性,提供了从微型花飞到极限远航等不同场景下的最佳搭配方案与EdgeTX系统配置指南,帮助FPV玩家根据核心飞行需求做出精准选择。

milk8的博客 423

RK3568+XS9922B+Android11双模视频输入:CVBS与AHD兼容驱动开发实战

本文详细介绍了基于RK3568平台和XS9922B解码芯片,在Android11系统上开发支持CVBS与AHD双模视频输入的兼容驱动实战。内容涵盖硬件选型、内核驱动框架分析、双模信号自动识别与配置、视频通道切换实现及图像质量优化等关键技术点,为车载监控等需要兼容新旧摄像头的项目提供完整解决方案。

js777的博客 349

NeRF必读:Mip-NeRF总结与公式推导

由于远景近景的分辨率不同,导致经典NeRF对于多尺度场景的表达存在明显瑕疵:NeRF对于近景的重建比较模糊而对于远景的重建出现锯齿。简单粗暴的策略是supersampling,但是费时费力。相较于NeRF使用的位置编码(PE)方式,Mip-NeRF提出了积分位置编码的方式(IPE).这种编码方式可以多尺度地描述空间中的信息分布,make sense.

i_head_no_back的博客 6059

信奥赛C++提高组csp-s之线段树详解

信奥赛C++提高组csp-s之线段树详解

王老师青少年编程 898

里海NX二次开发3000例-专栏目录

UDO(User Defined Object)是“用户自定义对象”。应用非常广,可以用UDO创建自定义特征,也可以对NX原有的特征添加一些特殊信息,这些信息会保存在部件中,以后可以查询。还可以实时追踪NX对象,例如做3D包容盒线框自动追踪实体,做2D矩形框自动追踪图纸尺寸值,这些在下面的例子都有介绍。读者可以自己编译下面的例子,体会理解UDO的用法。------里海 20230512序号内容​链接01使用UDO在所有实体上设置更新回调​链接02使用UDO生成跟踪实体的线框​链接03删除UDO​链接。

王牌飞行员_里海的博客 7587

摩托罗拉cp1660写频软件

摩托罗拉对讲机cp系列最新版本的写频软件应用在xp系统上

AutoCAD设计图纸深圳观澜高尔夫别墅装修图纸-dwg源格式.zip

AutoCAD设计图纸深圳观澜高尔夫别墅装修图纸-dwg源格式.zip

2006-2023年 中国农村政策与改革统计年报(Excel+PDF)

本数据集对应的官方统计出版物历经名称调整与内容优化:2006–2017年以《中国农村经营管理统计年报》为名发布,2018年起经拆分重组,独立为《中国农村合作经济统计年报》与《中国农村政策与改革统计年报》。该年报由中国农业农村部政策与改革司牵头编制,严格依据国家统计局政策与改革统计报表制度整合数据,系统反映农村基本单位结构、土地承包经营状况、劳动力流动特征等核心领域的发展实况,是研究农村发展的权威数据源。Excel格式包含2006-2014,PDF格式包含2015-2023年相关数据农村基本单位结构、农村劳动力状况、土地资源与承包经营、土地承包管理、农业经营规模等等

丹佛斯Coolselector 2选型安装软件.exe

丹佛斯Coolselector 2选型安装软件

上一篇: 读书笔记--不断更新
下一篇: Linux LCD驱动中framebuffer的研究
shareCode
博客等级 码龄15年 125粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值