[已解决]求助,flash的CFI接口找不到

发布于 2022-09-29 12:59:25 字数 2681 浏览 13 评论 0

flash芯片类型,W28J320BT90L
启动在linux-2.6.13.2/drivers/mtd/chips/cfi_probe.c的qry_present函数不能通过.redboot可以使用flash.

static int __xipram cfi_probe_chip(struct map_info *map, __u32 base,
                                   unsigned long *chip_map, struct cfi_private *cfi)
"cfi_probe.c" [converted] 457L, 13490C written                                                            
[orinda@localhost chips]$ vi cfi_probe.c

*/
static int __xipram qry_present(struct map_info *map, __u32 base,
                                struct cfi_private *cfi)
{
        int osf = cfi->interleave * cfi->device_type;   // scale factor
        map_word val[3];
        map_word qry[3];

        qry[0] = cfi_build_cmd('Q', map, cfi);
        qry[1] = cfi_build_cmd('R', map, cfi);
        qry[2] = cfi_build_cmd('Y', map, cfi);

        val[0] = map_read(map, base +osf*0x10);///////////////////////////
        val[1] = map_read(map, base + osf*0x11);///////              这3不检测不到QRY,请问是什么原因?
        val[2] = map_read(map, base + osf*0x12);//////////////////////

        if (!map_word_equal(map, qry[0], val[0]))
             return 0;

        if (!map_word_equal(map, qry[1], val[1]))
                return 0;

        if (!map_word_equal(map, qry[2], val[2]))
                return 0;

        return 1;       // "QRY" found

}

[ 本帖最后由 smalloc 于 2007-6-18 20:39 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

岁月蹉跎了容颜 2022-10-06 12:59:25

你的FLASH是什么类型的,是CFI或CFI兼容的接口吗?

嘿咻 2022-10-06 12:59:25

W28J320BT90L这款芯片是NOR flash 4M ,文档说可以和intel 的TE28F320B3/TE28F320C替换.
那2个intel的是cfi接口的.厂家是winbond.应该是很普通的芯片.

再问一下是不是所有的nor flash都是CFI的呢?如果不是那么在配置时怎么改

do_map_probe函数好象调用cfi_probe.

然后就是对于cfi接口的,读QRY特征字的花据说偏移地址是0x10,0x11,0x12,3 个存储区,那么这3个区的地址是直接在内存里的吗?(我的是ARM平台).
比如flash整个映射为0x5000000-0x5400000.那么特征字在年哪里读呢?

[ 本帖最后由 smalloc 于 2007-6-6 16:14 编辑 ]

嗼ふ静 2022-10-06 12:59:25

原帖由 smalloc 于 2007-6-6 16:09 发表于 3楼  
比如flash整个映射为0x5000000-0x5400000.那么特征字在年哪里读呢

1从芯片手册中确定是否支持CFI
2确定是8bit或16bit的操作。这会导致offset地址不一样。
3操作之前,最好先作reset
4从地址0x5000000+ offset处,即0x5000010, 0x5000011, 0x5000012读特征字。

[ 本帖最后由 yidou 于 2007-6-11 18:24 编辑 ]

別甾虛僞 2022-10-06 12:59:25

谢谢楼上的回答,我这个flash好老,应该无cfi信息接口,我让它通过jedec_probe了因为在jedec_probe.c中的芯片有intel的28f320的芯片和我这个正好是可替换的.

问一下cfi信息结构的interleave值是什么含义?我的4M的flash,如果interleave为2的时候mtd->size就成了8M了,我为1系统正常运行了.flash读写也正确了,问一下这个值什么怎么出来的?
再问一下ARM方面的嵌入式有好书吗?主要介绍ARM多些的.

[ 本帖最后由 smalloc 于 2007-6-19 13:31 编辑 ]

昇り龍 2022-10-06 12:59:25

1从芯片手册中确定是否支持CFI
2确定是8bit或16bit的操作。这会导致offset地址不一样。
3操作之前,最好先作reset
4从地址0x5000000+ offset处,即0x5000010, 0x5000011, 0x5000012读特征字。

请楼上yidou解释一下第2点好吗,原来用的amd 033c换成sst39vf6401b.因为我用16bit的flash替换8bit,现在也是qry_present不能通过。因为比较qry和val不相等。请教应该修改什么地方?

眼眸里的快感 2022-10-06 12:59:25

1从芯片手册中确定是否支持CFI
2确定是8bit或16bit的操作。这会导致offset地址不一样。
3操作之前,最好先作reset
4从地址0x5000000+ offset处,即0x5000010, 0x5000011, 0x5000012读特征字。

请楼上yidou解释一下第2点好吗,原来用的amd 033c换成sst39vf6401b.因为我用16bit的flash替换8bit,现在也是qry_present不能通过。因为比较qry和val不相等。请教应该修改什么地方?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文