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;
};
定义好了 platform_device
结构体后就可以调用函数 platform_add_devices
向系统中添加该设备了,之后可以调用
platform_device_register()
进行设备注册。要注意的是,这里的 platform_device
设备的注册过程必须在相应设备驱动加载之前被调用,即执行 platform_driver_register
之前 ,
原因是因为驱动注册时需要匹配内核中所以已注册的设备名。
在驱动初始化函数中调用函数 platform_driver_
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
干嘛学习 Scripts
这个问题可有趣的很了,我为什么要学习 scripts 呢?不要学可不可以呀!?呵呵!如果您只想要『会用』 Linux 就好的话,那么这一个部分确实可以先跳过去不看也没关系,不过,如果您想要更加的了解与控制 Linux ,使 Linux 运作更顺畅之外,还可以高枕无忧的让你的 Linux Server 在 Internet 上面提供相关 ......
POSIX
是一种标准规范,主要针对在 Unix
操作系统上面跑的程序来进行规范。 若你的操作系统符合 POSIX ,则符合 POSIX 的程序就可以在你的操作系统上面运作。 Linux
由于支持 POSIX ,因此很多 Unix 上的程序可以直接在 Linux 上运作, 因此程序的移植相当简易!也让大家容易转换平台,提升
Linux 的使用率。
驱动与 ......
因工作需要经常要查找这些服务用途,因此将网上的一些列表进行相应收集整理,方便查阅
不要关闭以下服务(除非你有充足的理由):
acpid, haldaemon, messagebus, klogd, network, syslogd
请确定修改的是运行级别 3 和 5。
NetworkManager, NetworkManagerDispatcher
&nbs ......