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)配置内核
图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模块。
图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

华为如何更新鸿蒙系统
水质监测站采水设备的产品介绍,它有哪些特点
如何提高直读光谱仪分析的准确性
爱立信提出5G将在医疗转型中发挥关键作用
区块链的整顿从哪里开始入手
Linux的QSPI驱动移植方法及验证方法
安防技术赋能餐饮行业 让顾客吃的放心吃的开心
PCB层压问题的解决方法
重磅!韩媒揭露三星Galaxy Note8主要配置参数
晶体管收音机工作原理及电路原理
Adobe Analytics 移动应用为客户提供旅程全面视图的 App
虹科方案 | 虹科PROFINET协议栈,便捷开发您的PROFINET设备
采用本地互连网络通信的车内环境照明系统解决方案与实现
电平转换器有助于并联LED电流驱动器
0603封装 79种容值 每种容值100片 贴片电容盒
环保用电在线监测模块ADW400在江苏省排污单位工况用电在线监测中的应用——安科瑞 严新亚
英创信息技术在ESM335x WEC7上实现4路以太网接口
三大运营商已经获得了5G中低频段试验频率使用许可5G牌照将很快发放
工商银行实现大数据云平台与华为云Stack云基础设施的融合
安卓手机图片误删恢复方法