yaffs基础第一篇——yaffs中的核心数据结构

Avalonia 11到10的降级实战:在银河麒麟V10上打包.NET6桌面应用的避坑全记录 本文详细记录了从Avalonia 11降级到10版本在银河麒麟V10上打包.NET6桌面应用的全过程,包括兼容性对比、降级操作步骤、deb打包实战及常见问题解决方案。通过实战验证,Avalonia 10在银河麒麟V10上展现出更高的稳定性和兼容性,为开发者提供了可靠的跨平台开发方案。 阅读详情

一个比较大的工程,最最核心的往往是数据结构体的定义,这是我最近一段时间啃yaffs啃出来的体会,一个复杂的函数往往是因为里面包含了各类结构体,结构体成员函数之间的不断转换,因此想要理解好一个大型的软件,一定要深刻的理解它的核心结构体。

话说有一天和trio一起吃饭,trio老师谈到他看代码的习惯,说往往是先不看.c文件,先把头文件仔细读一遍,这点真是深刻啊!

 

我的理解核心数据就像整个代码的经络一样,别看这个程序有多少多少万行代码,它本质上就是在对这些结构体进行操作。废话少说,我们来看一下yaffs的核心结构体。

 

Yaffs的主要的结构体在yaffs_guts.h这个文件中,核心的接头体有:

struct yaffs_DeviceStruct

 

struct  yaffs_ObjectStruct

 

Struct yaffs_ObjectHeader

 

//Struct yaffs_blockinfo

 

Struct yaffs_spare

 

Struct yaffs_tags

 

//Struct yaffs_chunkcache

 

还有一个比较重要的结构体在yaffs_fs.h这个文件中

 

Struct  yaffsfs_Handle

 

当然还有其他很多结构体,这里先把主要的列在这儿,我准备从物理上和逻辑上的区分来说明这些结构体的作用,请看下面这张表。

结构体名字

属性(物理,逻辑)

作用

yaffs_DeviceStruct

物理

是描述了整个挂载的设备(大小,起始地址,读写操作的函数等等)

yaffs_spare

物理

描述了nandflash每一页后的16个字节

yaffs_ObjectHeader

物理,逻辑

存在于nandflash上,这是物理特性,它的内容是描述了一个文件信息,这是逻辑特性

yaffs_ObjectStruct

逻辑

描述了一个文件的具体信息

yaffsfs_Handle

逻辑

描述了访问文件的信息,读写特性,文件偏移量,文件的yaffs_objectstruct

yaffs_tags

逻辑

它其实是yaffs_spare的一部分,yaffs利用tags中的内容对yaffs进行组织

 

因此可以这么来说实际和nandflash的硬件相关的结构体有三个,其他的结构体都是只是为了维护yaffs的组织目录而在内存中形成的。所以,yaffs的整个目录是可以通过遍历整个yaffs的结构,读取spare区和object headler来得到yaffs中的所有逻辑结构。这部分工作是在yaffs_mount这个函数来实现的,这个我们以后会继续讲到。

下面我们来详细讲解每个结构体:


yaffs理解第一篇——yaffs direct综述  最近做了一件事情,就是把yaffs从linux中拨出来移植到了实地址模式下(yaffs direct),既然是实地址,所以可以直接用在不跑操作系统的程序中,或者运行ucos, nucleus等实地址的操作系统。网上盛行的将yaffs移植到c51下就是这种方式。yaffs 为这种方式起了个名字叫yaffs dircet,其实这部分的移植只要理解了yaffs的基本框架,读一下yaffs中docu 阅读详情

相关推荐

yaffs2源代码分析(最新版)

曾经,有位叫斑点的大牛,写了一篇yaffs2源代码分析,全网都在转载,但是我研读这片好文的时候,真心不爽,因为这篇所使用的yaffs2源代码太老了,现在看很多都对不上啊,那就本人自告奋勇的把里面的源码更新一遍,整体重新学习一遍,奉献给大家!

辰子老八 6238

yaffs理解第二篇——yaffs_startup函数解析

Yaffs_startup函数是启动yaffs文件系统的第一个函数,主要起到了初始化设备的作用,就代码而言就是将我们在yaffs基础第一篇——yaffs中的核心数据结构中提到的yaffs_devicestruct结构体进行最简单的也是最重要部分的初始化。代码位置在/yaffs/direct/yaffscfg.c。核心部分如下: static yaffsfs_DeviceConfigurat

技术点亮人生,成功通向卓越 3607

Yaffs文件系统原理详解

本文详细介绍了Yaffs文件系统的原理,是很好的学习Yaffs文件系统的资料!

物料主数据管理难在哪?基于AI算法的数据清洗工具了解一下

企企通打造的一套以AI模型和算法为核心的产品及服务,可针对各类企业的不同主数据痛点难点,提供多种解决方案,能够快速完成物料主数据清洗、识别、匹配、梳理,满足一物一码、分类梳理、一品多商、多维度比价、精准寻源选品、建立标准物料库、供应商及客户主数据清洗等业务场景需求。随着AI技术的快速发展,智能算法在数据清洗领域的应用越来越广泛,越来越多的数据清洗工作已经开始交由智能算法完成,通过自动化的方式处理大量数据,识别和纠正错误,填补缺失值,检测异常值,以及执行其他数据预处理任务,并提高效率并减少人为错误。

QQT_qqt的博客 1364

离线迁移 Conda 环境到 Windows 服务器:用 conda-pack 摆脱硬路径限制

在进行深度学习算法的环境部署时,由于生产服务器被彻底隔离外网,只能把conda中env文件夹中的虚拟环境文件夹从开发机直接拷到Windows 服务器,但在运行labelimg等工具时可能报错,因此用conda-pack来解决。

weixin_44115575的博客 1425

ESXI 8.0.3 ubuntu 24.04 直通显卡P40

手把手,一步步教你直通GPU,ESXI 8.0.3 ubuntu 24.04 直通显卡P40

qq_36433118的博客 4682

示波器学习(一):示波器的作用、类型和基本结构

示波器的作用、使用场景;示波器的类型和基本结构介绍

qq_41300605的博客 9140

【博文汇总】I2C总线学习

将这一周学习I2C总线的文章汇总一下。 基础知识学习 触发器的建立时间和保持时间 如何学习总线技术 TTL电平和CMOS电平 深入理解 关于I2C和SPI总线协议 I2C总线深入浅出 I2C总线信号时序总结 对I2C总线协议的一些理解 对I2C总线的时钟同步和总线仲裁的深入理解 I2C总线学习终结,开始SPI总线的学习 深入理解IIC总线时序

ce123的技术博客 6213

ARM 之十六 详解 CMSIS 版本变迁、各组件使用示例

目前,CMSIS 已经发展到了第六版,其目录结构也发生了重大的变化。在不断发展中,很多原来 CMSIS 的组件被不断独立出去,并因此成立了很多开源社区,今天就来学习一下!由于 CMSIS 已经包含了相当丰富的文档,因此,本文重点学习版本之间的变化以及一些实际使用示例。

技术干货 1954

企业AI数据资产评估的自动化工具:AI应用架构师的使用指南

在AI驱动的企业数字化转型中,数据资产是支撑模型训练、业务决策的核心燃料。然而,80%的AI项目失败源于数据问题——低质量数据导致模型偏差、未评估的风险引发合规危机、价值不明确的数据浪费资源。手动数据资产评估效率低、易出错,无法满足规模化AI应用需求。本文将以AI应用架构师的视角,拆解企业数据资产评估的核心逻辑,用"餐厅选食材"的生活化比喻解释复杂概念,结合自动化工具的技术原理与实战案例,教你如何从0到1搭建数据资产评估体系。无论是数据质量检测、价值量化还是风险防控,你都能找到可落地的工具方案与实践步骤。

2502_91592937的博客 1629

NTC热敏电阻选型快速指南

NTC(Negative Temperature Coefficient Thermistor)负温度系数热敏电阻器,是由锰Mn,镍Ni,铜Cu,一氧化碳Co等烧结而成的氧化物。其电阻值随温度的升高而减小,即具有复温度系数,故被称为负温度系数热敏电阻。本文对热敏电阻的应用场景,结构特点和选型参数进行总结。

fydar的博客 1293

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

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

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

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

上一篇: yaffs基础第二篇——yaffs中缓冲机制
下一篇: yaffs理解第一篇——yaffs direct综述
myleeming
博客等级 码龄18年 75粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值