您尚未登录。

楼主 # 2022-02-25 18:57:18

ftyghome
会员
注册时间: 2021-02-22
已发帖子: 1
积分: 1

D1的SPL无法读取W25Q128 SPI nor flash的id信息

前段时间买了一个Lichee RV Dock,最近回学校用实验室的风枪焊了一个W25Q128JVPIQ Flash上去,编译了https://github.com/smaeul/sun20i_d1_spl,使用xboot的xfel工具把编译之后的boot0_spinor_sun20iw1p1.bin文件写进spi flash里。xfel工具可以正确读取flash的大小和对flash进行读写操作,但是在使用spi flash上电启动板子时,显示错误信息spinor init fail。
我在SPL的代码里简单定位了一下这个错误的位置,发现问题出在drivers/spinor/spinor.c中。在spinor_init函数里,调用spinor_read_id(id)正常返回0,但是读取到的id数组是0x00 0x00 0x00,没有正确返回flash的id信息,进而代码判断读取flash出错,返回-1.
我在源代码里加了一些log,详细的log如下:
[26]HELLO! BOOT0 is starting!
[29]BOOT0 commit : 0dcb25c-dirty
[32]set pll start
[34]periph0 has been enabled
[37]set pll end
[38]board init ok
[40]DRAM only have internal ZQ!!
[43]get_pmu_exist() = -1
[46]ddr_efuse_type: 0x0
[49][AUTO DEBUG] single rank and full DQ!
[53]ddr_efuse_type: 0x0
[56][AUTO DEBUG] rank 0 row = 15
[58][AUTO DEBUG] rank 0 bank = 8
[62][AUTO DEBUG] rank 0 page size = 2 KB
[65]DRAM BOOT DRIVE INFO: V0.24
[68]DRAM CLK = 792 MHz
[70]DRAM Type = 3 (2:DDR2,3:DDR3)
[74]DRAMC ZQ value: 0x7b7bfb
[76]DRAM ODT value: 0x42.
[79]ddr_efuse_type: 0x0
[82]DRAM SIZE =512 M
[85]DRAM simple test OK.
[87]dram size =512
[89]spi init complete
[91]spinor_read_id returns 0
[94]spinor id is: 00 00 00, read cmd: 0b
[97]spinor init fail

看这个情况似乎是spi的驱动有问题,不知道有没有人使用spi flash测试过,求大佬指教...

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn