一、前言

块设备主要为存储设备设计的框架。 在前面章节Linux下驱动开发_块设备驱动开发(内存模拟存储) 里介绍了块设备驱动编写思路,并且利用内存模拟了硬件存储,完成了块设备驱动开发测试。这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

SD卡本身支持SPI协议、SDIO协议,一般能跑Linux系统的CPU都在硬件上支持SPI协议、SDIO协议,如果要提高读写速度,肯定是采用SDIO协议最合适。这篇文章主要是介绍SD卡+块设备框架的驱动开发思路,代码里选择了SPI协议来进行通信,读写SD卡的速度比较慢(与SDIO比数据线都少了几条)。  SPI协议比较简单,学习过单片机的都比较熟悉,并且SPI协议还可以自己模拟时序,不一定要硬件上支持的,在难度上就降低了不少。

块设备驱动的思路是: 处理应用层的请求。

我们知道操块设备,都是通过文件系统读写访问比如:(U盘、SD卡、磁盘)这些设备。

读写操作块设备的常用命令:

dd、fdisk、mount

比如以下的文件操作代码:

mount /dev/sdb /mnt
fopen("/mnt/123.c","wb");
fwrite("1233445656");
fclose();

代码执行之后的请求反应到驱动层的接口

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)相关推荐

  1. Linux下按扇区读写块设备,Linux下按扇区读写块设备

    本文介绍Linux下按扇区读写块设备(示例TF卡),实际应用是在Android系统上,主要方法如下: 1.找到sdcard的挂载点,在android2.1系统下应该为/dev/block/mmcblk ...

  2. Linux驱动开发 15 块设备驱动框架

    CAN         I.MX6ULL 带有两个 CAN 控制器: FlexCAN1 和 FlexCAN2 , NXP 官方的 EVK 开发板这两个 CAN 接口都用到了,因此 NXP 官方的设备树 ...

  3. Linux驱动编写(块设备驱动代码)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 按照ldd的说法,linux的设备驱动包括了char,block,net三种设备.char设备 ...

  4. linux 块设备驱动 (三)块设备驱动开发

    linux 块设备驱动 (三)块设备驱动开发 一: 块设备驱动注册与注销 块设备驱动中的第1个工作通常是注册它们自己到内核,完成这个任务的函数是 register_blkdev(),其原型为: int ...

  5. Linux块设备驱动总结

    <Linux设备驱动程序>第十六章 块设备驱动程序读书笔记 简介 一个块设备驱动程序主要通过传输固定大小的随机数据来访问设备 Linux内核视块设备为与字符设备相异的基本设备类型 Linu ...

  6. 转载:谢谢原作者:块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动)

    1   内核块设备驱动基础学习与实战 1.1 设备驱动IO架构初探 操作系统是如何将数据读到缓冲区的,发生了什么?我们带着这样的问题,粗略走一下read调用系统过程,希望这个初探,可以唤起大家研究操作 ...

  7. 块设备驱动、bio理解

    别人写过的内容,我就不写了.贴一下大佬的博客,写的非常好: 块设备驱动实战基础篇一 (170行代码构建一个逻辑块设备驱动) 块设备驱动实战基础篇二 (继续完善170行过滤驱动代码至200行) 块设备驱 ...

  8. Linux驱动开发|块设备驱动

    块设备驱动 块设备驱动是 Linux 三大驱动类型之一,块设备驱动比字符设备驱动复杂得多,不同类型的存储设备又对应不同的驱动子系统,下面介绍块设备驱动框架及使用 一.块设备介绍 块设备是针对存储设备的 ...

  9. Linux驱动开发--写一个块设备驱动

    原文地址:[原创] 写一个块设备驱动 http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=2017377&fromuid=288 ...

最新文章

  1. SAP MM 采购单据的屏幕布局配置中字段选择值“$$$$”有什么用处?
  2. Database之SQLSever:SQLSever数据库管理学习并深入理解SQL命令语句进阶综合篇《初级→中级→高级》(持续更新,建议收藏)
  3. IOS UIAlertController 使用方法
  4. vim括号操作(转)
  5. 从python存入的文件是乱码_如何解决python写入html文件中乱码的现象(图文详解)...
  6. C语言递归算法十进制数转换为八进制(附完整源码)
  7. python处理xml文件_Python解析并修改XML文件
  8. c# 文件压缩、解压及下载
  9. xshell 连接不了 centos7
  10. 写“博客”页面踩过的坑
  11. 计算机算法设计与分析第四版在线,计算机算法设计与分析(第4版) 王晓东习题解答计算机算法设计与分析(第4版) 王晓东习题解答.pdf...
  12. 即时通讯源码,IM源码-哇谷即时通讯源码,哇谷团队源码开发
  13. java生成竖排文字图片_怎么给图片加上竖排文字?
  14. 踏歌智行筹备A股上市:正招募首席财务官,投资方包括宝通科技等
  15. jenkins如何清缓存_Maven本地缓存清理小工具
  16. 待到凤凰花开季,惟愿前程皆似锦
  17. 用python开发的运维管理系统_python运维开发常用模块(一)psutil
  18. ANC主动降噪耳机有哪些?ANC主动降噪耳机推荐!
  19. Python判断一个正整数是否为素数的算法
  20. Cmder | 一款命令行增强工具

热门文章

  1. mac下如何运行sh脚本文件
  2. 时间戳转换日期格式(代码示例)
  3. 如何使用在线工具将PDF转换为图片
  4. 六自由度机器人半实物实验平台
  5. Kali Nethunter安装指南
  6. 怎么把word文件插入到公众号文章中
  7. 小程序事件绑定 传值和路由
  8. GNU 工具链调试信息分离和挂载:支持 GDB 调试 RELEASE 版本程序
  9. 一个头发日渐稀疏的前端开发突然 emo
  10. 单是重启redis那么它里边的数据依然存在