海思HI3518E增加 SPI flash支持

由于项目需求,需要在hi3518e的板子上增加型号为 MX25L6406E 8M的SPI Flash,驱动本身没有这个型号的支持,
所以需要修改uboot和kernel代码,具体是参考《基于Hifmcv100控制器的Flash移植指南》手册进行的,不过因为
没有做过这个,所以很多参数也不是怎么理解,搞了一天总算没问题了,有不对的也请各位指出。

1.首先是uboot的修改

查阅 MX25L6406E 的器件手册,找到设备的ID号,应该都是在9F命令那里,以及设备的总大小、块大小、地址模式
(3byte或4byte)、设备支持的读写模式类型(标准读写、快速读写、多线读写之类的以及各种模式下的时钟是多少),
找到这些信息之后,找到**uboot的drivers/mtd/spi/hifmc100下的hifmc_spi_nor_ids.c**文件,再找里面的 
**static struct spi_nor_info hifmc_spi_nor_info_table[]** 添加节点的参数。具体参数意义参考海思的手册,
我这好像只能使用标准读写的方式,虽然手册说别的方式也支持,但是加上去会报错,所以就只加了标准的读写方式,

我的参数如下:
在这里插入图片描述

因为这个型号的ID和mx25l6436f这个是一样的,但是工作时钟不一样,为了避免其他问题,我就直接把不用的mx25l6436f屏蔽了,后面的kernel也一样。

2.kernel的修改

在drivers/mtd/spi-nor/spi-nor.c里面找到 **static const struct flash_info spi_nor_ids[]** 添加节点的
地方,这里要和uboot一致,不然好像会出错。我的参数配置如下:

在这里插入图片描述
本来有用PARAMS(mxic), CLK_MHZ_2X(84)这两个参数的,但是加上去报错,就去掉了,也是瞎摸出来
才知道的,不清楚为什么报错。配置的读写方式需要和uboot的一样,不然会挂载不了文件系统,原因不知。

之前有调一段时间,但是uboot读取不到设备ID,就没有再管了,现在又提了上来,重新焊了一个flash,结果就一下子读到了ID,之前估计是焊的有些随意,出了问题。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值