1 概述

    主控板采用Microchip 的SAMA5D27处理器。由于项目新需求,需要将NAND Flash型号(Micron,MT29F4G08ABAEAWP,4Gb)更换为旺宏-8G NAND Flash型号:MX60LF8G28AD。
    需要适配修改的地方:

  1. PMECC重新计算;
  2. 修改镜像包中的 .qml文件,修改pmecc的数值;
  3. 修改sam-ba工具,samba扫描时将8G flash识别成了4G大小,修改文件将大小修改为固定的8G,这样在擦除时就是全盘擦除。
  4. 设备树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,010011000‬b);
     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(‭100000000‬b)‬
     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修改)相关推荐

  1. ARM9 2410移植之Nand flash 驱动的编写与移植

    1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...

  2. [转]ARM9 2410移植之Nand flash 驱动的编写与移植

    1 Nand flash 工作原理 S3C2410 板的Nand Flash 支持由两部分组成:Nand Flash 控制器(集成在S3C2410 CPU)和Nand Flash 存储 芯片(K9F1 ...

  3. Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写

    很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-boot ...

  4. 第六章、Tiny4412 U-BOOT移植六 Nand Flash源码分析

    一.U-Boot参考源码 NandFlash的初始化代码我们放在board/samsung/tiny4412/lowlevel_init.S ,这一段代码是三星SMDK4212中没有提供的,所以我们需 ...

  5. Linux MTD架构下的nand flash驱动详解

    转载自:http://blog.csdn.net/wang_zheng_kai/article/details/18988521 有了前面的基础(Nandflash详解:https://blog.cs ...

  6. 采用NAND Flash设计存储设备的挑战在哪里?

    对于搞电子设计的工程师而言,NAND Flash是再熟悉不过的东西了.在电子设计的时候,NAND Flash通常作为大容量存储介质,可以类比为PC系统中的磁盘.在电子设计领域,对于小容量存储,还可以采 ...

  7. NAND FLASH学习笔记之MTD下nand flash驱动(二)

    在这里补充这一片是为了更好的理解上一篇,补充的内容包括:MTD下NAND的布局中几个重要文件的诠释和MTD涉及的几个重要的结构体(更好的理解接口) 一.内核中的NAND代码布局 在Linux 内核中, ...

  8. jz2440开发板修改UBOOT支持NAND FLASH

    很多天没有看嵌入式的东西了,今天来看一下,继续之前移植uboot到jz2440开发板.今天我们来实现Uboot支持NAND FLASH. 在之前的文章里(点击连接查看之前的记录),我们为了编译通过把N ...

  9. Nand flash驱动的编写与移植

    1 Nand flash工作原理     S3C2410板的Nand Flash支持由两部分组成:Nand Flash控制器(集成在S3C2410 CPU)和Nand Flash存储 芯片(K9F12 ...

最新文章

  1. 3dsMax插件V-Ray建筑可视化三维渲染细节技术学习教程
  2. 【译】MongoDb vs Mysql—以NodeJs为例
  3. 为什么有时打不开爬取到的图片
  4. Matplotlib 中文用户指南 4.6 编写数学表达式
  5. 牛客 - 红蓝图(克鲁斯卡尔重构树的dfs序上建主席树)
  6. 音视频技术开发周刊(第122期)
  7. linux内核那些事之 VMA Gap
  8. SpringCloud Hoxton版微服务- OpenFeign实现服务调用
  9. Insert增加数据
  10. php 父进程id,PHP pcntl_fork创建进程,复制父进程内存空间上下文
  11. Codeforces1005E1 - Median on Segments (Permutations Edition)(中位数计数)
  12. IOTOS物联中台对接海康安防平台(iSecure Center)门禁系统
  13. 哈工大同义词词林扩展版-资源分享
  14. 易班php,易班PHP-SDK开发
  15. python3简单代码_【Python】Python3纯代码极简教程
  16. ARM发布Cortex-X1,是为了向苹果自研A系列处理器发起冲击吗?
  17. 互联网快讯:菜鸟加码全球物流网络布局;猿辅导、掌门教育聚焦素质教育
  18. NOIp2017——追求那些我一直追求的
  19. java基本语法——运算符
  20. 区分阿里云系统盘和数据盘

热门文章

  1. QT笔记——Q_Q 和Q_D 学习
  2. html:checkbox无法uncheck
  3. 清朝后宫佳丽的真实照片
  4. python内置模块re_python内置模块[re]
  5. 调试AKM4432 DAC驱动问题记录
  6. 谈女人 作者:张爱玲
  7. NKOI 3590 循环赛日程表
  8. jtest准考证打印
  9. 老挑毛u盘一键装系统计算机意外地,揭谜一键Ghost的“恶”事 大白菜、老毛桃、通用都不干净...
  10. 2022-2028全球与中国工程项目管理软件市场现状及未来发展趋势