SAMA5D27-移植8G NAND Flash(SAM-BA修改)
1 概述
主控板采用Microchip 的SAMA5D27处理器。由于项目新需求,需要将NAND Flash型号(Micron,MT29F4G08ABAEAWP,4Gb)更换为旺宏-8G NAND Flash型号:MX60LF8G28AD。
需要适配修改的地方:
- PMECC重新计算;
- 修改镜像包中的 .qml文件,修改pmecc的数值;
- 修改sam-ba工具,samba扫描时将8G flash识别成了4G大小,修改文件将大小修改为固定的8G,这样在擦除时就是全盘擦除。
- 设备树NAND节点修改,修改分区大小。
2 PMECC计算
首先来看NAND Flash的相关参数
A5D2的PMECC模块可以校正每个扇区(512字节或1024字节)2,4,8,12,24 bits的错误。这里使用的NAND 为8-bit ECC per (512+32) Byte。
Page size:4096 byte
ECC Sector size:512 byte
每页扇区数:4096/512=8
空闲区域OOB:256 byte,也就是Page size(4096+256)byte里面的256。
下面是Microchip给出的校正能力对照表。
依据Microchip给出的对照表,8 bits的校正能力,512 Byte的扇区,需要13 bytes 的PMECC编码数据。
所以,每一页需要 8*13=104 bytes的PMECC编码数据。
空闲区域第一个ECC byte偏移量:256-104=152 byte (0x10011000)
根据芯片手册中,PMECC寄存器的每一位含义,计算如下。
(Datesheet Page 156)
Bits 31:28 – key[3:0]:固定值0xC (1100b);
Bits 27:未定义,为0;
Bits 26:18 – eccOffset[8:0]: 上面计算得出空闲区域第一个ECC byte偏移量:256-104=152 byte (0x98,010011000b);
Bits 17:16 – sectorSize[1:0]:这里是512 bytes,也就是0x0(00b);
Bits 15:13 – eccBitReq[2:0]:这里是8-bit ECC,也就是0x2(010b)
Bits 12:4 – spareSize[8:0]: 这里是OOB大小,256 byte,也就是0x98(100000000b)
Bits 3:1 – nbSectorPerPage[2:0]:上面计算得到每页扇区数:4096/512=8,这里是用指数形式表示,2^3=8,这里就是0x3(011b)
Bit 0 – usePMECC: 这里就是0x1(1b)
整个32bit表示为(1100 0010 0110 0000 0101 0000 0000 0111)
计算后用十六进制表示为:0xc2605007
3 烧写脚本QML script修改
4 SAM-BA工具修改
1) 路径:E:\sam-ba_3.2.1\qml\SAMBA\Applet.qml
由于samba在扫描时老是将8Gb flash识别成了4Gb大小,修改文件将NAND大小修改为固定的8G,不让这样在擦除时就是全盘擦除。
初始化时打印NAND总大小,页数和页大小:
初始化时会调用 canInitialize() 函数,在canInitialize() 函数中,直接将扫描NAND大小的函数屏蔽了。
另外,重新自定义了变量 memoryPages 和 memorySize 。等于是全局变量,固定了大小,固定了页数为 262144,固定了NAND总大小为1073741824字节。
总大小:memorySize: 1073741824字节 = 8Gb(810241024*1024/8)
页数:memorySize / pageSize = 1073741824/4096 = 262144
5 设备树修改
\linux-at91\arch\arm\boot\dts\at91-sama5d27_som1_ek.dts
设备树主要是修改分区大小,最后一个文件系统的分区大小,前面存放BOOT和内核的分区大小不变。
附:其他调试记录
使用SAM-BA读写:
8G-NAND
1)先往0x0地址写:
sam-ba -p serial -b sama5d2-ptc-ek -a nandflash -c erase::0x40000 -c writeboot:at91bootstrap.bin
2)然后从0x0地址再读出来:
读1024个字节(0:1024)
sam-ba -p serial -b sama5d2-ptc-ek -a nandflash -c read:test.bin:0:1024
通过读写操作,可以判断文件是否可以正常写入NAND并读出来。
帮助命令:sam-ba -p serial -b sama5d2-ptc-ek -a nandflash:help
SAMA5D27-移植8G NAND Flash(SAM-BA修改)相关推荐
- ARM9 2410移植之Nand flash 驱动的编写与移植
1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...
- [转]ARM9 2410移植之Nand flash 驱动的编写与移植
1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...
- Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写
很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot ...
- 第六章、Tiny4412 U-BOOT移植六 Nand Flash源码分析
一.U-Boot参考源码 NandFlash的初始化代码我们放在board/samsung/tiny4412/lowlevel_init.S ,这一段代码是三星SMDK4212中没有提供的,所以我们需 ...
- Linux MTD架构下的nand flash驱动详解
转载自:http://blog.csdn.net/wang_zheng_kai/article/details/18988521 有了前面的基础(Nandflash详解:https://blog.cs ...
- 采用NAND Flash设计存储设备的挑战在哪里?
对于搞电子设计的工程师而言,NAND Flash是再熟悉不过的东西了.在电子设计的时候,NAND Flash通常作为大容量存储介质,可以类比为PC系统中的磁盘.在电子设计领域,对于小容量存储,还可以采 ...
- NAND FLASH学习笔记之MTD下nand flash驱动(二)
在这里补充这一片是为了更好的理解上一篇,补充的内容包括:MTD下NAND的布局中几个重要文件的诠释和MTD涉及的几个重要的结构体(更好的理解接口) 一.内核中的NAND代码布局 在Linux 内核中, ...
- jz2440开发板修改UBOOT支持NAND FLASH
很多天没有看嵌入式的东西了,今天来看一下,继续之前移植uboot到jz2440开发板.今天我们来实现Uboot支持NAND FLASH. 在之前的文章里(点击连接查看之前的记录),我们为了编译通过把N ...
- Nand flash驱动的编写与移植
1 Nand flash工作原理 S3C2410板的Nand Flash支持由两部分组成:Nand Flash控制器(集成在S3C2410 CPU)和Nand Flash存储 芯片(K9F12 ...
最新文章
- 3dsMax插件V-Ray建筑可视化三维渲染细节技术学习教程
- 【译】MongoDb vs Mysql—以NodeJs为例
- 为什么有时打不开爬取到的图片
- Matplotlib 中文用户指南 4.6 编写数学表达式
- 牛客 - 红蓝图(克鲁斯卡尔重构树的dfs序上建主席树)
- 音视频技术开发周刊(第122期)
- linux内核那些事之 VMA Gap
- SpringCloud Hoxton版微服务- OpenFeign实现服务调用
- Insert增加数据
- php 父进程id,PHP pcntl_fork创建进程,复制父进程内存空间上下文
- Codeforces1005E1 - Median on Segments (Permutations Edition)(中位数计数)
- IOTOS物联中台对接海康安防平台(iSecure Center)门禁系统
- 哈工大同义词词林扩展版-资源分享
- 易班php,易班PHP-SDK开发
- python3简单代码_【Python】Python3纯代码极简教程
- ARM发布Cortex-X1,是为了向苹果自研A系列处理器发起冲击吗?
- 互联网快讯:菜鸟加码全球物流网络布局;猿辅导、掌门教育聚焦素质教育
- NOIp2017——追求那些我一直追求的
- java基本语法——运算符
- 区分阿里云系统盘和数据盘
热门文章
- QT笔记——Q_Q 和Q_D 学习
- html:checkbox无法uncheck
- 清朝后宫佳丽的真实照片
- python内置模块re_python内置模块[re]
- 调试AKM4432 DAC驱动问题记录
- 谈女人 作者:张爱玲
- NKOI 3590 循环赛日程表
- jtest准考证打印
- 老挑毛u盘一键装系统计算机意外地,揭谜一键Ghost的“恶”事 大白菜、老毛桃、通用都不干净...
- 2022-2028全球与中国工程项目管理软件市场现状及未来发展趋势