观宋宝华设备树视频的感想
来源:互联网 发布:淘宝价格旁已验证正品 编辑:程序博客网 时间:2024/06/05 02:57
如果设备写在驱动里面,代码量非常大,而且非常不方便移植。因此将设备放在驱动外,再通过一个接口,和驱动关联,这个接口就叫做总线,在总线上挂载了设备了驱动。无论是先注册总线还是先注册驱动,注册驱动的时候,会通过匹配找到与之对应的设备;注册设备的时候,会通过匹配找到与之对应的驱动,通过of_match_xxx函数匹配name,id。 当匹配成功的时候,会进入probe函数。在probe函数内会alloc分配一个设备的内存,然后通过private拿到该设备的私有的成员数据(由于一般是多个设备对应一个驱动)。通过一个获取设备硬件资源的接口platform_get_resource()(GPIO、中断号等),拿到这个设备的硬件信息,这一点和C++里面的this指针类似,千万不用把设备声明成全局变量。最后注册这个设备。此外在内核代码中充斥着大量的面向对象的思想。
设备和驱动就相当于一对情侣,而总线更像是一位月老。设备主要放的是板级的硬件信息,存放在内核源码树的/arm/arch/目录下,驱动则在内核源码树的/drivers目录下。在注册设备成功的时候,匹配的名字是globalfifo开发板/sys/devices/platform目录下会多出一个设备文件globalfifo,只有当注册驱动成功的时候,在开发板/sys/bus/platform/drivers目录下会多出一个驱动文件globalfifo,此时/sys/bus/platform/devices/globalfifo下会生成一个链接文件指向该驱动文件(/sys/bus/platform/drivers/globalfifo)。
驱动只管驱动,设备只管设备,总线则负责匹配设备和驱动,而驱动则通过标准的途径拿到板级信息。
如何看待sys/class文件?
比如有两个led设备,在/sys/bus/platform/devices中找,可能会藏的很深,文件路径很长,但是在/sys/class角度下看,就直接存放在此目录下/sys/class/leds
另外平台设备模型的另一个好处是方便了电源的管理,是bottm->up,top->down的关系。
由于设备的代码都是由C语言来描述的,没有太大的技术含量,有很多的垃圾代码。因此采用设备树的方法,将设备的硬件信息的代码用dts脚本来描述,内核代码启动的时候,设备树的节点会被加载并自动的展开为C语言,本质上和原来设备平台模型没有差别,甚至一些硬件的信息,比如GPIO和中断都帮我们赋值好了,不需要再像指向那样手动的赋值。带来的好处好处就是垃圾代码变少了。
阅读全文
0 0
- 观宋宝华设备树视频的感想
- 录视频的那点感想
- 录视频感想
- UML视频感想
- 2017.10.09 穆瑞课KUKA机器人培训视频的感想
- 基于video4linux的视频设备编程
- 基于video4linux的视频设备编程
- Video4Linux 视频设备数据结构的定义
- 如何列举你系统已经安装的设备(视频压缩设备,视频捕获设备...)!
- 如何列举你系统已经安装的设备(视频压缩设备,视频捕获设备...)
- 如何列举你系统已经安装的设备(视频压缩设备,视频捕获设备...)!
- 我们的java基础到底有多差 一个视频引发的感想
- 写完B+树的一些感想
- 视频《畅游CMMI》笔记及感想
- ”腾讯音视频服务”初次使用感想
- 枚举系统视频设备
- 视频设备接口
- 视频设备常见接头
- 关于手机已经设置成开发者模式但是Android studio不能识别问题
- final, finally, finalize 的区别
- 新零售的新思路:如何管理复杂?
- SpringCloud分布式开发五大神兽(一)
- Go语言开发环境搭建
- 观宋宝华设备树视频的感想
- 对于中断的理解
- MATLAB深度学习 : 一般深度学习MATLAB代码解析
- 作为产品运营,如何培养自己的用户思维?
- 中小企业搭上了虚拟化发展的“快车”
- 深度:一套系统从无到有的设计
- springboot 打war包去掉项目前缀会 启动两次解决
- 安卓开发 As插件解放双手
- FormData Ajax上传文件详细教程