以platform总线方式注册杂项设备驱动

原创 2016年03月31日 11:54:41

标题:以platform总线方式注册杂项设备驱动

时间:2016-3-31

平台:迅为itop4412开发板

 

1.   编写杂项设备驱动程序以及Makefile文件,编译后生成的.o文件和驱动程序是添加到内核的必备材料。

2.在内核目录的字符驱动下修改Kconfig文件(仿写,有编译进入内核,模块,不添加三种


这里和make menuconfig的操作界面匹配


3.修改字符驱动目录下的Makefile文件(仿写),下面的是选择编译,有的是强制编译进入内核


1.      注册驱动的时候,系统会通过 platform_match 函数匹配设备和驱动。

2.      注册设备的结构体为 platform_device,注册驱动的结构体为 platform_driver。设备和驱动结构体的成员 name 字段,相同则匹配,如果匹配了则会调用 platform_driver 中的 probe 函数,注册驱动。

3.      在虚拟总线上注册设备:进入解压之后的内核文件夹“iTop4412_Kernel_3.0”,使用命“vim include/linux/platform_device.h”打开“platform_device”所在文件

structplatform_device {

        const char      * name;

        int             id;

        struct device   dev;

        u32             num_resources;

        struct resource * resource;

 

        const struct platform_device_id*id_entry;

 

        /* MFD cell pointer */

        struct mfd_cell *mfd_cell;

 

        /* arch specific additions */

        struct pdev_archdata    archdata;

};

 

第一个参数“name”,是一个字符指针,驱动初始化前需要和注册驱动的“name”字段匹配的参数;

第二个参数“id”,表示子设备编号,一个设备如果有多个子设备号,则需写入子设备号数量,如果只有一个则用-1 表示;

第三个参数“device”,表示结构体内嵌的设备结构体;

第四个参数 num_resource,表示设备使用的资源数组。

在大多数驱动中,需要我们写的只有设备名*name 和设备编号id 。

 

4.      添加设备到平台总线:在内核文件夹目录下,用vim arch/arm/mach-exynos/mach-itop4412.c”,打开平台文件,添加设备,仿写即可



保存退出,重新编译内核,烧写到开发板。

开发板启动之后,使用命令“ls /sys/devices/platform/”可以查看到新注册的设备



版权声明:原创文章转载请注明出处。

Linux杂项设备驱动

一、Linux杂项设备驱动简介 Linux杂项驱动出现的意义在于:有很多简单的外围字符设备,它们功能相对简单,一个设备占用一个主设备号对于内核资源来说太浪费。 所以对于这些简单的字符设备它们共用一...
  • hongwazi_2010
  • hongwazi_2010
  • 2013年10月23日 21:42
  • 1771

Linux驱动中的platform总线分析

最近在复习platform总线相关的知识,碰到一篇感觉不错的文章。转载自:http://blog.csdn.net/pillarbuaa/article/details/7680372概述从Linux...
  • fml1997
  • fml1997
  • 2017年08月27日 20:48
  • 277

Linux字符设备驱动和杂项设备驱动对比

初学Linux驱动程序的时候,可能对什么是字符设备驱动(char device)和杂项设备驱动(misc device)并不是很了解,更谈不上如何区分了。我自己当初在学习Linux字符设备驱动的时候,...
  • JansonZhe
  • JansonZhe
  • 2016年01月22日 16:43
  • 2249

字符设备注册platform平台驱动机制

怎么利用平台设备驱动机制来写驱动: ------------------------------------------------------------------------- 1.先实现设...
  • chenliang0224
  • chenliang0224
  • 2016年04月14日 23:13
  • 1113

设备驱动归纳总结(八):1.总线、设备和驱动 —— 总线的注册

linux设备驱动归纳总结(八):1.总线、设备和驱动 网址:http://blog.chinaunix.net/uid-25014876-id-109733.html ...
  • a746742897
  • a746742897
  • 2016年10月30日 19:24
  • 542

platform设备驱动框架搭建分析

之前接触到的字符设备驱动是非常单纯的Linux字符设备驱动,他不具备工程中Linux驱动中的设备与驱动分离思想和设备驱动的分层思想,不具备“总线-设备-驱动”模型的概念。接下来通过分析platform...
  • u011549260
  • u011549260
  • 2015年04月20日 17:45
  • 1768

(三) 总线_设备_驱动注册

1.总线-设备-驱动注册流程详解  在linux2.6之后,linux设备驱动分为三个实体总线、设备、驱动,平台总线将设备和驱动匹配。在系统注册任一个驱动的时候,都会寻找相应的设备;当系统注册设备的时...
  • u013346950
  • u013346950
  • 2016年09月24日 15:18
  • 164

Linux 内核--总线设备驱动模型(字符/块/网络设备 && platform设备)

一、概   述        总线设备驱动模型主要包含总线、设备、驱动三个部分。        现实总线:一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB...
  • lxl584685501
  • lxl584685501
  • 2015年06月04日 15:09
  • 1158

设备注册、驱动注册以及杂项设备注册之间的关系

1.设备声明是在平台文件/home/leizi/android/iTop4412_Kernel_3.0/arch/arm/mach-exynos/mach-itop4412.c中,如下图,并且设备名称...
  • wlwl0123
  • wlwl0123
  • 2017年03月19日 16:23
  • 543

framebuffer设备,字符设备,platform总线间的联系

欢迎各位转载!!! 最近在看Linux设备的驱动程序编程,里面的类型的设备驱动类型把我搞糊涂了。首先书上说linux中有字符设备,块设备,网络设备三大类驱动。但是接着又扯出一大堆的的什么platf...
  • d_a_r_k
  • d_a_r_k
  • 2015年12月24日 16:36
  • 736
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:以platform总线方式注册杂项设备驱动
举报原因:
原因补充:

(最多只允许输入30个字)