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参数,要不然跑到内核也会有错误提示。希望能帮助大家
我在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
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2015-06-11 16:00:38
-
2015-08-03 18:35:13
-
2020-09-25 16:00:20
-
2016-01-19 09:39:43
-
2018-06-11 09:23:28
-
2020-06-13 11:57:48
-
2018-06-11 09:12:30
-
172016-03-01 21:19:07
-
2020-09-15 16:41:27
-
2015-07-20 17:02:26
-
2019-11-21 11:45:02
-
2018-07-16 10:46:30
-
2017-03-09 16:42:56
-
2023-10-27 13:33:14
-
2023-10-27 10:44:52
-
02020-07-03 17:37:48
-
2017-03-10 09:34:16
-
2015-03-14 13:06:32
-
2018-11-26 09:20:34
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认