易截截图软件、单文件、免安装、纯绿色、仅160KB

Linux设备驱动程序学习之设备模型二


Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:
http://blog.chinaunix.net/u1/34474/showart_404278.html
在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。
通过一个设备在内核中生命周期的各个阶段,可以更好地理解Linux设备模型。我将通过分析lddbus和sculld的源码来了解Linux设备模型中各环节的整合。《LDD3》中的(PCI总线)各环节的整合这部分内容作为参考资料,因为嵌入式Linux比较少用到PCI总线。看这部分内容一定要先熟悉一下 lddbus 和 sculld 的源码。
 
一、lddbus模块:添加总线、导出总线设备和设备驱动的注册函数。
lddbus子系统声明了一个bus_type结构,称为ldd_bus_type 。源码是在编译时初始化了这个结构体,源码:
/*
 * And the bus type.
 */
struct bus_type ldd_bus_type = {
    .name = "ldd",
    .match = ldd_match,
    .uevent  = ldd_uevent,
};
在将lddbus子系统装载到内核和从内核卸载的源码如下:
static int __init ldd_bus_init(void)
{
    int ret;
    ret = bus_register(&ldd_bus_type); /*注册总线,在调用这个函数之后ldd_bus_type 结构体将向内核注册,在/sys/bus中出现ldd文件夹,其中包含两个目录:devices 和 drivers */
    if (ret)
        return ret;
    if (bus_create_file(&ldd_bus_type, &bus_attr_version)) /*添加总线属性,将在/sys/bus/ldd目录中出现version属性文件*/
        printk(KERN_NOTICE "Unable to create version attribute ! \n");
    ret = device_register(&ldd_bus);/*将总线作为设备注册。因为总线也可以是一个设备,比如在S3C2440中SPI总线控制器相对于ARM920T核心来说,其实就是一个外设。调用此函数后,就会在/sys/devices中出现ldd0目录*/
    if (ret)
        printk(KERN_NOTICE "Unable to register ldd0 ! \n");
    
    printk(KERN_NOTICE "Mount lddbus ok


相关文档:

嵌入式linux开发环境构建

一、安装虚拟机VMware
 
二、在虚拟机上安装linux
 
三、安装VMware  tools
      1、虚拟机菜单栏—>VM—>Install  VMware  Tools
      2、进入操作系统安装VMware Tools
四、更新源并更新可用的程序列表 ......

Fedora Linux 下安装 source navigator 的 bug shoot!

安装后
运行snavigator
出现
Can't find a usable tk.tcl in the following directories: 
/opt/sourcenav/share/tk8.3
/opt/sourcenav/share/tk8.3/tk.tcl: no event type or button # or keysym
no event type or button # or keysym
while executing
"bind Listbox <MouseWheel> {
%W yview scroll ......

Linux(Ubuntu)设置环境变量

今天又学了环境变量的设置,感受比较深一些,首先把我从网上看到的知道和大家分享一下。
环境变量是和Shell紧密相关的,用户登 录系统后就启动了一个Shell。对于Linux来说一般是bash,但也可以重新设定或切换到其它的 Shell。对于UNIX,可能是CShelll。环境变量是通过Shell命令来设置的,设置好的环境变量又可以被所有当前 ......

linux源代码阅读工具进阶

Windows下的源码阅读工具Souce Insight凭 借着其易用性和多种编程语言的支持,无疑是这个领域的“带头大哥”。Linux/UNIX环境下呢?似乎仍然是处于百花齐放,各有千秋的春秋战国时代,实 际上,似乎其环境下的任何软件都是处于一种逐鹿中原的态势,也许这就是“集市”之于“大教堂”的优势所 ......

Linux设备驱动程序学习之高级字符驱动程序

Linux设备驱动程序学习笔记系列文章原作者是:Tekkaman Ninja,他博客地址:
http://blog.chinaunix.net/u1/34474/showart_404278.html
在此向Tekkaman Ninja表示感谢,写出这么好的文章,使我少走了很多弯路。
今天进入《Linux设备驱动程序(第3版)》第六章高级字符驱动程序操作的学习。
一、ioctl
大部分设备除了读 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号