Linux Platform Device and Driver
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。
Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显的优势在于platform机制将设备本身的资源注册进内核,由内核统一管理,在驱动程序中使用这些资源时通过platform device提供的标准接口进行申请并使用。这样提高了驱动和资源管理的独立性,并且拥有较好的可移植性和安全性(这些标准接口是安全的)。
Platform机制的本身使用并不复杂,由两部分组成:platform_device和platfrom_driver。
通过Platform机制开发发底层驱动的大致流程为: 定义 platform_device à 注册 platform_device à 定义 platform_driver à注册 platform_driver。
首先要确认的就是设备的资源信息,例如设备的地址,中断号等。
在2.6内核中platform设备用结构体platform_device来描述,该结构体定义在kernel\include\linux\platform_device.h中,
struct platform_device {
const char * name;
u32 id;
struct device dev;
u32 num_resources;
struct resource * resource;
};
该结构一个重要的元素是resource,该元素存入了最为重要的设备资源信息,定义在kernel\include\linux\ioport.h中,
struct resource {
const char *name;
unsigned long start, end;
unsigned long flags;
struct resource *parent, *sibling, *child;
};
下面举s3c2410平台的i2c驱动作为例子来说明:
/* arch/arm/mach-s3c2410/devs.c */
/* I2C */
static struct resource s3c_i2c_resource[] = {
[0] = {
.start = S3C24XX_PA_IIC,
.end = S3C24XX_PA_IIC + S3C24XX_SZ_IIC - 1,
 
相关文档:
嵌入式Linux系统CGI程序设计技术
摘要:在详细介绍一种嵌入式Web服务器BOA的实现与配置方法的基础上,以一个Web在线远程监控GPIO(通用输入/输出)的程序为实例,介绍嵌入式Linux系统下CPU程序设计技术。
关键词:嵌入式系统Linux BOA CGI GPIO
1 概述
随着互联网应用的普及,越来越多的信息化产品需要接 ......
转载 android sdk 1.5 安装与配置
参考 ubuntu 8.10 安装 Android
1.下载android sdk
下载地址如下:
http://dl.google.com/android/android-sdk-windows-1.5_r2.zip
http://dl.google.com/android/android-sdk-linux_x86-1.5_r2.zip
2.
下载eclipse 3.4.2
按官方文档说,android sdk 可以运行在 ......
在windows上尝试centos后我直接给格式化掉centos,启动系统出现grub的启动画面,有2个解决方案
1:在dos环境下用fdisk /mbr 级可以修复mbr即可
2:如果没dos盘则用下面命令:
1)rootnoverify (hd0,0) //回车,记得rootnoverify后面有个空格
2)chainloader (hd0,0)+1 // 记得还是有空格
3 ......
如果你既没做系统启动软盘,同时多系统的引导LILO 和GRUB 又被删除,那么只能使用Linux 系统安装盘来恢复root的密码,步骤如下。 一. lilo引导在出现 lilo: 提示时键入 linux single Boot: linux single 回车可直接进入linux单用户模式 vi /etc/passwd 删除root项中的密码 (这里也可以直接使用passwd命令重新设置root的密码 ......
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
-->
我们说句大白话,所谓“游说者”(
lobbist
,
lobber
)就是古代的“說客”,只是人们平日不好意思这么说而已。当今,甘愿做一名
Linux
游说者是很光荣的事情。此话当真? ......