Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread一般讨论
YAFFS
YAFFS memory footprint
发布于 2009-05-06 10:50:50 浏览:9452
订阅该版
``` YAFFS claims a 'low memory footprint', but what exactly does that mean? How low is low? Calculating an exact footprint is no easy task. There are many dependencies. Here is an approximation for YAFFS1 on Linux, assuming the standard block size of 512bytes per page and 16kB per block. 1. Code size. This is dependent on various factors including CPU choice, optiomisation options etc. As a rough guide, the yaffs.o Linux module for x86 is around 55kBytes. This could be made smaller by stripping the debug text and ECC code if you don't need that. 2. Run-time data structures. Some of these are fixed size and others are generated in runtime and change as your file structures change. As a rough guide though I will give the following: 1. Each yaffs partition needs a device structure of less than 1kB + approx 2-4kB stack with the current implementation. 2. If shortOpCaches are enabled, then 524 bytes per cache entry (5 to 10 is a good number). 3. About 120 bytes per file. (With short name caching enabled) 4. About 4 bytes per block of NAND (ie. about 128 bytes per MB of NAND). 5. About 4kBytes of RAM per MB of NAND for building the file TNode trees that are used to locate the data chunks. Thus for a system using a 64MByte NAND and say 500 files you can budget on approx: * 1) 55kBytes * 2a) 5kB * 2b) 3kB (5 cache entries) * 2c) 60kB * 2d) 16kB * 2e) 256kB Total 410kBytes The last item, the tnodes, is the biggest expense in YAFFS. This can be reduced significantly by using a larger page size. There are some opportunities to tune some of these numbers so please feel free to discusss further if required. ```
查看更多
13
个回答
默认排序
按发布时间排序
bernard
2009-05-06
这家伙很懒,什么也没写!
64M NandFlash需要400多KB的memory,看来把NandFlash用于小型设备中还是比较艰难!
bernard
2009-05-06
这家伙很懒,什么也没写!
如果是把DFS-MTD层应用于DFS-FAT的话,额外需要的空间是(假设也是64MB): 8K (转换表根据MB而不同) + ... (这个是MTD的一些变量空间,固定的) 似乎用在STM32F103ZE中还行(现在用的开发板上配的正好是64MB的NandFlash)。
mcx2002
2009-11-14
这家伙很懒,什么也没写!
我现在也很犹豫文件系统的问题。我的板子上128M的nand,使用yaffs按照网站上面的说明,似乎资源消耗的太大了。 若是使用FAT的话就需要FTL或者NFTL,这个组件也是很不好做的东西。不知版主有什么打算。
bernard
2009-11-15
这家伙很懒,什么也没写!
Nand 文件系统我是这么考虑的, 针对STM32这种小型的系统,就用FAT + NFTL的方式,这样内存占用应该要小些,但性能上面不一定会比较好,毕竟FAT并不是为FLASH专门设计的文件系统。 而对于ARM9 + 大内存的系统,可以考虑上YAFFS2,因为这种系统内存上面不会成为一个瓶颈(相对于YAFFS2的内存占用而言)。
mcx2002
2009-11-18
这家伙很懒,什么也没写!
arm9的资源肯定要比arm7丰富。而且yaffs有direct user接口,移植起来相当简单。 就是需要考虑一个高效的动态内存管理算法。毕竟yaffs需要经常申请内存。 这样的话碎片和效率就需要考虑了。
bernard
2009-11-18
这家伙很懒,什么也没写!
大内存系统可以考虑开启slab算法,这个对于2M内存以上的系统效果是非常不错的。
mcx2002
2009-11-18
这家伙很懒,什么也没写!
恩。目前来看yaffs还是比较适合我们的系统的。 nftl和ftl就比较麻烦了。 关于ftl和nftl,版主有什么好的建议或者算法可以分享一下?
bernard
2009-11-19
这家伙很懒,什么也没写!
ftl一般做逻辑扇区 <--> 物理扇区的转换,逻辑扇区的组织是一个麻烦事。以前的做法是,做block的转换,然后在block内再做page的转换。 RT-Thread + FileSystem在你的STM32开发板上跑起来了吗?做NFTL之前,可能得先把测试用例想好,这样才能有的放矢。
mcx2002
2009-11-19
这家伙很懒,什么也没写!
目前还没有。我现在用的是free-rtos+mem+driverframe+yaffs 目前我的yaffs还在PC测试中。 这几天都在加班。等有时间移植一下rt-thread。
byeyear
2009-12-28
这家伙很懒,什么也没写!
yaffs2可以使用multi page chunk来减少内存占用量 我曾在一片2G的NAND上使用32K的chunk 附带引发的问题是空间浪费会相对严重一些 比如一个1k的文件,需要一个chunk写header和一个chunk写数据 于是就会需要64K空间 不过例如FAT也会有这样的问题 比如用了32k的簇
撰写答案
登录
注册新账号
关注者
0
被浏览
9.5k
关于作者
bernard
这家伙很懒,什么也没写!
提问
414
回答
5939
被采纳
76
关注TA
发私信
相关问题
1
BSD的一些代码分析
2
RT-Thread文件系统
3
怎么文档,源码还是没有呀??
4
[ZT]嵌入式LwIP协议栈的内存管理
5
RTLinux/RTCore体系结构
6
RTLinux/RTCore局限性
7
怎样获取源码
8
[ZT]The lightest lightweight threads, Protothreads
9
[ZT]微内核操作系统及L4概述
10
关于操作系统对C++操作符的使用
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
a1012112796
13
个答案
1
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部