1、测试环境
硬件:I.MX 1052
rtthread版本:4.0.3
IDE版本:keil 5.27
Flash芯片:W25Q128
SPI:4线spi,非qspi
2、初始化打印如下
[W/SFUD] [SFUD] Warning: The OS tick(500) is less than 1000. So the flash write will take more time.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud.c:861) The flash device manufacturer ID is 0xEF, memory type ID is 0x40, capaci
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:131) Check SFDP header is OK. The reversion is V1.5, NPN is 0.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:173) Check JEDEC basic flash parameter header is OK. The table id is 0,
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:203) JEDEC basic flash parameter table info:
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:204) MSB-LSB 3 2 1 0
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0001] 0xFF 0xF9 0x20 0xE5
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0002] 0x07 0xFF 0xFF 0xFF
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0003] 0x6B 0x08 0xEB 0x44
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0004] 0xBB 0x42 0x3B 0x08
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0005] 0xFF 0xFF 0xFF 0xFE
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0006] 0x00 0x00 0xFF 0xFF
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0007] 0xEB 0x40 0xFF 0xFF
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0008] 0x52 0x0F 0x20 0x0C
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:206) [0009] 0x00 0x00 0xD8 0x10
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:215) 4 KB Erase is supported throughout the device. Command is 0x20.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:234) Write granularity is 64 bytes or larger.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:245) Target flash status register is non-volatile.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:271) 3-Byte only addressing.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:305) Capacity is 16777216 Bytes.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:311) Flash device supports 4KB block erase. Command is 0x20.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:311) Flash device supports 32KB block erase. Command is 0x52.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud_sfdp.c:311) Flash device supports 64KB block erase. Command is 0xD8.
[I/SFUD] Find a Winbond flash chip. Size is 16777216 bytes.
[D/SFUD] (......\components\drivers\spi\sfud\src\sfud.c:840) Flash device reset success.
[I/SFUD] norflash0 flash device is initialize success.
[I/SFUD] Probe SPI flash norflash0 by SPI device spi30 success.
3、msh 指令测试如下,测试正常
msh >sf read 0 32
Read the sf_cmd flash data success. Start from 0x00000000, size is 32. The data is:
Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
[00000000] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
[00000010] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
msh >sf write 0 0 1 2 3 4 5 6 7
Too many args ! We only Use:
sf write 0 0 1 2 3 4 5 6
Write the sf_cmd flash data success. Start from 0x00000000, size is 7.
Write data: 0 1 2 3 4 5 6 .
msh >sf write 7 7 8 9 10 11 12 13 14
Too many args ! We only Use:
sf write 7 7 8 9 10 11 12 13
Write the sf_cmd flash data success. Start from 0x00000007, size is 7.
Write data: 7 8 9 10 11 12 13 .
msh >sf read 0 32
Read the sf_cmd flash data success. Start from 0x00000000, size is 32. The data is:
Offset (h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
[00000000] 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D FF FF ................
[00000010] FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ................
4、sf bench 测试,读失败
msh >sf bench yes
Erasing the sf_cmd 16777216 bytes data, waiting...
Erase benchmark success, total time: 35.413S.
Writing the sf_cmd 16777216 bytes data, waiting...
Write benchmark success, total time: 131.036S.
Reading the sf_cmd 16777216 bytes data, waiting...
Data check ERROR! Please check you flash by other command.
Read sf_cmd failed, already rd for 0 bytes, read 256 each time
Read benchmark has an error. Error code: 3.
This flash operate has an error. Error code: 3.
比较奇怪的一个点是,bench测试失败,在通过sf read/write 测试,读写不正常。
但是在程序启动后测试都正常, easyflash也能正常启动,但是bench测试通不过
msh >pr
printenv
msh >printenv
iap_need_copy_app=0
iap_need_crc32_check=0
iap_copy_app_size=0
stop_in_bootloader=0
mode: next generation
size: 188/4096 bytes.
msh >seten
setenv
msh >setenv boottime 0
msh >saveenv
msh >pr
printenv
msh >printenv
iap_need_copy_app=0
iap_need_crc32_check=0
iap_copy_app_size=0
stop_in_bootloader=0
boottime=0
mode: next generation
size: 221/4096 bytes.