RK3568驱动指南|第八篇 设备树插件-第83章 设备树插件驱动分析实验
瑞芯微RK3568芯片是一款定位中高端的通用型SOC,采用22nm制程工艺,搭载一颗四核Cortex-A55处理器和Mali G52 2EE 图形处理器。RK3568 支持4K 解码和 1080P 编码,支持SATA/PCIE/USB3.0 外围接口。RK3568内置独立NPU,可用于轻量级人工智能应用。RK3568 支持安卓 11 和 linux 系统,主要面向物联网网关、NVR 存储、工控平板、工业检测、工控盒、卡拉 OK、云终端、车载中控等行业。
?
【公众号】迅为电子
【粉丝群】824412014(加群获取驱动文档+例程)
【视频观看】嵌入式学习之Linux驱动(第八期_设备树插件_全新升级)_基于RK3568
【购买链接】迅为RK3568开发板瑞芯微Linux安卓鸿蒙ARM核心板人工智能AI主板
第83章?设备树插件驱动分析实验
在上个章节中,我们成功移植了设备树插件驱动,而在本章节中,我们将深入研究设备树驱动的分析过程。
大家有了configfs虚拟文件系统数据结构的基础以后,现在分析设备树插件的驱动就非常容易了。
网盘资料“iTOP-RK3568开发板【底板V1.7版本】\03_【iTOP-RK3568开发板】指南教程\02_Linux驱动配套资料\04_Linux驱动例程\65_dtbocfg”dtbocfg.c为设备树插件驱动文件。
在驱动文件中,生成device-tree/overlays目录结构,如下图(图 83-1)所示:
图 83-1
在dtbocfg_overlays_type中实现了ct_group_ops下的make_item和drop_item。如下图(图 83-2)所示:
图 83-2
在命令行输入mkdir命令会去执行的函数,如下图(图 83-3)所示:
图 83-3
在dtbocfg_overlay_item_type中实现了attrs和bin_attrs和ct_item_ops,如下图(图 83-4)所示:
图 83-4
定义了dtbocfg_overlay_item_attr_dtbo结构体。实现了dtbocfg_overlay_item_dtbo_read和dtbocfg_overlay_item_dtbo_write函数,如下图(图 83-5)所示:
图 83-5
重点看当给status写1的时候会发生什么事情,如下图(图 83-6)所示:
图 83-6
当status写入1的时,会执行dtbocfg_overlay_item_create函数。在这个函数中又去执行了of_overlay_fdt_apply函数。of_overlay_fdt_apply函数如下图(图 83-7)所示:
图 83-7
设备树插件(dtbo)里面的节点也要被转换成device_node,有的device_node也要被转换成platform_device。不过在进行转换之前,of_overlay_fdt_apply函数会先创建一个改变集。然后根据这个改变集去进行修改。
创建改变集的目的是为了方便对设备树进行修改和复原。设备树是一种静态的数据结构,一旦被编译和加载到内核中,就难以直接修改。为了解决这个问题,设备树覆盖功能引入了改变集的概念。
改变集是一个描述设备树变化的数据结构,它记录了对设备树的修改操作,如添加、删除或修改节点。通过创建改变集,我们可以在运行时对设备树进行动态修改,而无需修改原始的设备树源文件。
通过创建改变集,我们可以方便地定义需要进行的修改操作,而不必直接操作设备树的底层结构。这提供了一种高层次的抽象,使我们能够以更简洁和可读的方式描述设备树的变化。同时,改变集也可以被保存、传递和应用到其他设备树上,方便在不同系统或环境中进行设备树的配置和定制。
此外,改变集还可以用于设备树的复原。在某些情况下,我们可能需要在运行时撤销对设备树的修改并恢复到原始状态。通过应用反向的改变集,我们可以还原设备树,使其回到修改之前的状态,实现修改的复原。
因此,创建改变集提供了一种方便、可控和可复原的方式来修改设备树,使设备树的管理和配置更加灵活和可靠。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!