SAMA5D27-移植8G NAND Flash(SAM-BA修改)

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

heat.huang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值