目录 1、为什么会有平台总线? 2、平台总线三要素 3、平台总线编程接口 4、编写能在多平台下使用的led驱动 1、为什么会有平台总线? 1 用于平台升级:三星: 2410, 2440, 6410, s5pc100 s5pv210 4412 2 硬件平台升级的时候,部分的模块的控制方式,基本上是类似 ...
分类:
其他好文 时间:
2020-03-04 09:56:42
阅读次数:
87
2020-02-14 关键字:Linux驱动中的probe函数是如何执行的 1、设备驱动模型 嵌入式 Linux 驱动开发往往都是按照如下的步骤来进行的: 1、实现入口函数 xxx_init() 和卸载函数 xxx_exit() 2、申请设备号 register_chrdev() 3、创建设备文件节 ...
分类:
系统相关 时间:
2020-02-14 18:51:21
阅读次数:
81
背景 了解机制有利于对内核有更深的认识。 wget https://mirrors.aliyun.com/linux kernel/v3.x/linux 3.2.61.tar.xz 内核 1. 在drivers/of/fdt.c 中有如下初始化函数 注释上:展开设备树,创建device_nodes到 ...
分类:
系统相关 时间:
2020-02-12 12:56:02
阅读次数:
120
<平台设备设备驱动> a:背景: 平台总线是Linux2.6的设备驱动模型中,关心总线,设备和驱动这3个实体。一个现实的Linux设备和驱动通常需要挂接在一种总线上(比如本身依附于PCI,USB,IIC,SPI等设备而言)。但是在嵌入式系统里面,SoC系统即集成的独立外设控制器,挂接在SoC内存空间 ...
分类:
系统相关 时间:
2018-03-17 16:12:18
阅读次数:
232
一:什么是平台总线相对于I2CSPIUSB等总线实际存在的物理总线来说,平台总线是一种虚拟的总线,它并不对应实际的物理总线。二:为什么需要平台总线linux从2.6起就加入了一套新的驱动管理和注册的机制platform平台总线。平台总线中使用platform_device()来注册一个设备,使用pla..
分类:
其他好文 时间:
2017-07-31 22:14:05
阅读次数:
134
//通过led_classdev类型的指针得到s5pv210_led_pladata类型的指针,这个s5pv210_led_pladata类型结构体是我们自己定义的设备数据部分。
staticinlinestructs5pv210_gpio_led*to_gpio(structled_classdev*led_cdev)
{
returncontainer_of(led_cdev,structs5pv210_gpio_led,cdev..
分类:
系统相关 时间:
2017-06-05 22:09:43
阅读次数:
220
1、在平台总线的实践环节的一和二中,分别将led的platform_driver和platform_device初步完成,接下来看下platform_device和platform_driver同时存在时的效果,就是led的平台设备已经注册到内核中,并且在根文件系统中ismod加载上led的平台总线驱动。看一下platform_device和pla..
分类:
系统相关 时间:
2017-06-03 00:49:04
阅读次数:
297
1、上一节中,我们将初步的驱动代码写完后编译后,放入到rootfs中进行insmod时,在/sys/bus/platform/drvier/目录中能够看到why_led这个目录,但是进入后只有一些基本的东西,却没有能使用这个led驱动的关键性东西,那是因为我们没有提供platform_device,并且驱动代码中的prob..
分类:
系统相关 时间:
2017-06-02 01:15:26
阅读次数:
316
1、首先回顾下之前写的驱动和数据在一起的led驱动代码,代码如下:#include<linux/module.h>
#include<linux/init.h>
#include<linux/leds.h>
#include<asm/io.h> //ioremap和iounmap的头文件 writel等
/**********************************静态映射虚..
分类:
系统相关 时间:
2017-06-01 17:51:42
阅读次数:
228
设备为数据,驱动为加工着1、以led-s3c24xx.c为例来分析platform设备和驱动的注册过程其中关于led的驱动数据结构为:staticstructplatform_drivers3c24xx_led_driver={
.probe =s3c24xx_led_probe,
.remove =s3c24xx_led_remove,
.driver ={
.name ="s3c24xx_led",
..
分类:
系统相关 时间:
2017-05-30 23:22:18
阅读次数:
331