Linux MTD层的研究(Nandflash)

[uboot]支持mtd分区 参考: https://blog.youkuaiyun.com/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.. 阅读详情

相关推荐

在VM虚拟机的MobaXterm下安装JDK17

本文介绍了在Linux系统下安装配置JDK17的完整步骤:1)从Oracle或OpenJDK官网下载Linux版JDK17压缩包;2)上传至/usr/local目录;3)解压安装包;4)通过编辑/etc/profile文件配置环境变量,添加JAVA_HOME和PATH路径;5)使用source命令使配置生效;6)通过javac -version验证安装是否成功。整个过程涵盖了从下载到环境配置的完整流程,确保Java开发环境正确设置。

qq_2937655951的博客 442

保姆级教程:用GEE(Google Earth Engine)复现CASA模型计算NPP,附完整数据集清单与Python代码

本文提供了一份详细的保姆级教程,指导如何使用GEE(Google Earth Engine)复现CASA模型计算NPP(净初级生产力)。教程涵盖环境准备、关键数据集获取与处理、Python代码实现全流程,以及结果验证与常见问题解决方案,帮助生态学研究者高效完成NPP计算。

weixin_28707365的博客 334

基于电子海图的水面无人艇全局路径规划

Research and Implementation of Global Path Planning for Unmanned Surface Vehicle Based on Electronic Chart (基于电子海图的水面无人艇全局路径规划)   该论文已经在ICMIR2017会议上发表,附上springer的文献地址 Research and Implementation of Gl...

weixin_30797199的博客 1590

066、AR 应用中虚拟物体漂移抖动?IMU 融合 + 光流追踪的视觉里程计优化方案

AR应用中虚拟物体漂移抖动优化方案 摘要:针对AR应用中虚拟物体漂移抖动问题,提出一种IMU融合与光流追踪的视觉里程计优化方案。关键点包括:1) 采用IMU预积分技术处理高频噪声,通过中值积分计算帧间相对运动约束;2) 使用金字塔LK光流追踪像素运动,通过中值偏差法剔除异常值;3) 构建10帧滑动窗口的紧耦合优化框架,将IMU预积分约束和光流重投影约束联合优化。实验表明,该方法有效解决了时间戳未对齐导致的"跳舞箭头"现象,在手机端实现稳定30fps的AR定位精度,漂移误差降低至厘米级。特别提醒:IMU与视觉

ai技术增长的博客 161

基于Multisim的三相桥式全控整流电路建模、仿真与综合分析

本文基于Multisim 14.2平台,系统研究了三相桥式全控整流电路的建模与仿真方法。首先阐述了电路拓扑结构和工作原理,建立了数学模型。重点介绍了在Multisim中搭建主电路、设计六脉冲触发系统(含两种实现方案)的关键步骤,以及参数设置技巧。通过仿真分析了不同负载(阻性、阻感性)和触发角(0°-90°)下的输出特性,包括电压波形、电流谐波等性能指标。研究为电力电子教学提供了直观的仿真范例,并探讨了模型改进方向与实际工程应用价值。

huanghm88的专栏 353

CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息

CAPL通过lookupSignal和DBLookup获取DBC信号的属性信息以及一些相关问题

天赐好车的博客 2889

基于Dify实现对Excel的数据分析

在dify部署完成后,大家就可以基于此进行各种应用场景建设,目前dify支持聊天助手(包括对话工作流)、工作流、agent等模式的场景建设,我们在日常工作中经常会遇到各种各样的数据清洗、格式转换处理、数据统计成图等数据分析工作,本次主要基于对话工作流模式对Excel文件、csv文件进行解析处理,并进行成图等数据分析工作。主要用到的插件有LLM节点,文档提取器、参数提取器、自定义代码节点、echart插件等。实现解析Excel数据,经过上述不同节点的处理分析流程,最终实现数据统计图展示。

hhue2007的专栏 1万+

推荐系统(一)概述

在互联网领域,推荐系统(Recommendation Systems)的应用非常广泛。在音视频方面,如抖音、快手、哔哩等;在电商平台方面,如京东、淘宝、拼多多等。推荐有助于帮助用户快速发现潜在感兴趣的内容(音视频、商品、新闻等信息流),从而提升用户体验,同时有助于提升商业效率。从本文开始,笔者将结合自身在信息流推荐领域的经验,通过系列文章对推荐系统展开介绍。

Jin_Kwok的博客 6084

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

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

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值