linux的platform驱动
从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系统后,很多入侵者往往就开始得意忘形了。这其中还有一个原因,就是技术性也要求更高了。下面,我们来看看一些常用的经典工具。(未经允许,谢绝转载!)
1、从这里延伸:后门和连接工具
(1)Httptunnel
Tunnel的意思是隧道,通常HTTPTunnel被称之为HTTP暗道,它的原理就是将数据伪装成HTTP的数据形式来 ......
环境变量:
export P4PASSWD=abcdefg
export P4CLIENT=dyoldfish.com //这个可以不设
export P4USER=dyoldfish
export P4PORT=192.168.1.198:1666
命令:
1、p4 client #配置本地信息,文件下载在哪里在这里面配置,Root项
2、p4 sync #从perforce 下载文件
3、p4 login& ......
Linux的裁剪
=======================================
好些时候,我们需要一个只要一张软盘就能启动Linux 的系统,比如说做路由器。但是我们该怎样做呢? 也就是说我们要把Kernel和FileSystem都做在一张3.5'的盘上。我们先把FileSystem 分解成如下几个部分吧。
1. /bin目录下的文件
bin目录通 ......
花了几天的时间,终于把系统从近200 MB裁到小于16 MB, 虽然现在看来过程非常简单,对于最初的那点恐惧觉得有点可笑。在这里把主要心得写一下,总结一下心得, 希望可以给相关人员一点参考。
主要步骤如下:
1. 充分了解系统
这有点像废话,但是确实很 ......
这一段时间一直进行Linux on floppy的尝试,借此希望能对如何构造一个Linux发行版本、Linux的启动、Linux系统的裁剪有一个深刻的认识。
在进行中,我有一些自己的心得体会,尤其是如何构造一个较小的Linux系统。这里贴出其中的一部分,希望能与各位共同分享。有不对的地方,也望各位高手能不吝赐教。
构造Linux on flop ......