问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何测试nandflash可靠性

发布网友 发布时间:2022-04-25 00:22

我来回答

1个回答

热心网友 时间:2023-08-14 04:54

/*说明:测试nandflash的可靠性,有的时候nandflash写进去的内容会变位比如写进去1,可是存储的值变成了0,为了测试这种情况的频率写了下面的测试用例*/

/*nandflash挂载在/home/test目录下,通过不停的往test目录下写两个文件A,B(随便两个文件二进制文件都可以),写进去的文件名和顺序A0,B0,A1,B1,A2,B2....,每写进入一个文件读出来和A或者B比较*/

/*如果一旦发现写满了就删除文件重写继续写,一直持续下去,如果发现读出来的内容和写进入的内容就报错,然后再写一次,如果还错就退出程序*/

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>

#include <string.h>

#include <fcntl.h>

#include <sys/statfs.h> //for statfs

#include <sys/vfs.h> //for statfs

#include <sys/types.h>

#include <sys/stat.h> //for stat

#include <sys/time.h>

#include "errno.h"

static int nandflash_wrong=0;

int check_remain_space(void)

{

int stat_flag=0;

int i;

struct statfs nandflash_stat;

long hdisk_remainder_space;

char path_name_check[32];

struct stat name_buf_check;

stat_flag = statfs("/home/test", &nandflash_stat);//获取nandflash的信息

if(stat_flag<0)

{

printf("get nandflash info error!\n");

return -1;

}

hdisk_remainder_space = (float)nandflash_stat.f_bsize * nandflash_stat.f_bfree / 1024;//检测磁盘空间

if(hdisk_remainder_space<8*1024) //至少保留8M的空间

{

for(i=0;i<200;i++)

{

sprintf(path_name_check,"/home/test/A%d",i);

stat(path_name_check,&name_buf_check);

if(errno!=ENOENT) //文件存在,则删除

{

unlink(path_name_check);//不能重名

}

sprintf(path_name_check,"/home/test/B%d",i);

stat(path_name_check,&name_buf_check);

if(errno!=ENOENT) //文件存在,则删除

{

unlink(path_name_check);//不能重名

}

}

sleep(20); //删除文件并不是立即删除,所以要等待文件删除之后再写,防止写的速度比删除速度快,导致磁盘被写满的情况而出错

return 1;

}

return 0;

}

int write_read_nandflash(int mark,unsigned int i,int file_size,char *write_buf,char *read_buf)

{

FILE *fp;

char path_name[32];

unsigned long buf_count=0;

struct stat name_buf;

if( mark == 0 )

{

sprintf(path_name,"/home/test/A%d",i);//生成不同的文件名A0,A1,A2,A3.......

}

else

{

sprintf(path_name,"/home/test/B%d",i);

}

stat(path_name,&name_buf);

if(errno!=ENOENT) //文件存在,则删除

{

unlink(path_name);//不能重名

sleep(3);

}

if((fp=fopen(path_name,"w"))==NULL)

{

printf("fopen failed!\n");

return -1;

}

fwrite(write_buf,file_size,1,fp);

fclose(fp);

// printf("write file name is:%s\n",path_name);

if((fp=fopen(path_name,"r"))==NULL)

{

printf("fopen failed!\n");

return -1;

}

fread(read_buf,file_size,1,fp);

for(buf_count=0;buf_count<(file_size-1);buf_count++)//将master/slave文件写到nandflash中的内容读出来比较

{

if(read_buf[buf_count]!=write_buf[buf_count])

{

system("date");//出错的时候打印的系统时间

printf("file name is %s:\n",path_name);

unlink(path_name);

sleep(3);

if((fp=fopen(path_name,"w"))==NULL)

{

printf("fopen failed!\n");

return -1;

}

nandflash_wrong++;

fwrite(write_buf,file_size,1,fp);//出错之后再写一次

fclose(fp);

if((fp=fopen(path_name,"r"))==NULL)

{

printf("fopen failed!\n");

return -1;

}

fread(read_buf,file_size,1,fp);

for(buf_count=0;buf_count<(file_size-1);buf_count++)

{

if(read_buf[buf_count]!=write_buf[buf_count])

{

printf("file name is %s:\n",path_name);

printf("write twice failed!\n");

fclose(fp);

return -1;

}

}

}

}

fclose(fp);

return 0;

}

int main(void)

{

int A_size,B_size;

A_size=B_size=0;

int A_fd,B_fd;

char *A_buf_read=NULL;

char *B_buf_read=NULL;

char *A_buf_write=NULL;

char *B_buf_write=NULL;

unsigned int iteation=0;

int ret;

A_fd=0;

A_fd=open("/home/A",O_RDONLY);

if(A_fd<0)

{

printf("open A faild!\n");

return -1;

}

A_size=lseek(A_fd,0,SEEK_END);

lseek(A_fd,0,SEEK_SET);

A_buf_write=(char *)malloc(A_size);

if(NULL == A_buf_write)

{

printf("A_buf_write malloc failed!\n");

close(A_fd);

return -1;

}

A_buf_read=(char *)malloc(A_size);

if(NULL == A_buf_read)

{

printf("A_buf_read malloc failed!\n");

close(A_fd);

return -1;

}

if(read(A_fd,A_buf_write,A_size)<0)

{

close(A_fd);

printf("read A file failed\n");

}

close(A_fd);

B_fd=0;

B_fd=open("/home/B",O_RDONLY);

if(B_fd<0)

{

printf("open B faild!\n");

return -1;

}

B_size=lseek(B_fd,0,SEEK_END);

lseek(B_fd,0,SEEK_SET);

B_buf_write=(char *)malloc(B_size);

if(NULL == B_buf_write)

{

printf("B_buf_write malloc failed!\n");

close(B_fd);

return -1;

}

B_buf_read=(char *)malloc(B_size);

if(NULL == B_buf_read)

{

printf("B_buf_read malloc failed!\n");

close(B_fd);

return -1;

}

if(read(B_fd,B_buf_write,B_size)<0)

{

printf("read B file failed\n");

close(B_fd);

}

close(B_fd);

system("date");//测试开始,开始读写nandflash

while(1)

{

if((ret=check_remain_space())<0)//检测磁盘空间,小于8M,要删除文件重新从A0,B0,A1,B1,A2,B2。。。。写

{

printf("check space wrong\n");

return -1;

}

else if(ret==1)

{

iteation=0;

}

if(write_read_nandflash(0,iteation,A_size,A_buf_write,A_buf_read)<0)//write A to nand and read it to compare

{

printf("write_read nand flash wrong\n");

return -1;

}

if(write_read_nandflash(1,iteation,B_size,B_buf_write,B_buf_read)<0)//write B

{

printf("write_read nand flash wrong\n");

return -1;

}

iteation++;

}

return 0;

}
如何测试nandflash可靠性

/*说明:测试nandflash的可靠性,有的时候nandflash写进去的内容会变位比如写进去1,可是存储的值变成了0,为了测试这种情况的频率写了下面的测试用例*/ /*nandflash挂载在/home/test目录下,通过不停的往test目录下写两个文件A,B(随便两个文件二进制文件都可以),写进去的文件名和顺序A0,B0,A1...

ZESTRON电子失效分析

电子失效分析是指对电子元件或系统进行系统调查,以确定失效原因。通过显微镜、光谱学和电气测试等技术,分析人员可以查明导致故障的缺陷或问题。此过程包括检查物理损坏、分析电气特性和进行环境测试以确定根本原因。电子故障分析在半导体制造...

NAND flash和NOR flash的区别详解

采用flahs介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。五、NAND flash和NOR flash的寿命(耐用性)在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND...

nor flash 和nand flash 的区别

另外由于NandFlash没有挂接在地址总线上,所以如果想用NandFlash作为系统的启动盘,就需要CPU具备特殊的功能,如s3c2410在被选择为NandFlash启动方式时会在上电时自动读取NandFlash的4k数据到地址0的SRAM中。如果CPU不具备这种特殊功能,用户不能直接运行NandFlash上的代码,那可以采取其他方式,比如好多使用Na...

Nand Flash硬件ECC是怎样实现的?

因为NAND FLASH的数据可靠性问题一般使用NAND FLASH都需要对其数据进行ECC校验。一般的用法是在写入NAND FLASH时在主数据区内写入正常数据,而住数据区数据的ECC校验码则写入Spare区。将住数据区数据读出时Spare区的ECC码也必须一起读出以便进行ECC校验及纠错。基本上若是读出数据后发现ECC校验失败则当前块必...

NAND flash和NOR flash的区别详解

1、接口差别 nor flash带有SRAM接口,有足够的地址引脚来寻址,可以很容易地存取其内部的每一个字节。nand flash使用复杂的I/O口来串行地存取数据,各个产品或厂商的方法可能各不相同。8个引脚用来传送控制、地址和数据信息。2、容量和成本不同 nand flash的单元尺寸几乎是NOR器件的一半,由于生产过程更...

NAND Flash和Nor Flash到底有什么区别

容量差别:Nand Flash容量要比Nor Flash大得多,Nand:8M-4GB.Nor:1-32MB,因此对于嵌入式设备,Nand可以作为U盘或SD存储介质,Nor可以用来存储程序,如果不太考虑速度,代码可以在其中运行。使用时间:Nand Flash是Nor Flash的十倍,Nand Flash是100万次擦写,Nor是10万次。数据可靠性:Flash器件内部都是...

nor flash和nand flash的区别

(6)可靠性和耐用性 -寿命(耐用性)在NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。NAND存储器除了具有10比1的块擦除周期优势,典型的NAND块尺寸要比NOR器件小8倍,每个NAND存储器块在给定的时间内的删除次数要少一些。-位交换 所有flash器件都受位交换现象的困扰。位真的...

NOR型flash vs NAND型flash

接口差异NOR有SRAM接口,寻址方便,而NAND则使用复杂I/O接口,操作块更大,类似硬盘管理,适用于数据密集型应用。容量和成本NAND由于生产过程简单,容量更大,成本更低,主要应用于数据存储,如CompactFlash、Secure Digital等。NOR则在小容量代码存储中占主导。可靠性和耐用性NAND的耐用性优于NOR,每块擦写...

Nand flashNAND特点

可靠性是使用闪存时需要考虑的关键因素。NAND的块擦写次数远高于NOR,且块尺寸小,删除次数少,具有更好的耐用性。NAND更常受位交换困扰,需配合错误探测/纠正算法。坏块处理上,NAND需要初始化扫描以标记坏块,而NOR则通过全部写1来擦除,时间差异大。NAND的使用更为复杂,需要驱动程序支持,如内存技术...

三星的系列NandFlash有什么区别

在一次读写中MLC有四种状态(以每Cell存取2bit为例),这就意味着MLC存储时要更精确地控制每个存储单元的充电电压,读写时就需要更长的充电时间来保证数据的可靠性。它已经不再是简单的开关电路,而是要控制四种不同的状态,这在产品的出错率方面和稳定性方面有较大要求,而且一旦出现错误,就会导致2倍...

可靠性测试属于功能测试吗 slc nand flash nand flash tlc spi nand flash dump nandflash 可靠性测试类型 可靠性测试项目 可靠性测试工具 可靠性测试方法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
文档文件夹可以删除吗? 文件夹中的文件能删除吗? 吃鸡进不去,重启也没用,开了加速器,如图 永劫无间用什么加速器好 好用的加速器推荐 PUBG加速器免费试用 亚服加速器推荐 吃鸡加速器选择 亚服国际服吃鸡加速器推荐 东芝2523ad提示维护怎么清除 请问清朝历皇帝顺序,开国皇帝到最后一个。还有就是年羹尧的妹妹叫什么... 这个外国小女孩是谁?附图 arm中断1秒,测试flash的读速度,应该怎么做 怎样检测有没有FLASH插件。如果没有到那里下载 北京私募基金公司注册条件/要求知乎 结婚登记什么日子最好 如何检测flash坏块 关于朝鲜族文化特色的素材谁有? 请问怎么对单片机内部flash进行坏块检测? 朝鲜族古代有哪些名人? 怎么检查电脑flash是否能用 我母亲是北朝鲜人父亲是中国人 我怎么把户口改成朝鲜族 日元和韩元钱币上的人像都是些谁啊? 第四套人民币人物是什么民族? 麻烦韩国或朝鲜族的朋友,为我的韩国男生取名提出建议 成都公积金贷款需要什么材料谁知道该怎么处理 apink朴初珑详细资料,谢谢! 成都市公积金贷款手续费需要多少 微软电脑surface book出现黑屏是什么状况 朝鲜族的历史人物 成都公积金贷款需要哪些流程 一角、两角纸币上的人是哪个民族的? 登记结婚那些日子好 北京有那些私募基金公司。。 请问今年和明年结婚登记的黄道吉日可以是哪些 如何js检测flash是否被屏蔽插件屏蔽并给出提示 北京可以注册私募公司吗 办理结婚证,选择什么日子好啊?求高手指点,谢谢! 如何在网页上检测访客的flash版本,并提示下载? 国内做私募基金备案麻烦吗?我是北京的,需要准备什么资料? 2014年 领结婚证 有什么好日子 页面里 如何检测系统有没有安装flashplayer? 在北京注册私募股权投资基金管理公司的注册资本要求必须是3000万吗?除此之外,还有其他硬性要求吗? 在北京的一个朋友想要找代理公司做私募基金管理人备案,让我帮着问一下需要什么资料啊? 现在还能注册私募基金公司吗? 为什么别人打微信电话给我 会显示在忙线中 但是我没有在通话 好几次这样了?_问一问 北京办理私募基金牌照需要什么条件? 私募基金备案管理人备案登记注册时间 栗子和牛肉能一起吃吗? 牛肉和板栗可以一起吃吗? 牛肉是否可以与栗子一起吃? 板栗能和牛肉一起吃吗?