我拿到一个f1c100s能用的spi nand的lib库,同样的板子,同样的包之前烧录并且运行好几次都没问题,都成功起到文件系统的,啥没改说烧录不进去就不进去了,我跟踪了部分关键打印,初始化都成功但一到要下载写入就gg了,有大佬能帮忙分析下可能的原因不,硬件电路确认过,奇怪的是前后软硬都没变怎么就不行了,会有可能影响到了哪个关键寄存器值?
NAND_UbootInit
[1.443]NAND_UbootInit start
[1.445]NB1: enter NAND_LogicInit
[1.448]SpiNandHwInit: Start Nand Hardware initializing .....
[1.454]uboot: nand version: 3 6006 20180504 1300
int sunxi_dma_init---
irq enable
[1.473]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8b94
[1.480]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8bb4
_get_spic_clk_v1: sclk0=0x64
[1.510]not burn nand partition table!
[1.514][ND]not enough block:479,878!!
[1.517][NE]build phy partition 0 error!
[1.521][NE]build all phy partition fail!
[1.729][NE]not find mbr table!!!!
[1.732]NB1: nand_info_init fail
[1.735]NAND_UbootInit end: 0xfffffffb
NAND_UbootExit
[1.740]NB1: NAND_LogicExit
nand release dma:83eb8b94
nand release dma:0
sunxi dma exit
[1.748]erase_flag = 1
[1.750]NB1 : enter phy init
[1.753]SpiNandHwInit: Start Nand Hardware initializing .....
[1.758]uboot: nand version: 3 6006 20180504 1300
int sunxi_dma_init---
irq enable
[1.778]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8b94
[1.785]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8bb4
_get_spic_clk_v1: sclk0=0x64
[1.815]NB1 : nand phy init ok
[1.818]erase by flag 1
[1.820]has cleared the boot blocks.
[1.917]erase block128
[2.086]erase block256
[2.256]erase block384
[2.425]erase block512
[2.595]erase block640
[2.765]erase block768
[2.934]erase block896
[3.102]NAND_Uboot_Erase
[3.104]NB1 : enter phy Exit
nand release dma:83eb8b94
nand release dma:0
sunxi dma exit
[3.112]successed in erasing flash
NAND_UbootInit
[3.117]NAND_UbootInit start
[3.120]NB1: enter NAND_LogicInit
[3.123]SpiNandHwInit: Start Nand Hardware initializing .....
[3.128]uboot: nand version: 3 6006 20180504 1300
[3.144]request spi gpio ok!
int sunxi_dma_init---
irq enable
[3.150]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8b94
[3.157]request general tx dma channel ok!
[3.161]uboot nand_request_tx_dma: reqest genernal dma for nand success, 0x83eb8bb4
[3.169]request general rx dma channel ok!
[3.172]SPI nand ID: 12c212c2 12c212c2
[3.176][SCAN_DBG] NandTwoPlaneOp: 1, DriverTwoPlaneOPCfg: 1, 0xffcfffff
[3.182]nand : get id number_ctl from script:0x55aaaa55
[3.187]_UpdateExtAccessFreqPara: no para.
[3.191]PHY_Scan_DelayMode: right delay mode 0x0
[3.196]PHY_Scan_DelayMode: right delay mode 0x800
_get_spic_clk_v1: sclk0=0x64
[3.203]PHY_Scan_DelayMode: right delay mode,clk 50 MHz, bit[13]=0,bit[11]=0
[3.209]physic_info_read start!!
[3.212]physic_info_read already!!
[3.215]
[3.216][SCAN_DBG] ==============Nand Architecture Parameter==============
[3.223][SCAN_DBG] Nand Chip ID: 0xffff12c2 0xffffffff
[3.229][SCAN_DBG] Nand Chip Count: 0x1
[3.233][SCAN_DBG] Nand Chip Connect: 0x1
[3.237][SCAN_DBG] Sector Count Of Page: 0x4
[3.241][SCAN_DBG] Page Count Of Block: 0x40
[3.246][SCAN_DBG] Block Count Of Die: 0x400
[3.250][SCAN_DBG] Plane Count Of Die: 0x1
[3.254][SCAN_DBG] Die Count Of Chip: 0x1
[3.259][SCAN_DBG] Bank Count Of Chip: 0x1
[3.263][SCAN_DBG] Optional Operation: 0x60
[3.267][SCAN_DBG] Access Frequence: 0x0
[3.271][SCAN_DBG] =======================================================
[3.298]secure storage updata ok!
[3.301]nand secure storage ok: 58,59
[3.304]nand: get CapacityLevel from script, 55aaaa55
[3.309]burn nand partition table! mbr tbl: 0x83eebcc4, part_count:9
[3.315]start block:60
[3.317][ND]factory FirstBuild 66
[3.320]PHY_PageReadSpare bad flag: bank 0x0 block 0x45 page 0x1
[3.326]PHY_PageReadSpare bad flag: bank 0x0 block 0x45 page 0x0
[3.332][PHY_DBG] Find a bad block (NO. 0x45) in the Die 0x0
[3.337]PHY_PageReadSpare bad flag: bank 0x0 block 0x46 page 0x1
[3.343]PHY_PageReadSpare bad flag: bank 0x0 block 0x46 page 0x0
[3.349][PHY_DBG] Find a bad block (NO. 0x46) in the Die 0x0
[3.355]PHY_PageReadSpare bad flag: bank 0x0 block 0x47 page 0x1
[3.361]PHY_PageReadSpare bad flag: bank 0x0 block 0x47 page 0x0
离线
我这还是3.10的,不过这个出问题的还在uboot阶段,还没到kernel的
这个 linux 是什么版本? 4.19 已经内置支持了 spi nand了.
离线
kernel前的部分代码我得去看看有没有,还不确定是不是闭源的,话说你有成功稳定跑起过spi nand么,
这个 linux 是什么版本? 4.19 已经内置支持了 spi nand了.
离线
好的,多谢晕哥,板子不在手头明天我试下
离线
我还没去看有没代码,反正官方说的支持的
全志官方提供的 uboot spi nand lib?
离线
我刚好有块gd的nand,查看info对得上,话说我能直接用这个烧.img不晕哥,如果不行的话要弄整个系统大概怎么操作的呢~~
https://whycan.cn/files/members/3/QQ20181028160937.png
可以用这个 sunxi-fel, 支持 GD5F1G spinand
离线
这个sunxi-fel工具我烧了个0x6000长度的spl,然后有两个问题,第一烧录速度极慢,0.2k左右;第二烧录到spinand数据排列有问题,我的芯片是GD5F1G的,通过从spinand反读回来跟原spl.bin对比,spinand里面是跳着写入的,前1024一样,1024-2048全为ff,2049开始又跟源文件的1025一样了,现象就是跳1024个字节,但是只有sunxi-fel的bin文件~~
离线
嗯,从启动现象看已经初始化好了dram,正在尝试跳转,现在我在把整个uboot下进去,可是感人的速度
6% [== ] 0.2 kB/s, ETA 80:03
这个可能是硬件影响或者其它原因,一脸懵逼~
asdf 说:这个sunxi-fel工具我烧了个0x6000长度的spl,然后有两个问题,第一烧录速度极慢,0.2k左右;第二烧录到spinand数据排列有问题,我的芯片是GD5F1G的,通过从spinand反读回来跟原spl.bin对比,spinand里面是跳着写入的,前1024一样,1024-2048全为ff,2049开始又跟源文件的1025一样了,现象就是跳1024个字节,但是只有sunxi-fel的bin文件~~
boot0部分只用1024字节,读回的时候按正常方式读取。
1024字节是brom决定的。
离线
59% [============================ ] 0.3 kB/s, ETA 24:00 usb_bulk_send() ERROR -1: Input/Output Error
虽然龟速并且中途还报错了,但是好消息是连上串口上电居然能成功启动到uboot的命令行,也能操作!
那么问题来了:
一个是速度慢的问题,
二个是这种状态下的uboot我要怎么比较简便把dtb,kernel弄进来呢,还是直接用tftp
离线
好吧,多谢晕哥!我也搞不懂为啥到我这里又降了十多倍速度了,不知会不会是硬件原因啊?sd启动再烧录这个方法值得一试!
晕哥 说:晕哥 说:速度慢的问题我去请教原作者 @assert
kernel, dtb 的烧录可以用 u-boot的指令.@assert 说 sunxi-fel 没有优化,是比较慢,有 4k-6k 左右的速度, 但是你的这么慢,就不知道是什么问题了。
只能自己重写 sunxi-fel 工具了.出个歪主意, 从 TF 卡启动, 然后利用 linux 4.19 写 spi nand.
离线
这个问题目前找到一个解决方案,首先下载assert大神改的uboot到dram,然后对nand flash 进行全盘擦除;然后再用最新的全志phonixsuuit,注意要勾上格式化烧录就可以了,不擦只加格式化是不行的,除非新片子,应该是烧录时分区处理的完善性问题了
离线
直接烧感觉不可控,新片子的话勾上格式化应该是没问题的,但我不确定更改类似分区或者多次烧录会不会再出什么意外咯~反正我是遇到了
asdf 说:这个问题目前找到一个解决方案,首先下载assert大神改的uboot到dram,然后对nand flash 进行全盘擦除;然后再用最新的全志phonixsuuit,注意要勾上格式化烧录就可以了,不擦只加格式化是不行的,除非新片子,应该是烧录时分区处理的完善性问题了
直接用 phonixsuit 烧录 spi nand 不可以吗?
离线