RK3568驱动指南|第六篇 -平台总线-第50章 平台总线模型介绍

瑞芯微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主板


第六篇 平台总线

第50章 平台总线模型介绍

在前面所有章节中,无论要完成何种需求,我们都编写了一个独立的驱动程序,但这样编写出来的驱动程序在重用性和可移植性上是很低的,无论之后要编写一个同类型的驱动还是将该驱动更换一个平台,都要花费时间重新修改驱动代码,而驱动的分离和分层这一软件思路的提出(即本章节要讲解的平台总线模型),就是为了解决这个问题,下面让我们一起进入平台总线模型的学习吧。

50.1 什么是平台总线?

平台总线(Platform bus)是Linux内核中提供的一种虚拟总线,用于管理和组织与特定硬件平台相关的设备和驱动。它充当了平台设备(platform device)和平台驱动(platform driver)之间的桥梁,负责将它们进行匹配和绑定。

当系统注册一个平台设备时,平台总线会寻找与之匹配的平台驱动。它会遍历已注册的平台驱动列表,尝试与每个平台驱动进行匹配,直到找到与平台设备匹配的驱动为止。一旦找到匹配的驱动,平台总线会将平台设备与平台驱动进行绑定,使得设备可以被正确地初始化和操作。

同样地,当系统注册一个平台驱动时,平台总线会寻找与之匹配的平台设备。它会遍历已注册的平台设备列表,尝试与每个平台设备进行匹配,直到找到与平台驱动匹配的设备为止。一旦找到匹配的设备,平台总线会将平台设备与平台驱动进行绑定,使得驱动可以管理和控制与该设备相关的操作。

设备、平台总线、驱动的关系如下图(图 50-1)所示:通过引入平台总线,Linux内核提供了一种通用的机制来管理和组织与特定硬件平台相关的设备和驱动。它使得设备和驱动之间的匹配过程更加自动化和灵活,同时也提高了嵌入式系统的可移植性和可扩展性。

50.2 平台总线的优势

在前面的章节中,我们编写的驱动程序将驱动和设备相关的内容放在一起,但是当涉及到多个相同类型的设备时,这种方法会引发一系列问题。举个例子,假设我们有一个硬件平台,该硬件平台上存在了500个模块,这些模块都使用了LED灯。如果我们使用杂项设备来编写驱动,虽然相比字符设备,杂项设备的代码量较少,但我们仍旧需要编写500份类似的代码,从而生成相应的设备节点,以供上层应用在不同模块上控制LED灯。

编写500份重复的代码会带来两个问题。首先,会造成大量重复劳动。其次,代码的重用性较差。如果我们需要将这些驱动从一个平台移植到另一个平台,就需要逐个修改驱动代码,尽管只需修改与硬件相关的部分,但仍旧是一个很大的工作量

而在引入了平台总线模型后,这些问题就得到了很好地解决。通过使用平台总线模型,将设备驱动和平台设备进行了分离。这样一来,我们只需编写一份通用的驱动代码即可,然后针对不同的平台设备进行配置,这就大大减少了重复编写代码的工作量,并提高了驱动代码的重用性。当我们需要将驱动移植到不同的平台时,只需对硬件相关的部分进行适配即可,其他部分可以保持不变。

整理出来的平台总线优势如下所示:

1设备与驱动的分离:传统的设备驱动模型将设备和驱动代码合并在同一个文件中,导致代码冗余和可维护性差。而平台总线模型将设备代码和驱动代码分离,设备代码放在device.c文件中,驱动代码放在driver.c文件中。这种分离使得设备和驱动的职责更加清晰,提高了代码的可读性和可维护性。

2提高代码的重用性:平台总线模型使得相同类型的设备可以共享相同的驱动代码。例如,在一个硬件平台上存在多个相同类型的设备,传统的驱动模型需要为每个设备编写独立的驱动代码。而使用平台总线模型,只需编写一个通用的驱动代码,然后为每个设备创建相应的device.c文件,将设备特定的代码放在其中。这样可以减少代码的重复性,提高了代码的重用性和可维护性。

3减少重复性代码:在传统的设备驱动模型中,如果有多个相同类型的设备存在,就需要为每个设备编写独立的驱动代码。而使用平台总线模型,只需编写一个通用的驱动代码,然后为每个设备创建相应的device.c文件,将设备特定的代码放在其中。这样可以避免大量的

重复性代码,简化了驱动开发过程。

4提高可移植性:平台总线模型可以提高驱动的可移植性。开发者可以编写适应平台总线的平台驱动程序,从而支持特定的外设,而无需依赖于特定的标准总线。这使得驱动可以更容易地在不同的硬件平台之间进行移植和重用。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值