作者| Peng.Xiong
本期技术专题将介绍SigmaStar 平台新增SPI Nand/Nor 的方法(非One bin)。
一、SPI Nand 如何添加
对于Nand 的添加主要需要添加两个地方,一个是Flash Tool 中需要添加,目的是使得Tool 能识别到板载的Flash,另外一个是SDK 中需要添加,目的是在正常运行的时候能够更新sni 信息;
以上两个的地方的添加信息是完全一致的,下面以某一款Flash(GD5F1GQ4UEYIH)为例来说明如何添加,首先打开DS:
找到Device ID,一般包含MID 和DID,其中DID 一般是1 个或者是2 个;下面看下Flash 的内部组成:
从内部构造可以得到很多信息,OOB 的大小是64 字节,一个Page 的大小是2048 字节,一个Block 的大小是64Page,一个Device 的大小是1024 个Block;另外还需要注意的是有一些大容量的Flash 有两个Device/Plane,如下是一个2 Plane 的Flash:MT29F2G01ABAG
有了上面的信息,下面使用SpiNandInfoEditor_v1.0.2.exe 打开SPINANDINFO.sni 来进行添加:
ID Byte Count:表示ID 的数目,对应于ID Bytes,从DS 可以看出有2 个ID 一个是0xC8 一个是0xD9
Spare Size:表示OOB 的size,从DS 可以看出是64 字节,但是注意有的Flash 是128字节
Page Size:表示页的大小,从DS 可以看出是2048 字节
Page Cnt:表示Block 的大小,从DS 可以看出是64 Page 的数目
Blk Cnt:表示一个Device 的大小,从DS 可以看出是1024 Block 的数目
Sector Size:表示扇区的大小,默认都是512
Max Freq:表示SPI Nand 的clk 参考规格书写,默认54M 最低,不能高于DS 标注的最大值
其他值默认设置成0
然后最后还有Vender Name 以及Flash 的Name:
对于前面提到的2Plane 的Flash 参考DS,Blk Cnt 表示两个Plane 的总和2048,并且需要指明Plane Count 是2;
按照以上添加方法如果设备起不来,联系原厂查询原因;成功添加后会看到uboot 和kernel 有类似如下打印:
二、SPI Nor 如何添加
对于Nor 的添加主要需要添加两个地方,一个是Flash Tool 中需要添加,目的是使得Tool 能识别到板载的Flash,另外一个是uboot 和kernel 中需要添加相应的code:
下面看下实际一款Flash(GD25Q64E,8MB)具体添加步骤,看下DS:
同前面Nand 首先找到Device ID:可以看到有3 个0xC8 0x40 0x17
其中Blk Size:固定0x10000
Blk Cnt:十进制128 十六进制0x80 因此此Flash 是0x80 * 0x10000 = 8MB
其他参数:固定
再看下代码中的修改:目前的代码同样只关心3 个参数:ID 以及 Blk Cnt Flash的容量大小,直接模仿已经添加过的Flash 新增即可,如下图:
以上uboot 和kernel 是一样的方式,模仿添加即可,遇到不能启动的时候联系原厂确认;成功添加以后会在uboot 和kernel 中看到类似如下打印,这里需要注意的是Flash的size 是否正确:
三、如何确认某一款Flash 是否支持?
对于SPI Nand 首先需要确认两地方,一个是Flash Tool 中的SPINANDINFO.sni 是否存在此Flash,一个是SDK 中的SPINANDINFO.sni 是否存在此Flash,使用SpiNandInfoEditor_v1.0.2.exe 分别打开以上两个sni 确认,确认方法首先打开Flash的DS 找到Device ID,根据Device ID 查找此ID 是否在sni 中,注意一定要是用ID确认不要使用名称去确认,名称有时候不一定准确;
对于SPI Nor 是要确认3 个地方, 一个是Flash Tool 中的SPINORINFO.nri 是否存在此Flash,一个是SDK 中的uboot 和kernel 是否存在此Flash,确认方法首先打开Flash的DS 找到Device ID,根据Device ID 查找此ID 是否在sni/uboot/kernel 中,注意一定要是用ID 确认不要使用名称去确认,名称有时候不一定准确;
我们平台较多,彼此之间Flash 并不同步,有时候平台1 加了此Flash,但是平台2 没加此Flash,但是Flash 信息是一样的,因此支持客户的工程师可以去多个平台去查找copy同步到客户平台。
》》原帖地址
End.
往期回顾
iperf3工具支持及常用测试指令说明
UVC使用指南(上)
如何单独编译kernel以及替换升级kernel image?
如何针对CPU和内存进行压测,确认数据一致性
SSD21X/22X如何支持USB转Ethernet?
扫码进入论坛
原厂答疑|产品选型|官方资源
扫码咨询客服
SDK下载|芯片、开发板购买