hzgtfkc

hzgtfkc

0个粉丝

6

问答

0

专栏

0

资料

hzgtfkc  发布于  2017-05-16 11:02:28
采纳率 0%
6个问答
7949

海思uboot增加flash型号的问题解决方案

 
在论坛里很多开发人员遇到自己增加一个flash型号不在海思支持列表里的问题,本人这近也因为这个问题折腾了两天。现在把方法分享给大家。
我在hi3518eV200项目中使用了一颗1.8V的华邦flash(型号为W25Q128FW SOP8封装),支持列表只有W25Q128BV/FV和W25Q256FV.其实既然海思支持上面两颗器件,那么不同的一个器件只是ID不一样,或者还有涉及一些读写时钟频率可能不一样。
修改方法如下:在SDK中\Hi3518E_V200R001C05SPC020\Hi3518E V200R001C05SPC020\01.software\board\Hi3518E_SDK_V5.0.2.0\Hi3518E_SDK_V5.0.2.0\package\osdrv\osdrv\opensource\u-boot\u-boot-2010.06\drivers\mtd\spi\hifmc100文件下打开hifmc_spi_nor_ids.c,增加static struct spi_nor_info hifmc_spi_nor_info_table[]表格中的器件参数。

下面是W25Q128(B/F)V和W25Q256FV的参数
{
                "W25Q128(B/F)V", {0xEF, 0x40, 0x18}, 3, _16M, _64K, 3,
                {
                        &READ_STD(0, INFINITE, 33),
                        &READ_FAST(1, INFINITE, 104),
                        &READ_DUAL(1, INFINITE, 104),
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
                        &READ_QUAD(1, INFINITE, /*70*/80),
#endif
                        0
                },

                {
                        &WRITE_STD(0, 256, 104),
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
                        &WRITE_QUAD(0, 256, /*70*/80),
#endif
                        0
                },

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

        {
                "W25Q256FV", {0xEF, 0x40, 0x19}, 3, _32M, _64K, 4,
                {
                        &READ_STD(0, INFINITE, 33),
                        &READ_FAST(1, INFINITE, 104),
                        &READ_DUAL(1, INFINITE, 104),
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
                        &READ_QUAD(1, INFINITE, 80),
#endif
                        0
                },

                {
                        &WRITE_STD(0, 256, 104),
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
                        &WRITE_QUAD(0, 256, 80),
#endif
                        0
                },

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

增加w25q128fw型号参数到参数表中。代码如下:
        {
"w25q128fw", {0xEF, 0x60, 0x18}, 3, _16M, _64K, 3,
{
&READ_STD(0, INFINITE, 50),           //标准read时钟50MHz
&READ_FAST(1, INFINITE, 104),          
&READ_DUAL(1, INFINITE, 104),
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
&READ_QUAD(1, INFINITE, /*70*/80),
#endif
0
},

{            
&WRITE_STD(0, 256, 104),          //256个扇区
#ifndef CONFIG_CLOSE_SPI_8PIN_4IO
&WRITE_QUAD(0, 256, /*70*/80),
#endif
0
},

{
&ERASE_SECTOR_64K(0, _64K, 104),        //每个扇区是64KB
0
},
&spi_driver_general,
},
上面红色的参数需要在规格书中查找,ID号最重要,没有对应的ID则无法正确读取。增加其他的器件按这样的方法即可,论坛中有说在excel表去添加,本人试过感觉没有效果,没有把参数添加进来。

以上是uboot的修改方案,在内核中也需要增加hifmc_spi_nor_ids.c的flash参数,要不然跑到内核也会有错误提示。希望能帮助大家
我来回答
回答7个
时间排序
认可量排序

灰太狼

0个粉丝

0

问答

0

专栏

0

资料

灰太狼 2017-07-05 10:54:07
认可0
mark!学习了

china_gxl

0个粉丝

0

问答

0

专栏

0

资料

china_gxl 2017-08-31 17:46:57
认可0
mark!学习了

freewzf

0个粉丝

1

问答

0

专栏

0

资料

freewzf 2017-09-04 15:57:57
认可0
非常有参考价值~~~~

aiening

0个粉丝

2

问答

0

专栏

0

资料

aiening 2017-09-04 16:15:27
认可0
谢谢分享,论坛有你更精彩!

hero

0个粉丝

1

问答

0

专栏

0

资料

hero 2017-09-05 08:51:53
认可0

mark!学习了

wu0

0个粉丝

7

问答

0

专栏

1

资料

wu0 2017-09-04 15:17:28
认可0
mark 一下!!!

mengxp

0个粉丝

18

问答

0

专栏

1

资料

mengxp 2017-09-04 15:49:15
认可0
mark 好帖~~!
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区