资讯动态

浅谈内核框架和设备树

发布时间:2026/10/21 7:32:34 来源:尧图企业网站定制
目录内核基本框架(字符设备)前言应用程序接口平台设备驱动设备树简介内核基本框架(字符设备)前言在前几次介绍中我们已经知道了一个最基本的字符设备该怎么写但是随着我们学习平台驱动模型驱动总线设备模型设备树这些很容易弄混淆故在此进行梳理应用程序接口我们在讲驱动代码之前都了解过应用程序无非就是openwriteread文件我们想操作一个文件写应用程序来控制硬件首先需要开发者给予我们的接口这接口就是我们之前讲的注册字符设备那一套简单复习一下。struct dev_t deveno; struct cdev *dev; struct class class; struct device *device;//其实就是这四个的定义了 //我们需要定义这四个结构体变量来注册我们的字符设备 //接下来我们要实现我们自己的openwritereadrelease函数其中openrelease必须其他可选并定义struct file_operations 变量来储存函数 //然后我们可以在init或者probe这些放初始化的函数里进行注册总体就按照四个变量进行注册就行先用alloc_chrdev_region申请设备号cdev_init初始化绑定函数表然后再用cdev_add把字符设备加入VFS然后再定义classdevice就OK然后我们就可以通过操作我们dev里生成的文件来读写我们想操作的硬件平台设备驱动与上面建立与用户的联系的任务不同平台设备驱动是为了建立内核与硬件的联系你就比如平台设备里面存放硬件资源平台驱动里面存放与设备匹配后初始化的工作它们做的就是让写的驱动获取硬件资源再工作跟上面的那个是两套东西分工不同如果你想在驱动提供用户应用接口就也需要注册字符设备。设备树简介简单梳理了一下之后讲讲设备树设备树就是一个设备节点树状图里面存放着设备的信息资源就是设备的描述性文件它的优势是可以简单的实现跨板移植。打个比方传统的c设备把硬件信息全写进c代码然后编译内核板子更新微调硬件就需要重新改c代码重新编译非常浪费时间而且随着外设越来越多这个工程量也是大的吓人于是设备树出现了它仅仅是描述性文件不带任何逻辑我们可以用接口读取这些资源在我们驱动里进行我们的逻辑这样做有什么好处呢就是我们在微调外设的时候只需要微调设备树就行不需要重新编译而且在不同板子中可以让一套驱动适配多个板子这就是设备树的好处设备树很重要这也是很多驱动工程师自嘲为设备树工程师的原因。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑