NAND flash替换问题
原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已经跑飞了...
问题分析:
![](/assets/blank.gif)
![](/assets/blank.gif)
/*
* 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替换问题相关推荐
- linux提高nand速度,linux-2.6.31.1内核支持Nand Flash
linux-2.6.31.1支持Nand Flash 目的:使NandFlash驱动同时支持64M, 256M或更高容量的NandFlash 将linux内核解压在/opt目录下,修改内核源码文件,添 ...
- Nand Flash基础知识与坏块管理机制的研究
概述 Flash名称的由来,Flash的擦除操作是以block块为单位的,与此相对应的是其他很多存储设备,是以bit位为最小读取/写入的单位,Flash是一次性地擦除整个块:在发送一个擦除命令后,一次 ...
- OK6410 tftp下载内核、文件系统以及nand flash地址相关整理、总结
飞凌官方提供了一键下载烧写linux的方式,相对来说比较方便,但是对于开发来说不够灵活,因此这篇文章把tftp相关的点介绍一下,整理下其中遇到的一些问题. 一键烧写本质上是启动位于SD卡中的Uboot ...
- jz2440开发板修改UBOOT支持NAND FLASH
很多天没有看嵌入式的东西了,今天来看一下,继续之前移植uboot到jz2440开发板.今天我们来实现Uboot支持NAND FLASH. 在之前的文章里(点击连接查看之前的记录),我们为了编译通过把N ...
- uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)
项目开源地址:https://github.com/Mculover666/uboot-jz2440 0. 教程完整目录 00 - 嵌入式Linux系统中Bootloader的作用和基本运行原理 01 ...
- Linux MTD架构下的nand flash驱动详解
转载自:http://blog.csdn.net/wang_zheng_kai/article/details/18988521 有了前面的基础(Nandflash详解:https://blog.cs ...
- 嵌入式linux之Nor/Nand FLASH的读写
http://www.cnblogs.com/tureno/articles/2708461.html 所谓Flash,是内存(Memory)的一种,但兼有RAM和ROM 的优点,是一种可在系统(In ...
- NAND FLash基础概念介绍
@TOC一.引脚介绍 1. 命令.地址.数据都通过8个I/O口传输 2. 写命令.地址.数据时,都需要将WE.CE信号同时拉低 3. 数据在WE信号的上升沿被NAND Flash锁存 4. 命令锁存信 ...
- NOR和NAND Flash
三星终于从爆炸门中走了出来,受到来自DRAM 与NAND 价格上涨带动,三星把Intel从盘踞了14年的半导体王座上赶了下来,风光可谓一时无两.虽然下半年市况预料将会修正,但今年整体DRAM 仍可较去 ...
最新文章
- R语言将多个dataframe导出到excel的多个表单(sheet)实战
- 动态规划解决方案最长公共子序列问题(开启)
- 中山市交通集团热备容灾项目成功案例
- 机器学习笔记(十六)强化学习
- mysql字符串区分大小写么_mysql字符串区分大小写的问题-阿里云开发者社区
- 初识React Native虚拟DOM节点及API
- 来自Yang Terry的关于SAP CRM One Order事件回调机制的分享
- 程序员必备技能-科学砍需求 1
- pytorch迁移学习--模型建立的代码实现
- 小学生python游戏编程7----角色精灵定义
- 详解如何设计一套健康体检信息管理系统
- 微积分-指数函数求导
- 数据字典的主要作用是什么?
- 解决THINKBOOK 14安装windows系统不识别固态硬盘的问题
- MySQL 8.0的预研清单和计划
- Python数据类型—数值型
- 比尔盖茨的15个预言,如今全已成真
- 从后端到前端的简陋博客开发
- linux c 开发数据,Linux c 开发
- 青云QingCloud黄允松:关于云计算未来的三个预测