platform_device

Struct Platform device 详解

注:各设备的struct platform_device结构体在系统启动的时候定义,出于面向对象思想,将各设备用到的资源放在struct resource 结构体内,中段和地址。

其中struct platform_device定义在/arch/arm/plat_s3c24xx/devs.c里面

struct platform_device{

       const char * name; //bus/devicedevice/ 下面显示的名字

       int         id;  //一般为-1,表示只有一个设备

       struct  device       dev; //真正的dev结构体

   其中dev里面 release函数必须加上,负责卸载的时候会出错

       u32              num_resources;//表示有几个成员

       一般等于ARRAY_SIZE(s3c_lcd_resource),

#defineARRAY_SIZE(arr)   (sizeof(arr) /sizeof(arr[0]))

       struct  resource   *resource; //资源的结构体,分为irqmem

      同数组一样,结构体的指针指向结构体数字的指针

       Int *指针指向数组的首地址

       struct platform_device_id         *id_entry;

       struct pdev_archdata archdata;

};

其中struct resource  *resource结构体 在/linux/ioput.h 声明

struct resource {

       resource_size_t  start; //启示地址

//typedef  unsigned int resource_size_t 

       resource_size_t end; //结束地址

       const char *name;

       unsigned long flags;

       struct resource *parent, *sibling,*child;

};#defineIORESOURCE_MEM              0x00000200

#defineIORESOURCE_IRQ             0x00000400//linux/ioport.h

其中flags若为IQRESOURCE_IRQ,则start和end为这个设备的开始和结束的连续中断号,若为IQRESOURCE_MEM,则start和end为该设备的开始和结束地址,如果不连续则可以分开和连续定义,如果地址或者中断只有一个,则将start和end定义为一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值