Loading...
首页问答  

开发板替换SPI flash(w25q256fv)后如何修改uboot和kernel

zhangtower
zhangtower  发布于 2015-11-19 23:47:24 50831
如题,新的开发板替换了SPI flash,型号为w25q256fv,如何修改uboot和kernel内的读写flash的驱动啊?
谢谢各位大侠!
目前已经将flash的型号添加进去,启动时也可以读取到flash信息,但是启动内核的时候出现错误
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x02480000: 0x19f7 instead
下一步不知如何调整了!
myearth  发布于 2015-11-20 08:56:22
例如:3520D
uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls 产生一个文件,然后mkboot.sh;
在uboot_tools目录下,看文档吧,很简单的。
0
zhangtower  发布于 2015-11-20 15:27:59
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22378&ptid=9363]myearth 发表于 2015-11-20 08:56[/url]
例如:3520D
uboot-Hi3520D-bvt_No1_660_330_660_ddr_innerFEPHY.xls 产生一个文件,然后mkboot.sh;
在u ...[/quote]

谢谢!
我用的SPI芯片在这个表格里没有,那样的话是不是得修改kernel的hisfc300new_spi_ids.c部分啊?
我在代码里已经增加了这个芯片的支持,增加了如下代码
#include "hisfc300new_spi_w25q256fv.c"
static struct spi_driver  spi_driver_w25q256fv = {
        .wait_ready   = spi_general_wait_ready,
        .write_enable = spi_general_write_enable,
        .entry_4addr  = spi_w25q256fv_entry_4addr,
        .bus_prepare  = spi_general_bus_prepare,
        .qe_enable = spi_general_qe_enable,
};




        {
                "W25Q256FV", {0xEF, 0x40, 0x19}, 3, _32M, _64K, 3,
                {
                        &READ_STD(0, INFINITE, 33),
                        &READ_FAST(1, INFINITE, 104),
                        &READ_DUAL(1, INFINITE, 104),
                        &READ_QUAD(1, INFINITE, /*70*/80),
                        0
                },

                {
                        &WRITE_STD(0, 256, 104),
                        &WRITE_QUAD(0, 256, /*70*/80),
                        0
                },

                {
                        &ERASE_SECTOR_64K(0, _64K, 104),
                        0
                },
                &spi_driver_w25q256fv,
        },




不知标红的数值是否需要修正?

目前使用编译出来的内核出现错误,
Spi id table Version 1.22
Hisilicon Spi Flash Controller V300 New Device Driver, Version 1.10
Check Spi Flash Controller V300 New.
Found
Spi(cs1) ID: 0xEF 0x40 0x19 0x00 0x00 0x00
Spi(cs1):
Block:64KB
Chip:32MB
Name:"W25Q256FV"
spi size: 0x33554432
chip num: 1
4 cmdlinepart partitions found on MTD device hi_sfc
Creating 4 MTD partitions on "hi_sfc":
0x000000000000-0x000000100000 : "boot"
0x000000100000-0x000000500000 : "kernel"
0x000000500000-0x000001f00000 : "rootfs"
0x000001f00000-0x000002000000 : "config"
Special nand id table Version 1.35
Hisilicon Nand Flash Controller V301 Device Driver, Version 1.10
Nand ID: 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40
No NAND device found.
Fixed MDIO Bus: probed
usbcore: registered new interface driver rt2500usb
usbcore: registered new interface driver rt73usb
usbmon: debugfs is not available
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
hiusb-ehci hiusb-ehci.0: HIUSB EHCI
hiusb-ehci hiusb-ehci.0: new USB bus registered, assigned bus number 1
hiusb-ehci hiusb-ehci.0: irq 63, io mem 0x100b0000
hiusb-ehci hiusb-ehci.0: USB 0.0 started, EHCI 1.00
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 2 ports detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
hiusb-ohci hiusb-ohci.0: HIUSB OHCI
hiusb-ohci hiusb-ohci.0: new USB bus registered, assigned bus number 2
hiusb-ohci hiusb-ohci.0: irq 64, io mem 0x100a0000
hub 2-0:1.0: USB hub found
hub 2-0:1.0: 2 ports detected
usbcore: registered new interface driver cdc_acm
cdc_acm: USB Abstract Control Model driver for USB modems and ISDN adapters
usbcore: registered new interface driver cdc_wdm
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver ums-alauda
usbcore: registered new interface driver ums-datafab
usbcore: registered new interface driver ums-freecom
usbcore: registered new interface driver ums-isd200
usbcore: registered new interface driver ums-jumpshot
usbcore: registered new interface driver ums-sddr09
usbcore: registered new interface driver ums-sddr55
usbcore: registered new interface driver mdc800
mdc800: v0.7.5 (30/10/2000):USB Driver for Mustek MDC800 Digital Camera
mousedev: PS/2 mouse device common for all mice
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
TCP cubic registered
Initializing XFRM netlink socket
NET: Registered protocol family 17
NET: Registered protocol family 15
lib80211: common routines for IEEE802.11 drivers
Registering the dns_resolver key type
registered taskstats version 1
ata1: SATA link down (SStatus 0 SControl 300)
ata2: SATA link down (SStatus 0 SControl 300)
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000000: 0x998d instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000004: 0x88ab instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000008: 0xeeee instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000000c: 0x8889 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000010: 0x8888 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000014: 0x888a instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000018: 0xd99d instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0000001c: 0x8c8b instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00000020: 0xffce instead

从信息看spi flash已经找到,但是读出的jiffs文件系统有问题,不知如何进一步解决了,麻烦不吝赐教!谢过!
0
myearth  发布于 2015-11-20 15:30:04
本帖最后由 myearth 于 2015-11-20 15:33 编辑

不用改代码啊,只需要修改hi_boot的配置。
0
myearth  发布于 2015-11-20 15:34:20
然后mkboot.sh 命令(linux下)
有没有Hi3520D IIC驱动啊,还有NVP6114?
0
zhangtower  发布于 2015-11-20 15:40:13
附图是我的sdk中对应的flash配置部分

里面没有我所使用的芯片,怎么修改呢?
请详细说下吧:)
0
myearth  发布于 2015-11-20 15:47:25
w25q128fv和w25q128就是我自己添加的,对下pdf,添加一个
0
zhangtower  发布于 2015-11-20 15:55:01
w25q128在hisfc200new_spi_ids.c中是支持的
        {
                "W25Q128BV", {0xEF, 0x40, 0x18}, 3, _16M, _64K, 3,
                {
                        &READ_STD(0, INFINITE, 33),
                        &READ_FAST(1, INFINITE, 104),
                        &READ_DUAL(1, INFINITE, 104),
                        &READ_QUAD(1, INFINITE, /*70*/80),
                        0
                },

                {
                        &WRITE_STD(0, 256, 104),
                        &WRITE_QUAD(0, 256, /*70*/80),
                        0
                },

                {
                        &ERASE_SECTOR_64K(0, _64K, 104),
                        0
                },
                &spi_driver_general,
        },

应该是不需要修改的代码,而我的w25q256fv里面没有,
我不清楚w25q128fv和w25q128的Nand ID和w25q256fv是不是一样,
w25q256fv的Nand ID是Spi(cs1) ID: 0xEF 0x40 0x19 0x00 0x00 0x00

方便的话你能帮我看一下吗?
0
zhangtower  发布于 2015-11-20 15:59:05
从内核代码看,如果Spi ID不同的话,spi控制器就识别不出是哪类spi芯片
0
myearth  发布于 2015-11-20 16:02:04
本帖最后由 myearth 于 2015-11-20 16:04 编辑

ID:EF 40 19 copy128的配置,修改大小等参数就好吧
0
zhangtower  发布于 2015-11-20 16:25:47
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22420&ptid=9363]myearth 发表于 2015-11-20 16:02[/url]
ID:EF 40 19 copy128的配置,修改大小等参数就好吧[/quote]

谢谢!我试验一下!
0
zhangtower  发布于 2015-11-20 16:40:56
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22423&ptid=9363]zhangtower 发表于 2015-11-20 16:25[/url]
谢谢!我试验一下![/quote]

另外还有个问题,这种改法适合uboot和kernel吗?uboot和kernel都不用修改源码了吗?
0
zhangtower  发布于 2015-11-20 16:42:30
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22420&ptid=9363]myearth 发表于 2015-11-20 16:02[/url]
ID:EF 40 19 copy128的配置,修改大小等参数就好吧[/quote]

另外还有个问题,这种改法适合uboot和kernel吗?uboot和kernel都不用修改源码了吗?
0
serveXX  发布于 2015-12-03 23:29:11
你好,我刚入手开发板也碰到这问题,你现在解决了吗!指导下!
0
orinwu  发布于 2016-04-12 22:00:41
楼主 解决了吗?我最近遇到跟你一样的问题 hi3518e 用w25q256fv的flash 在uboot下不能读写flash。你是怎么解决的?
0
default  发布于 2016-04-12 22:45:59
我简单分析过excel配置表生成的reg_info.bin的构成,并没有关于flash ID的生成,所以必须要在源码上改ID
0
Jin涛  发布于 2016-05-11 13:10:18
我在execl表最后一页添加了相应的一行flash的信息,然后点击Generate reg bin file之后生成的bin文件并没有变化啊?是我哪里操作有错吗?
0
1305_xiaolong  发布于 2016-05-19 14:23:27
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28349&ptid=9363]orinwu 发表于 2016-4-12 22:00[/url]
楼主 解决了吗?我最近遇到跟你一样的问题 hi3518e 用w25q256fv的flash 在uboot下不能读写flash。你是怎么 ...[/quote]

问题感觉是读写flash的方式上出问题,我是这样解决的:
1、在excel中添加flash的信息,如之前同学所说。
2、uboot代码中搜索W25Q256字段,找到设置相应读写方式的代码,屏蔽除STD读,STD写的其余方式。
3、内核中的修改与uboot一致~
0
orinwu  发布于 2016-05-23 18:16:39
已经解决了
0
orinwu  发布于 2016-05-23 18:30:51
你可以把 &READ_QUAD(1, INFINITE, /*70*/80), &WRITE_QUAD(0, 256, /*70*/80),注释掉再试试
0
Jacky  发布于 2016-06-23 16:51:43
怎么解决的?楼主能解释下思路么。我的HI3520D,spi FLASH 8 PIN MX25L25635F,换成 16pin的就不行了,不知道怎么回事
0
maythry  发布于 2016-07-18 16:18:21
遇到同样的问题,能否给出具体的实现方案呢,谢谢!
0
dwt_guard  发布于 2016-07-19 09:29:52
坐等楼主解决的结果!
0
Singcol  发布于 2016-07-20 17:21:42
好帖子!mark一下
0
qqq306922360  发布于 2016-08-04 09:27:59
楼主怎么解决的,分享给大家伙啊,我也要在3516A上面更换这个flash
0
gteng  发布于 2016-08-04 13:38:02
winbond 的8MB的调试中出了问题,发现写正常,读就不行了,后来在uboot里面将读改成了bus方式,才搞定。

最后还是换成了MX的8MBflash。
0
qqq306922360  发布于 2016-08-05 10:33:40
请问在excel里面增加了相关的SPI flah 配置后,是否需要修改u-boot和kernel的源码?多谢
0
2920537617  发布于 2016-08-05 11:12:33
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22429&ptid=9363]zhangtower 发表于 2015-11-20 16:40[/url]
另外还有个问题,这种改法适合uboot和kernel吗?uboot和kernel都不用修改源码了吗?[/quote]

uboot不需要改吧
0
qqq306922360  发布于 2016-08-05 15:22:03
[quote][url=forum.php?mod=redirect&goto=findpost&pid=35544&ptid=9363]2920537617 发表于 2016-8-5 11:12[/url]
uboot不需要改吧[/quote]

多谢,Kernel是不是就需要重新划分分区呢?
0
2920537617  发布于 2016-08-08 15:37:51
[quote][url=forum.php?mod=redirect&goto=findpost&pid=35573&ptid=9363]qqq306922360 发表于 2016-8-5 15:22[/url]
多谢,Kernel是不是就需要重新划分分区呢?[/quote]

按道理来说,不需要划分的
0
hjwwww2  发布于 2016-11-30 17:29:48
遇到同样的问题,有人可以帮忙解决一下吗?
0
Benz  发布于 2016-12-05 10:54:23
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28349&ptid=9363]orinwu 发表于 2016-4-12 22:00[/url]
楼主 解决了吗?我最近遇到跟你一样的问题 hi3518e 用w25q256fv的flash 在uboot下不能读写flash。你是怎么 ...[/quote]

你好,我的疑问跟你一样, 也换成了这个32M 的flash,已经按照SDK文档的做法配置并重新编译了uboot,uboot启动之后能检测到32的SPI flash, 但还是不能读写。 困惑中,请大牛指点一下...  谢谢
0
Benz  发布于 2016-12-05 10:55:52
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22993&ptid=9363]serveXX 发表于 2015-12-3 23:29[/url]
你好,我刚入手开发板也碰到这问题,你现在解决了吗!指导下![/quote]

你好,我的疑问跟你一样, 也换成了这个32M 的flash,已经按照SDK文档的做法配置并重新编译了uboot,uboot启动之后能检测到32的SPI flash, 但还是不能读写。 困惑中,请大牛指点一下...  谢谢
0
Benz  发布于 2016-12-05 10:59:51
[quote][url=forum.php?mod=redirect&goto=findpost&pid=32277&ptid=9363]Jacky 发表于 2016-6-23 16:51[/url]
怎么解决的?楼主能解释下思路么。我的HI3520D,spi FLASH 8 PIN MX25L25635F,换成 16pin的就不行了,不知 ...[/quote]

请问解决了吗?  8PIN 和16PIN 的 32M flash ,  管脚功能有差异,  会是这个原因吗?  软件上又是怎么解决的呢?
0
Benz  发布于 2016-12-05 11:01:44
本帖最后由 Benz 于 2017-2-8 13:02 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=42177&ptid=9363]hjwwww2 发表于 2016-11-30 17:29[/url]
遇到同样的问题,有人可以帮忙解决一下吗?[/quote]

我也是,目前还在思考中, 希望跟你交流
0
cy_ygs  发布于 2016-12-05 13:04:40
学习了,支持
0
zy8310  发布于 2017-02-08 10:53:17
好贴!MARK一下!
0
zy8310  发布于 2017-03-17 16:57:36
[quote][url=forum.php?mod=redirect&goto=findpost&pid=42384&ptid=9363]Benz 发表于 2016-12-5 10:59[/url]
请问解决了吗?  8PIN 和16PIN 的 32M flash ,  管脚功能有差异,  会是这个原因吗?  软件上又是怎么解 ...[/quote]

你好~不知道你遇到的情况解决了么? W25Q256FV  最新的海思SDK是支持的,s60版本,可以直接使用。关于3byte 和4byte 启动方式也看了不少帖子,我以前默认按3BYTE可以正常启动(未修改SDK)。 关于8PIN和16PIN FLASH 有一定区别的,我现在就遇到这个问题。FLASH - rst 管脚不同,16PIN_rst 是独立的,8PIN_rst 是复用的。uboot启动-默认SPI是单线1XIO模式。内核和文件系统默认是4XIO SPI启动。软复位或者按键复位时,16PIN—flash 可以正常启动,8PIN-flash 无法启动。4XIO SPI 模式,PINI_RST 是无用的。 我现在用的就是8PIN的FLASH,无法软复位重启,必须断电重启。有什么解决办法么?
PS: HI3516A平台
0
Benz  发布于 2017-03-17 19:38:27
[quote][url=forum.php?mod=redirect&goto=findpost&pid=46706&ptid=9363]zy8310 发表于 2017-3-17 16:57[/url]
你好~不知道你遇到的情况解决了么? W25Q256FV  最新的海思SDK是支持的,s60版本,可以直接使用。关于3by ...[/quote]

我的也是必须断电重启, 能正常启动之后就没再研究了,  没有你研究的这么细致
0
傻大壮  发布于 2017-04-07 15:16:04
好帖子  mark一下!
0
nunlin  发布于 2017-04-21 10:00:29
好帖子,MARK一下
0
a20071462  发布于 2017-05-02 15:04:57
好帖子,MARK一下,目前flash暂时够用的,不过以后可能也要换更大的.
0
custc  发布于 2017-05-03 20:44:39
本帖最后由 custc 于 2017-5-3 20:57 编辑

W25Q256FV在hisfc350中有实现代码了。看了看,主要针对4byte地址重写了函数,以及处理了重启6699指令。
如果用hisfc300的则需要把代码移植过去,刚在Hi3531上进行了测试。
0
custc  发布于 2017-05-03 20:54:12
本帖最后由 custc 于 2017-5-3 20:55 编辑

jffs2_scan_eraseblock()报错我也遇到了,结果是被海思说明文档误导了,文档说明是blocksize是64k,但是命令行里边用的是256k,然后。。。。浪费了我3个小时。。。
0
先知先觉_bin  发布于 2017-08-26 15:28:29
[quote][url=forum.php?mod=redirect&goto=findpost&pid=46706&ptid=9363]zy8310 发表于 2017-3-17 16:57[/url]
你好~不知道你遇到的情况解决了么? W25Q256FV  最新的海思SDK是支持的,s60版本,可以直接使用。关于3by ...[/quote]

你好,最近我们也在做海思的裸板,板子做出来后,烧入uboot ,上电自启,串口完全没有输出。我们用的是25p128(16管脚),望回复。
0
先知先觉_bin  发布于 2017-08-26 15:30:08
[quote][url=forum.php?mod=redirect&goto=findpost&pid=32277&ptid=9363]Jacky 发表于 2016-6-23 16:51[/url]
怎么解决的?楼主能解释下思路么。我的HI3520D,spi FLASH 8 PIN MX25L25635F,换成 16pin的就不行了,不知 ...[/quote]

这位朋友,你的意思是,你原来uboot是在8脚flash的可以用,新画的16脚的flash,板子就不能用了? 望回复。
0
先知先觉_bin  发布于 2017-08-26 15:31:55
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28349&ptid=9363]orinwu 发表于 2016-4-12 22:00[/url]
楼主 解决了吗?我最近遇到跟你一样的问题 hi3518e 用w25q256fv的flash 在uboot下不能读写flash。你是怎么 ...[/quote]

我最近也是新作的3518e的板子,但是uboot写进flash后,串口完全没有输出
0
先知先觉_bin  发布于 2017-08-26 15:35:09
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22993&ptid=9363]serveXX 发表于 2015-12-3 23:29[/url]
你好,我刚入手开发板也碰到这问题,你现在解决了吗!指导下![/quote]

开发板?海思开发板市面上没有的吧?我们是自己做的板子
0
rickin  发布于 2017-09-11 16:44:12
[quote][url=forum.php?mod=redirect&goto=findpost&pid=28353&ptid=9363]default 发表于 2016-4-12 22:45[/url]
我简单分析过excel配置表生成的reg_info.bin的构成,并没有关于flash ID的生成,所以必须要在源码上改ID[/quote]

我也分析了,跟最后一页flash type不搭界,生成的reg_info.bin。为啥有人说在excel上改呢?
0
rickin  发布于 2017-09-11 16:46:40
[quote][url=forum.php?mod=redirect&goto=findpost&pid=22430&ptid=9363]zhangtower 发表于 2015-11-20 16:42[/url]
另外还有个问题,这种改法适合uboot和kernel吗?uboot和kernel都不用修改源码了吗?[/quote]

我分析过reg_info.bin,跟最后一页flash type没多大关系啊?还是说我搞错了?
0
lunarseaonline  发布于 2017-11-04 11:48:45

感谢您的分享
0
添加附件:文件小于20M 文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz
上传
文件格式必须为doc,docx,xls,xlsx,pdf,ppt,pptx,txt,zip,rar,tar,7z,gz,gz
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区