0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

CHANBAEK 来源:嵌入式系统研发 作者:李松泉 2023-04-14 10:20 次阅读

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


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16332

    浏览量

    177806
  • Linux
    +关注

    关注

    87

    文章

    11292

    浏览量

    209327
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28124
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91505
  • QSPI
    +关注

    关注

    0

    文章

    41

    浏览量

    12197
收藏 人收藏

    评论

    相关推荐

    Linux系统中驱动格式基本编写方法

    今天主要和大家聊一聊,编写Linux驱动格式与方法
    发表于 12-02 09:34 573次阅读

    RTOS和Linux中的内存映射及移植方法

    /O方法。它们涵盖的范围从对中断服务例程的特殊使用及用户线程对硬件访问到出现于有些ROTS中的半规范化驱动程序模型。这对于移植RTOS 代码到规范化的Linux设备启动程序具有一定启发
    发表于 07-03 07:43

    stm32移植linux方法

    stm32移植linux方法,推荐分享一个朋友的人工智能教程,零基础!通俗易懂!希望你也加入到人工智能的队伍中来!Ⅰ、概述该文写针对初学µC/OS的朋友,基于以下平台来一步一步移植µC
    发表于 08-09 09:17

    快速验证移植QSPI的操作方法

    1. 摘要本篇笔记主要介绍,如何在STM32H743上进行QSPI的操作和驱动。为项目进一步开发快速验证。2. 准备工作 1), IAR 8.32.1 2), STM32Cube...
    发表于 01-11 07:47

    验证方法简介

    则和指南。验证方法提供了构建稳健、可靠和完整的验证环境的方法验证方法通过其预定义的库减少了
    发表于 02-13 17:03

    Linux设备驱动开发详解》第23章、Linux设备驱动移植

    Linux设备驱动开发详解》第23章、Linux设备驱动移植
    发表于 10-27 10:58 9次下载
    《<b class='flag-5'>Linux</b>设备<b class='flag-5'>驱动</b>开发详解》第23章、<b class='flag-5'>Linux</b>设备<b class='flag-5'>驱动</b>的<b class='flag-5'>移植</b>

    如何将SQLite移植linux方法程序说明概述

    本文档的主要内容详细介绍的是如何将SQLite移植linux方法程序说明概述
    发表于 07-20 08:00 0次下载

    U-boot的QSPI驱动移植方法验证方法

    本文主要讲述了U-boot的QSPI驱动移植方法验证方法。在产品调试阶段,U-boot的dri
    的头像 发表于 04-14 10:21 2954次阅读
    U-boot的<b class='flag-5'>QSPI</b><b class='flag-5'>驱动</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>及<b class='flag-5'>验证</b><b class='flag-5'>方法</b>

    U-boot的DPU驱动移植方法

    本文以ARM Mali系列显示处理器驱动为例,讲述了U-boot的DPU驱动移植方法
    的头像 发表于 04-14 10:25 1356次阅读
    U-boot的DPU<b class='flag-5'>驱动</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    U-boot的SPLASH_SCREEN(启动画面)驱动移植方法

     在上一篇《U-boot驱动-DPU驱动移植》中,以ARM Mali系列显示处理器驱动为例,讲述了U-boot的DPU驱动
    的头像 发表于 04-14 10:28 1445次阅读
    U-boot的SPLASH_SCREEN(启动画面)<b class='flag-5'>驱动</b><b class='flag-5'>移植</b><b class='flag-5'>方法</b>

    Linux中常用的6种SSH身份验证方法

    。由于远程访问可能涉及到安全问题,因此 Linux 提供了多种身份验证方法来保护 SSH 连接的安全性。本文将介绍 Linux 中常用的 6 种 SSH 身份
    的头像 发表于 05-12 14:42 3084次阅读

    Linux的PWM驱动框架及实现方法

    本文主要讲述了Linux的PWM驱动框架、实现方法驱动添加方法和调试方法
    的头像 发表于 05-14 15:24 1434次阅读
    <b class='flag-5'>Linux</b>的PWM<b class='flag-5'>驱动</b>框架及实现<b class='flag-5'>方法</b>

    Vitis-Vivado强制JTAG模式烧录QSPI方法

    本教程提供 VITIS 2021.1 QSPI-FLASH 下载方法如下
    的头像 发表于 07-07 14:14 3313次阅读
    Vitis-Vivado强制JTAG模式烧录<b class='flag-5'>QSPI</b><b class='flag-5'>方法</b>

    Linux驱动移植 Linux系统架构优点

    系统移植 linux 驱动移植 移植是说同样的一个 linux 操作系统,我们可以跑到不同的硬件
    的头像 发表于 07-27 17:06 861次阅读
    <b class='flag-5'>Linux</b><b class='flag-5'>驱动</b><b class='flag-5'>移植</b> <b class='flag-5'>Linux</b>系统架构优点

    linux驱动程序的编译方法是什么

    Linux驱动程序的编译方法主要包括两种: 与内核一起编译 和 编译成独立的内核模块 。以下是对这两种方法的介绍: 一、与内核一起编译 与内核一起编译意味着将
    的头像 发表于 08-30 14:46 536次阅读