适配新的 nand flash
以芯存 XCSP4AXPK-IT为例
1. 修改两个路径的 ID 表
T153/brandy/brandy-2.0/u-boot-bsp/drivers/mtd/awnand/spinand/physic/id.c
T153/bsp/drivers/mtd/awnand/spinand/physic/id.c
添加结构体定义
struct aw_spinand_phy_info xincun[] = {
{
.Model = "XCSP4AXPK-IT",
.NandID = {0x6C, 0xB1, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00},
.DieCntPerChip = 1,
.SectCntPerPage = 8,
.PageCntPerBlk = 64,
.BlkCntPerDie = 2048,
.OobSizePerPage = 256,
.OperationOpt = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM | SPINAND_DUAL_READ,
.MaxEraseTimes = 100000,
.EccType = BIT2_LIMIT1_ERR2_LIMIT3,
.EccProtectedType = SIZE16_OFF0_LEN16,
.BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
.ecc_status_shift = ECC_STATUS_SHIFT_4,
},
{
.Model = "XCSP2AAPK-IT",
.NandID = {0x6c, 0xb0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
.DieCntPerChip = 1,
.SectCntPerPage = 8,
.PageCntPerBlk = 64,
.BlkCntPerDie = 2048,
.OobSizePerPage = 256,
.OperationOpt = SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM | SPINAND_DUAL_READ,
.MaxEraseTimes = 100000,
.EccType = BIT2_LIMIT1_ERR2_LIMIT3,
.EccProtectedType = SIZE16_OFF0_LEN16,
.BadBlockFlag = BAD_BLK_FLAG_FIRST_2_PAGE,
.ecc_status_shift = ECC_STATUS_SHIFT_4,
},
};
static struct spinand_manufacture spinand_factory[] = {
SPINAND_FACTORY_INFO(XINCUN_MANUFACTURE, "XinCun", xincun),
};
...
case XINCUN_MANUFACTURE:
*m = "XinCun";
break;
...配置参数需要严格按照芯片手册的参数设置
| 字段 | 含义说明 | 配置值 |
|---|---|---|
.Model |
SPI NAND 型号名称,对应 4Gb SPI NAND Flash | "XCSP4AXPK-IT" |
.NandID |
Flash ID 匹配值,驱动通过 Read ID 识别芯片;0x00 表示该字节不参与匹配 |
{0x6C, 0xB1, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00} |
.DieCntPerChip |
每颗 Chip 包含 1 个 Die,属于单 Die 结构 | 1 |
.SectCntPerPage |
每页包含 8 个扇区,按 256 字节/扇区计算,主数据区为 2048 字节 | 8 |
.PageCntPerBlk |
每个 Block 包含 64 个 Page,单 Block 主数据区约 128KB | 64 |
.BlkCntPerDie |
每个 Die 包含 2048 个 Block,总容量约 512MB / 4Gb | 2048 |
.OobSizePerPage |
每页 OOB/Spare 区大小为 256 字节,用于存放 ECC、坏块标记等 | 256 |
.OperationOpt |
支持四线读、四线写和双线读,驱动据此选择对应命令和时序 | SPINAND_QUAD_READ | SPINAND_QUAD_PROGRAM | SPINAND_DUAL_READ |
.MaxEraseTimes |
最大擦写次数 10 万次,属于 SLC NAND 常见寿命指标 | 100000 |
.EccType |
ECC 能力/状态映射类型,通常表示可纠正 1bit 错误,超过阈值则判为不可纠正 | BIT2_LIMIT1_ERR2_LIMIT3 |
.EccProtectedType |
OOB 区 ECC 保护布局:从偏移 0 开始,以 16 字节为单元,保护 16 字节 | SIZE16_OFF0_LEN16 |
.BadBlockFlag |
坏块标志位于每个 Block 的前 2 页,扫描坏块时会检查这两页 | BAD_BLK_FLAG_FIRST_2_PAGE |
.ecc_status_shift |
ECC 状态寄存器值需右移 4 位,才能解析出正确的 ECC 错误等级 | ECC_STATUS_SHIFT_4 |
2. ubi 打包参数
由于 XCSP4AXPK-IT 硬件规格 Page Size 为 4096,ubi 打包参数需要严格匹配,否则无法烧录。
在根目录修改构建配置 .buildconfig
export LICHEE_NAND_PAGE_SIZE=4096修改后需要重新运行 ./yz_build.sh config 配置编译参数
- ypt153evb 512MB flash 使用 XCSP4AXPK-IT ,256MB 使用 XCSP2AAPK-IT,会在 yz_build.sh 自动修改这个参数
作者:陈柏林 创建时间:2026-10-20 16:51
最后编辑:陈柏林 更新时间:2026-11-05 14:56
最后编辑:陈柏林 更新时间:2026-11-05 14:56