本节开始引入总线概念。

总线是一种虚拟的概念,不针对任何具体的外设,但是它可以比较好的管理外设。

总线对外设的管理从设备和驱动两个方面说明。

比如我们有3个led灯要控制,一种是向我们之前的那样在软件中写死。

但仔细分析原来的驱动可以发现,我们的代码基本是固定的。

同时如果想改成另一个io端口的话,改源代码中的数据换成另一组寄存器就可以。

为此为了实现通用的,软件逻辑稳定。

更改的只是控制那个硬件。

我们把软件逻辑和硬件分离开,这样每次要更改控制对象,或控制参数,只需要更改硬件参数即可。

本节说的platform总线是一种匹配总线,匹配原则是根据device和drver的名字,如果一直,则会调用在driver部分编写的一个probe函数。

具体做什么完全由probe决定。

platform总线只是提供这种机制,用来把设备(数据参数),驱动(逻辑)分离和匹配。

这节先写一个简单的程序,后面几节在这节的基础上慢慢的改进,优化。

先看一下和硬件相关的,我们这里叫device怎么写。

#include <linux/module.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/types.h>
#include <linux/device.h>
#include <linux/interrupt.h>

从零开始之驱动发开、linux驱动(二十三、platform总线之数据驱动分离)相关推荐

  1. Linux驱动 简单的Linux驱动基础知识

    Linux驱动 简单的Linux驱动基础知识 一.简述         记--Linux驱动学习笔记. Linux驱动程序初始化硬件设备,并提供硬件控制接口给更上一层的应用调用. 例如使用QT应用程序 ...

  2. linux设备模型(8)_platform设备,Linux设备模型之platform总线

    Linux设备模型之platform总线- 一:前言 Platform总线是kernel中最近加入的一种虚拟总线.在近版的2.6kernel中,很多驱动都用platform改写了.只有在分析完plat ...

  3. 从零开始之驱动发开、linux驱动(四十七、linux下的IIC框架【1】)

    I2C总线仅仅使用SCL. SDA这两根信号线就实现了设备之间的数据交互, 极大地简化了对硬件资源和PCB板布线空间的占用. 因此, I2C总线非常广泛地应用在EEPROM. 实时钟. 小型LCD等设 ...

  4. linux用户空间flash驱动,全面掌握Linux驱动框架——字符设备驱动、I2C驱动、总线设备驱动、NAND FLASH驱动...

    原标题:全面掌握Linux驱动框架--字符设备驱动.I2C驱动.总线设备驱动.NAND FLASH驱动 字符设备驱动 哈~ 这几天都在发图,通过这种方式,我们希望能帮大家梳理学过的知识,全局的掌握Li ...

  5. 武汉linux驱动培训转让,linux驱动培训靠谱吗

    作为一名Linux爱好者,在Linux的世界中也算是半个老司机了,从桌面玩到服务器.从ubuntu到centos.从计算机到路由器,各种Linux的花俏玩法都略有体验.作者并非职业Linux选手,我仅 ...

  6. linux内核驱动ldd3_走进linux 驱动开发 之 内核模块

    一.Linux内核简介 1.宏内核与微内核 内核分为四大类:单内核(宏内核):微内核:混合内核:外内核. 宏内核(Monolithickernel)是将内核从整体上作为一个大过程来实现,所有的内核服务 ...

  7. linux更新驱动脚本,编写Linux驱动常见错误(不断更新)!

    工作中遇到的编写Linux驱动的常见错误和注意事项整理,将不断更新. 问题1.驱动的init函数声明错误 出错: [root@localhost]# insmod phyinfo.ko insmod: ...

  8. 从零开始之驱动发开、linux驱动(二十五、framebuffer 子系统框架)

    一.概念 Framebuffer,也叫帧缓冲,其内容对应于屏幕上的界面显示,可以将其简单理解为屏幕上显示内容对应的缓存,修改Framebuffer中的内容,即表示修改屏幕上的内容,所以,直接操作Fra ...

  9. 从零开始之驱动发开、linux驱动(二十九、mmap原理)

    一.概念 mmap是一种内存映射文件的方法,即将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系.实现这样的映射关系后,进程就可以采用指针的方式 ...

最新文章

  1. 10a大电流稳压芯片_稳压二极管你见过,但是它的这些参数你知道吗
  2. 刘启成_使用if及变量编写LAMP管理脚本
  3. 在 python中每个模块用什么来实现_Python代码模块热更新机制实现(reload)
  4. 排序算法----快速排序(数组形式)
  5. 干就行了!!!写程序就像珊瑚,分支太多,哪有那么多复用!
  6. 用权值实现数据被抽取的概率
  7. Validate使用及配置
  8. MVC的实体模型写在类库,为什么被其他类库调用时,用不了模型的表?
  9. 使用before、after伪类制作三角形
  10. 办公自动化-发送邮件功能-无格式-有格式-带附件-0225
  11. preg_match_all中的标记
  12. JavaScript TypeScript 学习总结
  13. Jlink之J-Scope虚拟示波器
  14. Wox and Everything
  15. 数据库课程设计------书店管理系统
  16. xposed模块编写教程_最新的Xposed模块编写教程
  17. Excel用户打死想不到:表格能做APP,WPS用户:金山系出品就是牛
  18. 如何高效的使用mac
  19. 国内有名的汽车与交通调查研究咨询公司情况
  20. 给学妹写C程——中国海洋大学C语言程序设计课作业(一)

热门文章

  1. 如何提取视频中的音频,这个方法真的很简单
  2. 【雷达与对抗】【2006.09】多普勒模式匹配对雷达探测性能的改进
  3. 中考计算机试题ppt判断,2015中考信息技术试题PPT操作题2-26(终)
  4. Gephi简易学习[一]———— Gephi安装,并了解Gephi
  5. 掌握spark 3.0中的查询计划
  6. MySQL之流程函数
  7. 【C语言】浮点型数据在内存中的存储
  8. 电脑USB插拔记录删除方法分享
  9. linux 查看硬盘使用率
  10. Python机器学习1-餐饮企业综合分析