首页 理论教育Linux内核与设备驱动:深入探究设备管理需求

Linux内核与设备驱动:深入探究设备管理需求

【摘要】:应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动,这些都是需要内核框架的支持。无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。这些都是对设备及设备开发的需求。

如果对内核代码进行统计,会发现超过百分之五十的代码都是设备驱动。可见Linux内核支持了大量的设备,也说明设备的多样性支持对于内核的重要性。应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动(驱动需要允许动态加载),这些都是需要内核框架的支持。随着嵌入式设备的发展,功耗问题逐渐成为研究的重点,这样在框架方面也需要完整、统一、简单的实现,以对整个设备的使用以及功耗进行管理。所有这些需求都是需要在各种各样的设备上实现,实际就会跨越不同的设备类型,从而形成对各种设备的横切功能。

无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。这些抽象的细节如图3-9所示,图3-9中的设备模型(device model)就是实现横切功能的高级抽象模块,后续会对设备模型进行详细讲解。横切模块通常采用内嵌的方式来具体的实现。kernel对外提供了良好的接口sys文件系统,可以使用户查看具体的设备信息。关于设备,之前已经介绍用户直接交互的设备主要是人机接口(human interface)设备,人机接口设备主要是通过字符设备框架来做具体的实现。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。其他的需求,如中断框架、地址映射、内存管理、定时器等内核核心功能模块都是支撑驱动开发的基础。还有一些情况某些设备中会有子设备,比如现在的视频设备中会有I2C总线进行控制,这样在视频设备中就需要使用I2C的设备驱动,这就要求各种设备驱动提供良好的接口以便其他设备在需要时使用相应的功能。这些都是对设备及设备开发的需求。

978-7-111-49426-3-Chapter03-8.jpg

图3-8 CPU和RAM管理框图(www.chuimin.cn)

978-7-111-49426-3-Chapter03-9.jpg

图3-9 设备模型和抽象设备框图