NAND flash替换问题
来源:互联网 发布:淘宝网红小虎牙模特 编辑:程序博客网 时间:2024/05/22 09:25
原flash: SAMSUNG K9K8G08U0B
新flash:SPANSION S32ML08G201TF100
简单介绍:
K9K8G08U0B与 S32ML08G201TF100很相似,都是8Gbits,页大小都是2048bytes
但K9K8G08U0B的SPARE AREA为每页64B,S32ML08G201TF100为128B
问题是这样的:
1.生产了50块板,这些板都是用的新flash,但程序烧录的却是老flash的程序
板子全都起不来
2.板子起不来,就想着通过JTAG(BDI3000)引导ram版的uboot,然后将程序写入nand,但bdi检查不通过,表示cpu已经跑飞了...
问题分析:
/** COPYRIGHT NOTICE* Copyright (C) 2016 HuaHuan Electronics Corporation, Inc. All rights reserved** Author :Kevin_fzs* File Name :/home/kevin/works/projects/ACCUMULATION/C_Program/addOob/addoob.c* Create Date :2016/07/21 16:18* Last Modified :2016/07/21 16:18* Description :*/#include <stdio.h>#include <stdlib.h>#include <string.h>int main(int argc, char *argv[]){ FILE *fd1, *fd2; char new[70] = {0}, *buf = NULL; int len = 0; if(argc<2) { printf("Please input pof name"); return 0; } printf("file is %s\n",argv[1]); sprintf(new, "%s-spansion.filebin",argv[1]); if((fd1 = fopen(argv[1],"rb"))==NULL) { printf("open %s error\n", argv[1]);; return 0; } if((fd2 = fopen(new,"wb"))==NULL) { printf("open %s error\n", new);; return 0; } printf("processing..\n"); if(NULL == (buf = malloc(2048+200))) { printf("malloc failed..\n"); return 0; } memset(buf, 0xff, sizeof(buf)); while((len = fread(buf, 1, (2048+64), fd1))>0) { memset(buf+(2048+64), 0xff, 64); fwrite(buf, 1, (2048+128), fd2); memset(buf, 0xff, sizeof(buf)); } free(buf); fclose(fd1); fclose(fd2); printf("OK..\n"); return 0;}
关于新flash芯片SPANSION S32ML08G201TF100,烧录进程序后,设备无法启动问题
问题分析
芯片特性差异:
老芯片 SAMSUNG K9K8G08U0B 的PAGE大小为 (2048+64) bytes
新芯片S32ML08G201TF100的PAGE大小为(2048+128) bytes
差异部分为SPARE AREA区域,也就是存放ECC校验的区域
CPU方面仍然按(2048+64) bytes大小提取程序,烧录器按(2048+128) bytes烧录
导致程序烧录进去后按每个PAGE向前移动64 bytes,程序乱了板子也就起不来了。
解决办法
按照新芯片的特性,将提取到的程序在每(2048+64) bytes后填充64bytes的校验,补齐到(2048+128) bytes。经过特殊处理后的程序验证通过
注意:新老芯片页大小不同,最终的离线烧录程序不同
由于已经烧录过的芯片,bdi3000无法识别,只能将芯片取下,重新烧录后,再将芯片焊上
烧录器配置
烧录时间:烧录一块芯片的时间大约为25秒
烧录器配置:
器件配置字:
- NAND flash替换问题
- NAND FLASH启动问题
- nand flash无盘符问题
- Hynix Nand Flash WP问题
- NAND Flash启动的问题
- NAND Flash启动的问题
- NOR FLASH 和NAND FLASH 问题
- nand flash从1.8V替换为3.3v
- STi7105用nand flash启动的问题
- 关于从NAND Flash启动的问题
- 关于从NAND Flash启动的问题
- 关于从NAND Flash启动的问题
- 关于从NAND Flash启动的问题
- nand flash bad block 导致的问题
- NAND FLASH制作YAFFS文件系统问题记录
- Nand flash读写范围的问题
- Nand flash读写范围的问题
- linux Nand Nor Flash驱动问题整理
- HDU 4431 Mahjong(天津赛区亚洲区) 模拟题,方法很重要
- Lua闭包的详解
- poj 2411 Mondriaan's Dream
- 使用XCode6.0.1将Cocos2d-x3.1工程打包ipa(支持iOS8)
- Servlet
- NAND flash替换问题
- 关于iOS 各个iPhone 尺寸图标的适配
- 使用MYSQL命令直接导入导出SQL文件
- [编写高质量iOS代码的52个有效方法](四)接口与API设计(上)
- java中位运算问题
- java的序列化和反序列化
- pku暑期训练3filp game
- java对象转型
- 求Sn=a+aa+aaa+aaaa+aaaaa的前n项之和,其中a是一个数字,例如:例如:n=5,a=2时:计算:2+22+222+2222+22222