电子产业一站式赋能平台

PCB联盟网

搜索
查看: 244|回复: 0
收起左侧

J-Flash在Micron Flash固定区域下载校验失败的故事

[复制链接]

359

主题

364

帖子

2887

积分

三级会员

Rank: 3Rank: 3

积分
2887
发表于 2022-10-29 20:04:00 | 显示全部楼层 |阅读模式
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家讲的是一个关于Segger J-Flash在Micron Flash固定区域下载校验失败的故事
! _1 K  b& W' i; \痞子衡最近在支持一个 i.MXRT1170 欧美客户,客户项目里选用了来自 Micron 的四线 NOR Flash - MT25QL256ABA8E12-0AAT 作为启动设备,一般读写倒是没有问题,但是在 Segger J-Flash 下烧写遇到了特定区域内校验失败的问题。6 m) R6 i5 o5 g
从痞子衡过往丰富的 Flash 支持经验来看,亚太区客户一般选用 ISSI(芯成)/Winbond(华邦)/MXIC(旺宏)/GigaDevices(兆易创新) 的 Flash 比较多,痞子衡对这些厂商 Flash 可以说是门清了。这个欧美客户选用的是痞子衡不太熟的 Micron(镁光) 产品,借着这个问题,痞子衡带大家一起稍微深入地了解下 Micron Flash 产品:
4 j9 s, Q. \1 J6 @一、引出客户问题首先是复现下客户的问题,痞子衡找了块 MIMXRT1170-EVK 开发板,将板载其他厂商 Flash 换成这颗 MT25QL256ABA8E12-0AAT(因为是 T-PBGA24 封装,所以需要放到原来的 OctalFlash 位置 - U21),然后将 \SDK_2.11.1_MIMXRT1170-EVK\boards\evkmimxrt1170\driver_examples\flexspi
6 N! P# J2 O- b& L# o3 Wor\polling_transfer 例程稍作适配性修改,主要是将 customLUT 里的命令表按 Micron 数据手册命令表做调整(全用了四字节地址命令),然后跑了一下例程发现基本的 Flash 读写擦操作没有问题(默认操作的是 0x14000 处的 Sector),这表明硬件修改没有问题。
2 T4 k. p" ~3 n+ N6 @- wconst uint32_t customLUT[CUSTOM_LUT_LENGTH] = {. z) q( u, t. _
    /* Fast read quad mode - SDR */
% A2 L; g) a; R5 b; B    [4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD] =
# B/ z, }! p* _        FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,       kFLEXSPI_1PAD, 0xEC, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_4PAD, 0x20),
" }  W/ [* t9 \3 g, Q1 }: J+ ?    [4 * NOR_CMD_LUT_SEQ_IDX_READ_FAST_QUAD + 1] =
3 H' ^0 X5 @) p/ b+ w$ v5 v        FLEXSPI_LUT_SEQ(kFLEXSPI_Command_DUMMY_SDR, kFLEXSPI_4PAD, 0x0a, kFLEXSPI_Command_READ_SDR,  kFLEXSPI_4PAD, 0x04),
' Z& K4 _6 G% f2 \    /* Erase Sector */
9 ]+ [9 e  H1 O1 Y    [4 * NOR_CMD_LUT_SEQ_IDX_ERASESECTOR] =
$ i3 p; ?6 k3 a1 Q        FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,       kFLEXSPI_1PAD, 0xDC, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20),
. m  n( x" T8 C6 V* o. p) @8 E    /* Page Program - quad mode */3 d: a$ @& N/ @7 ~- A2 q
    [4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD] =
2 R' ]6 m5 x- \) q- ~& S        FLEXSPI_LUT_SEQ(kFLEXSPI_Command_SDR,       kFLEXSPI_1PAD, 0x34, kFLEXSPI_Command_RADDR_SDR, kFLEXSPI_1PAD, 0x20),7 y% [  T/ w  O) k& Y
    [4 * NOR_CMD_LUT_SEQ_IDX_PAGEPROGRAM_QUAD + 1] =
) c/ k, ?5 d3 i5 `) ^1 U; C        FLEXSPI_LUT_SEQ(kFLEXSPI_Command_WRITE_SDR, kFLEXSPI_4PAD, 0x04, kFLEXSPI_Command_STOP,      kFLEXSPI_1PAD, 0x00),# b7 Q/ V, g4 Y
};
5 m- O7 l; `* M% S接下来就是按客户操作流程来复现 Segger J-Flash 烧写校验失败问题,客户其实是尝试烧写全部 32MB 数据来查看 J-Flash 及其配套下载算法能否适用这颗 Flash,这里痞子衡就用 《超级下载算法RT-UFL v1.0》,经过测试,确实复现了客户的问题。经过反复测试,定位了问题是这颗 Micron 32MB 的 Flash 前 3/4 区域(0x0 - 0x17FFFFF)是没问题的,但是在后 1/4 区域(0x1800000 - 1FFFFFF)均会出现校验错误(J-Flash软件里看擦写操作是能进行的,但后面发现其实根本没有正常擦写)。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表