也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
2025-09-30
关于GPIO管理,Linux内核提供了GPIO lib来实现具体的GPIO服务,提供了统一的接口供其他模块使用,基本的框架如图4-49所示。
图4-49 Linux内核GPIO框架
从图4-49可见,各种设备模块都可以访问使用GPIO,相应的需要通过GPIO lib和Linux内核中断处理子系统进行操作。而真正的GPIO芯片的实现是通过GPIO chip提供的接口来实现的。
1ᤫ外部使用GPIO的操作接口
GPIO lib提供的功能接口如下:
这些接口的名字都很好理解,相应的都会调用GPIO chip的接口函数。
2ᤫGPIO内部管理框架
GPIO框架的重要数据结构就是gpio_chip,详细内容如下:
系统中可以有多个gpio_chip,而每个gpio_chip管理一组GPIO,其中base表示相应的gpio_chip管理的系统中的起始GPIO号,一共管理ngpio个GPIO。(https://www.chuimin.cn)
内核将所有的GPIO组成数组,每个GPIO用gpio_desc进行描述,具体的结构如下:
其中的chip表示该GPIO由哪个gpio_chip进行管理。其中,flags表示该GPIO是否被请求、输入输出状态等与GPIO功能相关的状态及属性。
GPIO框架中还需要对gpio_chip进行管理,主要是将实际的物理GPIO的管理实体gpio_chip和逻辑层的gpio_desc进行绑定,相应绑定的GPIO号是在gpio_chip的base至base+ng-pio之间。对之前gpio_request申请的,只有在绑定gpio_chip之后才能申请成功,继而对GPIO进行正确的操作。
具体的gpio_chip管理接口如下:
3ᤫGPIO的sysfs接口
针对应用程序对GPIO操作的需求,GPIO库将GPIO开放到sysfs文件系统中,这样可以在用户层对GPIO进行相应的操作。在用户层进行操作的好处是,可以直接进行开发而不是通过驱动程序进行,另外从软件版权考虑可以将不同的版权更好的隔离避免彼此的污染。相应的接口如下:
开放到sysfs的GPIO有如下的操作接口:
以上是GPIO框架抽象层的实现,体系结构具体的实现主要就是实现并注册结构体gpio_chip及相关的操作。从整体上来说GPIO框架还是简单直接的。
相关文章
也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
2025-09-30
首先要明确,这里讲述的地址映射框架主要是指内核空间虚拟地址的使用和映射。嵌入式系统通常是采用ARM的处理器,相应的地址映射框架自然就从Linux内核的ARM体系结构入手。图4-19ARM内核地址空间映射关系2.内核中的映射实现和相关的权限管理地址映射的代码框架如图4-20所示。图4-20ARM地址映射代码框架谈到create_mapping的映射,就会涉及体系结构中不同的访问方式和权限。......
2025-09-30
1基本中断处理流程Linux内核的中断处理框架当然要满足之前提到的各种需求。对Linux内核来说,每个中断号都是通过irq_desc进行描述的,可以说irq_desc是中断处理的核心。通过这些抽象结构就可以实现整个中断处理的框架。2中断处理延时操作下面介绍系统如何解决中断中大数据量时的延时处理问题。图4-28是Linux内核中断处理流程。......
2025-09-30
内核核心功能应该能满足最小系统的需求。最小系统中最核心的硬件是CPU和RAM,在系统执行期间这两个硬件是必需的。所以这两部分的管理可以说是Linux内核的重中之重,对性能等各方面的影响也是最大的。可见Linux内核在目录编排上也是有比较多的讲究的,这在后续讨论设备驱动时会有更多介绍。由于DMA在硬件中的广泛使用,内核同样需要在核心部分提供该功能。可见Linux内核核心功能需求也是逐渐发展来满足内核和驱动开发需要的。......
2025-09-30
Linux内核中的内存管理框架考虑到了各个方面的需求,实现得非常精细。1内核对于内存的管理和使用的整体框架Linux内核的内存管理也要满足内核自身的需要。图4-32展示了Linux内核的内存管理框架。仅有好的页分配器是不能满足内核对于内存管理的需要的,前面已经介绍了,内核有很多频繁使用的数据结构,对于它们最好单独分配空间进行管理,这就形成了SLAB分配器。......
2025-09-30
从图3-2中可以理解Linux内核就是将硬件的功能抽象出来,为用户的应用程序提供各种系统服务。与用户相关的属性是与Linux内核中整体安全性相关的,这部分功能通常和硬件具体功能关系不大,而是附加在逻辑功能之上的属性。本书是以嵌入式系统为基础进行说明,所以将重点放在硬件设备的具体功能以及Linux内核在硬件之上的具体实现方面。Linux内核的整体框架如图3-3所示。图3-3清晰地展现了Linux内核的实现层次,以及应用层功能和硬件功能的对应关系。......
2025-09-30
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2025-09-30
Linux内核作为目前最成功以及发展最快的开源项目之一,在实际应用中取得的巨大成功是举世瞩目的。Linux Foundation于2013年9月发布了《Who Writes Linux》报告,公布了最新的不同组织对Linux内核贡献的情况,见表1-1。表1-1不同组织对Linux内核贡献贡献前30名的公司中半导体厂商就有11家,约占三分之一,如果算上硬件相关的公司会超过20家,贡献总量超过了60%。可见硬件厂商对Linux内核的贡献是很大的,对Linux内核的影响也是巨大的。......
2025-09-30
相关推荐