12 2016 档案

摘要:我们在 "Linux设备管理(一)_kobject, kset,ktype分析" 一文中介绍了kobject的相关知识,在 "Linux设备管理(二)_从cdev_add说起" 和 "Linux设备管理(三)_总线设备的挂接" 举例介绍了内核中是如何进行设备管理的,并在 "Linux设备管理(四)_ 阅读全文
posted @ 2016-12-27 21:02 Abnor 编辑
摘要:sysfs 是一个基于ramfs的文件系统,在2.6内核开始引入,用来导出内核对象(kernel object)的数据、属性到用户空间。与同样用于查看内核数据的proc不同,sysfs只关心具有层次结构的设备信息,比如系统中的总线,驱动以及已经加载的模块等,而诸如PID等信息还是使用proc来管理。 阅读全文
posted @ 2016-12-21 08:41 Abnor 编辑
摘要:扒完了 "字符设备" ,我们来看看平台总线设备,平台总线是Linux中的一种虚拟总线,我们知道, 总线+设备+驱动 是Linux驱动模型的三大组件,设计这样的模型就是将驱动代码和设备信息相分离,对于稍微复杂一点的驱动,都要使用这种结构,我在 ""Linux设备管理(一)_kobject, kset, 阅读全文
posted @ 2016-12-20 08:08 Abnor 编辑
摘要:我在 "Linux字符设备驱动框架" 一文中已经简单的介绍了字符设备驱动的基本的编程框架,这里我们来探讨一下Linux内核(以4.8.5内核为例)是怎么管理字符设备的,即当我们获得了设备号,分配了 cdev 结构,注册了驱动的操作方法集,最后进行 cdev_add() 的时候,究竟是将哪些内容告诉了 阅读全文
posted @ 2016-12-19 09:05 Abnor 编辑
摘要:Linux内核大量使用面向对象的设计思想,通过追踪源码,我们甚至可以使用面向对象语言常用的UML类图来分析Linux设备管理的"类"之间的关系。这里以4.8.5内核为例从kobject,kset,ktype的分析入手,进而一探内核对于设备的管理方式 container_of宏 这个宏几乎是linux 阅读全文
posted @ 2016-12-18 13:28 Abnor 编辑
摘要:字符设备是Linux三大设备之一(另外两种是块设备,网络设备),字符设备就是字节流形式通讯的I/O设备,绝大部分设备都是字符设备,常见的字符设备包括鼠标、键盘、显示器、串口等等,当我们执行 ls l /dev 的时候,就能看到大量的设备文件, c 就是字符设备, b 就是块设备,网络设备没有对应的设 阅读全文
posted @ 2016-12-15 08:11 Abnor 编辑
摘要:Linux是单内核系统,可通用计算平台的外围设备是频繁变化的,不可能将所有的(包括将来即将出现的)设备的驱动程序都一次性编译进内核,为了解决这个问题,Linux提出了可加载内核模块(Loadable Kernel Module,LKM)的概念,允许一个设备驱动通过模块加载的方式,在内核运行起来之后" 阅读全文
posted @ 2016-12-13 21:15 Abnor 编辑
摘要:概念 Linux内核从3.x开始引入设备树的概念,用于实现 驱动代码与设备信息相分离 。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化 阅读全文
posted @ 2016-12-06 11:40 Abnor 编辑
摘要:Kconfig是我们进行内核配置的关键文件,用于生成menuconfig的界面并生成最终确定编译选项的 文件。关于Kconfig文件的编写规则,在 有详尽的叙述。这里主要用实例进行语法分析。 config 确定了条目前面是否有选项,menuconfig界面中的条目中一共有3种主动选项,分别是 ,`` 阅读全文
posted @ 2016-12-04 18:18 Abnor 编辑