查看: 1073|回复: 3

[求助] 1052写FLASH出错。

[复制链接]

该用户从未签到

7

主题

26

帖子

0

注册会员

Rank: 2

积分
130
最后登录
2021-6-30
发表于 2021-6-21 18:30:52 | 显示全部楼层 |阅读模式
通过SWD调试1052时,出现写Flash错误,如下:
  1. Flash variant 'JEDEC_SFDP_Device' detected (8MB = 128*64K at 0x60000000)
  2. Writing 53972 bytes to address 0x60000000 in Flash
  3. ProgramPage (0x60000000, 0x200057B8, 0x4000) status 0x1 - driver reported driver error - EXTSPIJ driver rc -70 (0xFFFFFFBA)
  4. Sectors written: 1, unchanged: 0, total: 1
  5. Closing flash driver MIMXRT1050_SFDP_QSPI.cfx
  6. Target error from Commit Flash write: Ef(49): Flash driver operation gave error.
  7. GDB stub (crt_emu_cm_redlink) terminating - GDB protocol problem: Pipe has been closed by GDB.
复制代码
我试过MX25L6433和GD25Q64C,都出一样的错误,Flash驱动选择为MIMXRT1050_SFDP_QSPI.cfx。我的spiflash_config配置如下:

  1. const flexspi_nor_config_t spiflash_config = {
  2.                 .memConfig =
  3.                     {
  4.                         .tag = FLEXSPI_CFG_BLK_TAG,/*标志:FCFB*/
  5.                         .version = FLEXSPI_CFG_BLK_VERSION,/*版本:V1.4.0*/
  6.                         .readSampleClkSrc = kFlexSPIReadSampleClk_LoopbackInternally,/*内部环回*/
  7.                         .csHoldTime = 3u, /*保持时间*/
  8.                         .csSetupTime = 3u,/*建立时间*/
  9.                         .columnAddressWidth = 0u,/*列地址宽度*/
  10.                         .deviceModeCfgEnable = 1u,/*设备模式配置使能*/
  11.                         .deviceModeType = 1u,/*Quad 使能命令*/
  12.                         .deviceModeSeq.seqNum = 1u,/*LUT序列号*/
  13.                         .deviceModeSeq.seqId = 4u, /*LUT序列索引*/
  14.                         .deviceModeArg = 0x000200,/*设置 QE=1(S9)*/
  15.                         .deviceType = kFlexSpiDeviceType_SerialNOR,/*设备类型为nor flash*/
  16.                         .sflashPadType = kSerialFlash_4Pads,/*设备数据总线为4*/
  17.                         .serialClkFreq = kFlexSpiSerialClk_133MHz,/*flash 时钟*/
  18.                         .sflashA1Size = 8u * 1024u * 1024u,      /*flash 大小16MBytes*/
  19.                         //.dataValidTime = {16u, 16u},
  20.                         .lookupTable =
  21.                             {
  22.                                 /*快速读命令(四线)*/
  23.                                 [0]     = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xEB, RADDR_SDR, FLEXSPI_4PAD, 0x18),
  24.                                 [1]     = FLEXSPI_LUT_SEQ(DUMMY_SDR, FLEXSPI_4PAD, 0x06, READ_SDR, FLEXSPI_4PAD, 0x04),
  25.                                 /*读状态命令*/
  26.                                 [1*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x05, READ_SDR, FLEXSPI_1PAD, 0x04),
  27.                                 /*写使能命令*/
  28.                                 [3*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x06, STOP, FLEXSPI_1PAD, 0),
  29.                                 /*擦除扇区命令*/
  30.                                 [5*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x20, RADDR_SDR, FLEXSPI_1PAD, 0x04),
  31.                                 /*页编程命令(四线)*/
  32.                                 [9*4]   = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0x32, RADDR_SDR, FLEXSPI_1PAD, 0x18),
  33.                                 [9*4+1] = FLEXSPI_LUT_SEQ(WRITE_SDR,FLEXSPI_4PAD , 0x04, STOP, FLEXSPI_1PAD, 0),
  34.                                 /*整片擦除*/
  35.                                 [11*4]  = FLEXSPI_LUT_SEQ(CMD_SDR, FLEXSPI_1PAD, 0xc7, STOP, FLEXSPI_1PAD, 0),
  36.                             },
  37.                     },
  38.                 .pageSize = 256u,/*页大小为256字节*/
  39.                 .sectorSize = 4u * 1024u,/*扇区大小为4k字节*/
  40.                 };
复制代码
请问问题出在哪儿?
回复

使用道具 举报

该用户从未签到

655

主题

6311

帖子

0

超级版主

Rank: 8Rank: 8

积分
19925
最后登录
2024-4-19
发表于 2021-6-24 13:51:13 | 显示全部楼层
楼主你好!
你先跑下这个例程:
SDK_2.9.1_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\flexspi\nor
在RAM中跑,看看是否能跑通。
在跑之前,你先检查下LUT,和你使用的QSPI flash的数据手册,看看命令是否一致,因为有些可能擦写命令可能有些区别。
如果这个代码能够完全实现读写擦除,那么说明你硬件没有问题,可以进一步继续。
回复 支持 反对

使用道具 举报

该用户从未签到

7

主题

26

帖子

0

注册会员

Rank: 2

积分
130
最后登录
2021-6-30
 楼主| 发表于 2021-6-24 13:56:46 | 显示全部楼层
小恩GG 发表于 2021-6-24 13:51
楼主你好!
你先跑下这个例程:
SDK_2.9.1_EVKB-IMXRT1050\boards\evkbimxrt1050\driver_examples\flexspi\ ...

还是Flash的问题,换了一颗Flash能写成功了,但执行不了。
回复 支持 反对

使用道具 举报

该用户从未签到

655

主题

6311

帖子

0

超级版主

Rank: 8Rank: 8

积分
19925
最后登录
2024-4-19
发表于 2021-7-2 14:41:59 | 显示全部楼层
老鹰(深圳) 发表于 2021-6-24 13:56
还是Flash的问题,换了一颗Flash能写成功了,但执行不了。

读写擦除都OK,执行不了你看看启动模式,或者用MCUBOOTUTILITY下载一个代码,看看能不能启动?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /4 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2024-4-19 15:24 , Processed in 0.118682 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表