4459|7

222

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

Yaffs1应用在2KPage的NANDflash [复制链接]

手上的Nandflash是2K/Page,想移植Yaffs2(裸机无Linux、Yaffs的Direct API接口),但是编译太多问题改用Yaffs1,但是听说Yaffs1只支持512Byte/Page
这几天大略看了yaffs_guts.c V1.21,貌似没找到必须Page大小必须是512的相关逻辑代码
如果我把2KPage划分成4个大小为512Byte的Chunk(Yaffs1扇区的划分单位)是不是也能用呢???
此帖出自Linux开发论坛

最新回复

为什么不用yaffs2呢?  详情 回复 发表于 2014-12-5 23:30
点赞 关注

回复
举报

222

帖子

2

TA的资源

一粒金砂(高级)

沙发
 
硬件相关的接口类似这样
int yflash_WriteChunkToNAND(yaffs_Device *dev,int chunkInNAND,const __u8 *data, yaffs_Spare *spare)
我直接把chunkID转换成第几个Page中4个Chunk的哪一个,应该就OK了。
此帖出自Linux开发论坛
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
我担心移植后即使能运行,会不会出现这种情况(YAFFS源代码我没看完,仅仅是猜测),2K的Page只用掉前面512Byte,后面的3*512都是空的
此帖出自Linux开发论坛

点评

看好最小写入单位,你想2K分四次写入应该是不行的,如果最小写入是2k,一次写入后即使2k没满也不能再次写入了  详情 回复 发表于 2014-12-4 22:41
 
 
 

回复

6423

帖子

16

TA的资源

版主

4
 
lzwml 发表于 2014-12-4 20:13
我担心移植后即使能运行,会不会出现这种情况(YAFFS源代码我没看完,仅仅是猜测),2K的Page只用掉前面512Byte,后面的3*512都是空的
看好最小写入单位,你想2K分四次写入应该是不行的,如果最小写入是2k,一次写入后即使2k没满也不能再次写入了
此帖出自Linux开发论坛

点评

现在正在调试中,能看到lost+found目录,但是不能新建目录和文件。 另外yaffs没有类似fatfs的格式化函数f_mkfs(),是不是格式化yaffs必须用mkyaffsImg生成镜像,然后烧写到Nand,我认为用mkyaffsImg只是为了打包l  详情 回复 发表于 2014-12-5 11:41
 
个人签名training
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

5
 
白丁 发表于 2014-12-4 22:41
看好最小写入单位,你想2K分四次写入应该是不行的,如果最小写入是2k,一次写入后即使2k没满也不能再次写入了

现在正在调试中,能看到lost+found目录,但是不能新建目录和文件。
另外yaffs没有类似fatfs的格式化函数f_mkfs(),是不是格式化yaffs必须用mkyaffsImg生成镜像,然后烧写到Nand,我认为用mkyaffsImg只是为了打包linux文件目录,对于裸机来说,不需要向linux那样读取/etc等目录里的配置内容。

倘若我不用mkyaffsImg生成镜像,直接拿几块全0xff的Block,能不能做文件系统呢???
此帖出自Linux开发论坛
 
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

6
 
本帖最后由 lzwml 于 2014-12-5 19:43 编辑

在vs2008里用小段内存仿真Nandflash,仿真环境已经调试成功

1、用mkyaffsImg创建了一个镜像文件,用仿真内存先全部设置成0xFF,然后前面一部分赋值成镜像文件内容,但是看不到镜像文件目录——镜像读取失败
我用的mkyaffsImg附带Readme.txt里说这是用在linux 2.6.xx的,我是裸机,可能调用的机制不同,不管它

2、仿真内存全部设置成0xff,可以随意创建、删除目录。这才是我在乎的
结贴后共享VS2008工程


/**
******************************************************************************
* @brief
*  VS2008仿真Yaffs1,Yaffs版本1.2.1,用RAM仿真存储器
*
*--------------------------------------------------
* version    |    author    |    date    |    content
* V1.0   MenglongWu  2014-12-5 1.简单的列出接口,因为这个Yaffs版本
   太老,恐怕存在Bug,测试时候分区有/boot和/c,执行命令创建/boot目录
   mkdir /boot会报错,然后整个文件系统崩溃,理应提示/boot目录已经存在,
   但他没有提示,如果已经存在/boot/dir1目录,mkdir /boot/dir1没有任何问题,
   跟踪代码提示目录已经存在。
******************************************************************************
*/


VS2008_Yaffs1.rar

94.65 KB, 下载次数: 2

售价: 2 分芯积分  [记录]  [购买]

VS2008创建Yaffs1虚拟硬盘

此帖出自Linux开发论坛
 
 
 

回复

222

帖子

2

TA的资源

一粒金砂(高级)

7
 
本帖最后由 lzwml 于 2014-12-5 22:13 编辑

write chunkid xx是RAM模拟Nand的调试信息

一下信息在yaffs_flashif.h里定义宏
创建一个
Page大小2K+64Byte
每个Block有8个Page
虚拟设备有128个Block

Page(2K+64Byte)划分成512Byte每chunk,16Byte每space
虚拟设备总大小是RAM_SIZE



int block,page;
block = chunkInNAND /  4;
page = chunkInNAND % 4;

chunk转换成block和page我是随便写的,转换关系并不正确

此帖出自Linux开发论坛
 
 
 

回复

6423

帖子

16

TA的资源

版主

8
 
为什么不用yaffs2呢?
此帖出自Linux开发论坛
 
个人签名training
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表