Linux 支持多个spi-nor flash

1. 需求

通常在嵌入式开发过程中可能会遇到需要再同一个SPI总线上挂载多个spi nor flash才能满足存储需求。

2. 技术简介

对于spi-nor flash驱动通常不需要驱动开发人员手搓,一般内核会有一套固定的驱动,而且走的是内核的MTD子系统那一套,市面上常见的spi-nor flash芯片都支持这套驱动。

驱动开发人员需要关注的是如何获取spi-nor flash对应的id并将其补充到对应型号的驱动里面。注意这里有些驱动开发人员会产生疑问,不是说它们使用一套通用的驱动吗?那这里的独立芯片驱动怎么回事?解答:这个不是flash驱动,这里的驱动主要是用来记录flash id用的,原因是不同厂家的芯片id肯定是不一样的,下述以常用的两款flash为例。

GD25WQ128E:

drivers/mtd/spi-nor/gigadevice.c

w25q128:

drivers/mtd/spi-nor/winbond.c

2.方案

首先SPI协议是支持一主多从结构的,也就是在同一条SPI总线下可以挂载多个SPI从设备。学习过SPI的都知道,SPI master都是通过cs片选的方式选中要通信的slave设备进行通信,这个是本质。因此对于挂载多个spi-nor flash道理是一样的。

对于SPI协议这里不展细说,常见的就有单线、双线、四线、八线等模式,本案例演示的是四线模式的。

通常对于SOC的硬件SPI控制器,其都会有专用的片选引脚,以AM64x平台为例,其OSPI控制器就有4个硬件片选引脚:OSPI0_CSn0、OSPI0_CSn1、OSPI0_CSn2、OSPI0_CSn3,可以通过不同的片选引脚挂载多个SPI从设备。

3.配置设备树

修改设备树重新编译测试报错:看似片选不支持多个

分析驱动:发现驱动也没有解析设备树的相关片选属性(例如num-cs)

去官方论坛搂一下看看有没有其它开发人员也遇到相似的的问题:

补丁

其它开发人员遇到相似的问题

通过一番资料排查,TI官方在这个版本的内核并不支持多个片选,需要修改驱动、设备树,添加对应的支持。

编译内核、设备树测试:至少可以识别两个SPI从设备了,但是有一个id无法识别

解决方案:补充id到驱动里面参考:这篇帖子

测试可以识别到了两个spi-nor flash设备

这里可能会有一个疑问,问什么只有其中一个spi从设备可以被识别为mtd设备,另外一个没有被识别?解答:原因是u-boot命令行参数默认配置了spi0.0设备作为mtd设备。

修改u-boot配置文件,重新编译进行测试

切换为spi.1了

当然也可以同时配置多个:

注:更改环境变量需要重新恢复u-boot默认环境变量,命令:u-boot# env default -fa

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/490475.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

超标量处理器设计笔记(11)发射内容:分配、仲裁、唤醒

发射 概述集中式和分布式数据捕捉和非数据捕捉数据捕捉非数据捕捉总结对比 压缩式和非压缩式压缩式发射队列非压缩式发射队列总结 发射过程的流水线非数据捕捉结构的流水线数据捕捉结构的流水线 分配仲裁1-of-M 的仲裁电路N of M 的仲裁电路 唤醒单周期指令的唤醒多周期指令的…

ArrayList源码分析、扩容机制面试题,数组和List的相互转换,ArrayList与LinkedList的区别

目录 1.java集合框架体系 2. 前置知识-数组 2.1 数组 2.1.1 定义: 2.1.2 数组如何获取其他元素的地址值?(寻址公式) 2.1.3 为什么数组索引从0开始呢?从1开始不行吗? 3. ArrayList 3.1 ArrayList和和…

地下管线三维建模,市面上有哪些软件

1. 地下管线:城市“生命线” 地下管线是城市的重要基础设施,包括供水、排水、燃气、热力、电力、通信等管线,它们如同城市的“生命线”,支撑着城市的正常运转。如果缺乏完整和准确的地下管线信息,施工破坏地下管线的事…

蓝桥杯刷题——day5

蓝桥杯刷题——day5 题目一题干解题思路一代码解题思路二代码 题目二题干解题思路代码 题目一 题干 给定n个整数 a1,a2,⋯ ,an,求它们两两相乘再相加的和,即: 示例一: 输入: 4 1 3 6 9 输出: 117 题目链…

L1-3流量分析

1. 初步分析 数据包下载 流量分析基础篇 使用科来网络分析系统,打开L1-3.pcapng数据包,查看数据包中ssh的协议占的比例较大。 2. 通过分析数据包L1-3,找出黑客的IP地址,并将黑客的IP地址作为FLAG(形式:[IP地址)提交; 获取的fl…

docker启动一个helloworld(公司内网服务器)

这里写目录标题 容易遇到的问题:1、docker连接问题 我来介绍几种启动 Docker Hello World 的方法: 最简单的方式: docker run hello-world这会自动下载并运行官方的 hello-world 镜像。 使用 Nginx 作为 Hello World: docker…

【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析

【网络取证篇】取证实战之PHP服务器镜像网站重构及绕密分析 在裸聊敲诈、虚假理财诈骗案件类型中,犯罪分子为了能实现更低成本、更快部署应用的目的,其服务器架构多为常见的初始化网站架构,也称为站库同体服务器!也就是说网站应用…

图像处理 - 车道线检测:智能驾驶的“眼睛”

引言 在智能驾驶技术飞速发展的今天,车道线检测作为一项基础而关键的技术,扮演着车辆“眼睛”的角色。它不仅关系到车辆的导航和定位,还直接影响到自动驾驶系统的安全性和可靠性。本文将带你深入了解车道线检测技术的原理、方法以及在实际应用…

【Linux学习】十五、Linux/CentOS 7 用户和组管理

Linux下组和用户的管理都必须是root用户下进行: 一、组的管理 1.组的创建 格式: groupadd 组名参数: -g:指定用户组的组ID(GID),如果不提供则由系统自动分配。 【案例】创建一个名为 oldg…

Unity类银河战士恶魔城学习总结(P179 Enemy Archer 弓箭手)

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了敌人弓箭手的制作 Enemy_Archer.cs 核心功能 状态机管理敌人的行为 定义了多个状态对象(如 idleState、moveState、attackState 等),通过状态机管理敌人的…

Pikachu靶场——XXE漏洞

XXE(XML External Entity)漏洞 XXE(XML External Entity)漏洞是一种常见的安全漏洞,发生在处理 XML 数据的应用程序中。当应用程序解析 XML 输入时,如果没有正确配置或过滤外部实体的加载,就可能…

使用 ESP-IDF 进行esp32-c3开发第四步:VSCode里安装ESP-IDF插件

很多小伙伴还是习惯在VSCode里写代码,所以今天进行了--使用 ESP-IDF 进行esp32-c3开发第四步:VSCode里安装ESP-IDF插件 安装和配置 首先到VSCode的插件页面,搜索esp,排名第一的就是ESP-IDF插件,点击安装即可。 在命令…

SSM 垃圾分类系统——高效分类的科技保障

第五章 系统功能实现 5.1管理员登录 管理员登录,通过填写用户名、密码、角色等信息,输入完成后选择登录即可进入垃圾分类系统,如图5-1所示。 图5-1管理员登录界面图 5.2管理员功能实现 5.2.1 用户管理 管理员对用户管理进行填写账号、姓名、…

部署GitLab服务器

文章目录 环境准备GitLab部署GitLab服务器GitLab中主要的概念客户端上传代码到gitlab服务器CI-CD概述软件程序上线流程安装Jenkins服务器 配置jenkins软件版本管理配置jenkins访问gitlab远程仓库下载到子目录部署代码到web服务器自动化部署流程 配置共享服务器配置jenkins把git…

泷羽sec学习打卡-brupsuite8伪造IP和爬虫审计

声明 学习视频来自B站UP主 泷羽sec,如涉及侵权马上删除文章 笔记的只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都 与本人无关,切莫逾越法律红线,否则后果自负 关于brupsuite的那些事儿-Brup-FaskIP 伪造IP配置环境brupsuite导入配置1、扩展中先配置python环境2、安…

如何在 Ubuntu 22.04 上使用 Fail2Ban 保护 SSH

前言 SSH,这玩意儿,简直是连接云服务器的标配。它不仅好用,还很灵活。新的加密技术出来,它也能跟着升级,保证核心协议的安全。但是,再牛的协议和软件,也都有可能被攻破。SSH 在网上用得这么广&…

智能家居WTR096-16S录放音芯片方案,实现语音播报提示及录音留言功能

前言: 在当今社会的高速运转之下,夜幕低垂之时,许多辛勤工作的父母尚未归家。对于肩负家庭责任的他们而言,确保孩童按时用餐与居家安全成为心头大事。此时,家居留言录音提示功能应运而生,恰似家中的一位无形…

EasyGBS国标GB28181-2016标准解读:基于TCP协议的视音频媒体传输

在探讨EasyGBS平台基于GB28181-2016标准的TCP协议视音频媒体传输时,我们首先需要了解GB28181标准的基本背景。GB28181,即GB/T28181—2016《公共安全视频监控联网系统信息传输、交换、控制技术要求》,是公安部提出的公共安全行业标准&#xff…

[C++]C++工具之对异常情况的处理(throw、catch、try)以及用命名空间避免同名冲突

一、C 异常处理😊 1.1 定义 C 中的异常处理用于应对程序运行中的异常情况(如除零、数组越界等),通过 try-catch 机制捕获和处理错误,防止程序崩溃。 异常是程序运行时意外发生的事件,可以通过抛出&#xf…

博客MDX渲染方案

MDX渲染方案 Link 本文不由AI生成,原创,转载请注明 当个人博客网站或是独立网站有博客页时,通过渲染mdx文件是一种效率比较高的方式生成博客文章的一种方式 MDX渲染方案 我之前是通过typora直接导出html文件,这种纯静态页面 缺点:太繁琐优点:可以自己选不同的主题,成本…