4

全志V3S嵌入式驱动开发(spi-nor驱动)

 11 months ago
source link: https://blog.csdn.net/feixiaoxing/article/details/131353575
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

全志V3S嵌入式驱动开发(spi-nor驱动)

嵌入式-老费 于 2023-06-23 19:59:48 发布 39

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        所谓的spi nor驱动,其实就是让spi nor芯片,在linux kernel 5.2.y启动后可以被正确地识别到。前面有一篇文章,我们说到了spi nand驱动,其实它和spi nor是一样的。我们同样地也需要对设备树和内核做一点修改,其他部分几乎不需要动。这样,结合之前的uboot spi改造结果,就可以完完全全构建一个适配spi nor的full image,彻底脱离开sd卡的束缚。毕竟,从成本上考虑,spi nor还是便宜很多。

        注意,这里使用的spi nor还是mxic公司的MX25L25645G。

1、修改sun8i-v3s-licheepi-zero.dts文件

        之前的spi0是为适配spi nand服务的,所以这里要修改成适配spi nor,最典型的修改就是compatible变成了“jedec,spi-nor”,之前是“spi-nand”,

2、修改内核代码

        在kernel 5.2.y当中,有两处内核代码需要修改。一个是drivers/mtd/devices/m25p80.c文件,在m25p_ids中添加一个新的芯片名称,和dts中的芯片保持一致;

 {"mx25l25645g"},

        另外一个就是在drivers/mtd/spi-nor/spi-nor.c,在spi_nor_ids添加一条新的注册信息,

{ "mx25l25645g", INFO(0xc22019, 0, 64 * 1024, 512, 0) },

        其中mx25l25645g表示nor flash型号,0xc22019表示RDID的内容,64*1024表示sector的数量,512表示每一个sector中byte的个数。所以总的大小就是64*1024*512=32M byte,256M bit,两者不冲突。

        有的同学也许会问,这个0xc22019应该从哪里获取,其实可以先找到mx25l25645g的芯片手册,比如通过搜索引擎查找下,

https://www.tme.eu/Document/b050a55b550e3061ddd7611588a5a8b0/MX25L25645G,%203V,%20256Mb,%20v1.7.pdf

        然后搜索RDID这个关键字,就可以在文档中找到对应的芯片设备信息了,

578df0942c0445d08b0bb595ab82c66e.png

3、编译内核,烧入dtb和zImage文件

        编译内核的办法就是make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-。生成的dtb文件和zImage文件则通过读卡器直接烧入到sd卡即可。

4、插入sd卡,检验spi norflash是否已经被linux kernel发现

        因为目前还没有制作完整的、适合norflash的image,所以我们还是通过sd卡来进行测试。经过uboot的加载,可以借助于打印日志看到kernel和rootfs已经被正确加载,此时通过检测是否存在/dev/mtd*节点,就可以判断出spi norflash设备是否被正确加载了。这和spi nandflash的检测过程是一样的,节点名称也是一样的。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK