全志SDK - 4. Flash支持
全志SDK - 1. 系统编译
全志SDK - 2. PC与开发板连接方式
全志SDK - 3. 系统配置(1)
全志SDK - 3. 系统配置(2)
全志SDK - 4. Flash支持
全志平台,选择Flash时,尽量选用 支持列表 中的那些,否则后续非常麻烦!
Flash不支持的话,系统无法烧录进去,第一步就行不通了!
Flash调试的一般步骤为:
- 设置SPI支持
- 打最新的补丁,以便支持拓展Flash列表
- 增加Flash支持:uboot支持和Kernel支持
1. SPI支持
SPI (Serial Peripheral Interface,串行外设接口),是最常用的Flash有CPU连接总线!
注意,有的Flash可能使用的不是SPI (Serial Peripheral Interface,串行外设接口) 接口,这个要根据接口进行配置,不可以乱来!
具体的配置,参见:《SPI总线驱动使用说明》
2. Flash支持 - 方案1
Uboot目录: 快捷命令:cboot
lichee/brandy-2.0/u-boot-2018/drivers/sunxi_flash/nand/common1/spinand/spinand_ids.c
Kernel目录: 快捷命令:ckernel
lichee/linux-4.9/modules/nand/sun8iw18p1/spinand/spinand_ids.c
在以上文件的ext_spinand_idts 结构体中添加待适配的物料ID信息,如我的R328板子:
{
/* XT26G01C */
.NandID = {0x0B, 0x11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
.DieCntPerChip = 1,
.SectCntPerPage = 4,
.PageCntPerBlk = 64,
.BlkCntPerDie = 1024,
.OperationOpt = NAND_DUAL_READ | NAND_QUAD_READ | NAND_MULTI_READ |
NAND_MULTI_PROGRAM | NAND_MAX_BLK_ERASE_CNT,
.AccessFreq = 100,
.SpiMode = 0,
.pagewithbadflag = FIRST_PAGE, /* the 1st page */
.spi_nand_function = &spinand_function,
.MultiPlaneBlockOffset = 1,
.MaxEraseTimes = 65000,
.EccType = BIT4_LIMIT5_TO_8_ERR15,
.EccProtectedType = SIZE16_OFF0_LEN16,
.ecc_status_shift = ECC_STATUS_SHIFT_4,
}
ID表具体信息参考文档: 《NAND物料调试指南v1.11》
3. Flash支持 - 方案2
drivers/mtd/aw-spinand/physic/id.c
(包括 kernel & uboot)中,加入对应的类别,如下所示:
struct aw_spinand_phy_info dosilicon[] = {
{
.Model = "DS35X1GAXXX",
.NandID = {0xe5, 0x71, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
.DieCntPerChip = 1,
.SectCntPerPage = 4,
.PageCntPerBlk = 64,
.BlkCntPerDie = 1024,
.OobSizePerPage = 64,
.OperationOpt = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM | SPINAND_DUAL_READ,
.MaxEraseTimes = 65000,
.EccType = BIT2_LIMIT1_ERR2,
.EccProtectedType = SIZE16_OFF4_LEN4_OFF8,
.BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
},
};
如下图我的添加: