网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

Linux的QSPI驱动移植方法及验证方法

时间:2023-04-14 10:20

人气:

作者:admin

标签:

导读:本文主要讲述了Linux的QSPI驱动移植方法及验证方法。...

1.概述

本文主要讲述了Linux的QSPI驱动移植方法及验证方法。

示例Linux内核版本:6.8.2。硬件平台:ARM SOC。

2.原理

Linux内核的SPI驱动子系统集成了主流厂家的QSPI控制器驱动,驱动源码位于目录linux-6.2.8/drivers/spi。本文以移植Cadence QSPI控制器驱动为例,通过使能CONFIG_SPI_CADENCE_QUADSPI开关,即可将Cadence QSPI控制器驱动spi-cadence-quadspi.c编译进内核。在设备树,添加QSPI控制器设备节点及其Flash设备子节点,以加载相应的驱动。

Linux内核的MTD子系统是一个抽象层,提供统一的API对Flash设备进行访问操作。Linux内核提供了MTD tests模块工具,可以用来对Flash进行操作,完成QSPI设备驱动的测试和验证。

3.移植方法

(1)配置内核

pYYBAGQ4uDmAC83YAAErCpVXIvg263.png

图1 Cadence QSPI驱动配置选项说明

(2)设备树添加QSPI控制器和Flash节点

在设备树添加Cadence QSPI控制器节点及其Flash节点。添加方法可参考如下文件:

./Documentation/devicetree/bindings/spi/cdns,qspi-nor.yaml

./Documentation/devicetree/bindings/spi/cdns,qspi-nor-peripheral-props.yaml

4.验证方法

(1)编译MTD tests工具

为编译MTD tests工具,应配置内核,使能CONFIG_MTD_TESTS,以编译出MTD tests模块。

pYYBAGQ4uEuAYwE0AAEj3hf9fdY718.png

图2 MTD tests工具配置选项说明

MTD tests模块随内核一起完成编译,编译完成后在linux-6.2.8/drivers/mtd/tests下生成*.ko测试模块。其中,mtd_stresstest.ko模块内包含了擦除、读、写等操作,选取该模块作为测试工具。mtd_stresstest.ko对应的源码为stresstest.c,原始代码中读、写操作通过do_operation()函数随机选择,do_read()函数包括读操作,do_write()函数包括擦除和写操作,操作的目标扇区是随机选择的,为便于测试,可在编译前手动修改操作的目标扇区号,即变量int eb值。

(2)使用mtd_stresstest.ko测试

内核启动后,通过查看,可以发现生成了/sys/class/mtd/mtd0设备,即可使用mtd_stresstest.ko通过mtd0设备对Flash进行擦除、读、写操作,以测试驱动功能的正确性。加载测试模块的命令如下,表示测试的目标设备为mtd0,次数为1。

insmod mtd_stresstest.ko dev=0 count=1


温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信