瑞芯微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主板
第十篇 热插拔
第112章 热插拔简介
112.1 什么是热插拔
热插拔是指在设备运行的情况下,能够安全地插入或拔出硬件设备,而无需关闭或重启系统。这意味着你可以在计算机或其他电子设备上插入或拔出硬件组件(比如USB设备,扩展卡,硬件驱动器等),而无需关机或中断正在进行的操作。
热插拔的主要目的是提供方便性和灵活性。通过热插拔,你可以快速更换或添加硬件设备,而无需停止正在进行的任务。这在许多场景下非常有用,比如
1 USB设备:你可以随时插入或拔出USB设备,比如鼠标,键盘,打印机,存储设备等,而无需重新启动系统。
2 硬盘驱动器:在某些服务器或存储系统中,你可以在运行时添加或替换硬盘驱动器,以扩展存储容量或替换故障驱动器。
3 扩展卡:你可以在计算机上插入或拔出显卡,网卡或声卡等扩展卡,以满足不同的需求或升级硬件性能。
为了支持热插拔功能,硬件设备和系统必须具备相应的支持。硬件方面,设备接口必须设计成可以插入和拔出而不会损坏设备或系统。系统需要提供相应的驱动程序和管理功能,以便在插入和拔出设备时进行正确的配置和识别。
112.2 热插拔的机制
热插拔是内核和用户空间之间,通过调用用户空间程序(如hotplug、udev和mdev)的交互。当需要通知用户内核发生了某种热插拔事件时,内核才调用这个用户空间程序来实现交互。
在Linux内核中,热插拔机制支持USB设备、PCI设备甚至CPU等部件的动态插入和拔出。这个机制实现了底层硬件、内核空间和用户空间程序之间的连接,并且一直在不断演变和改进。设备文件系统是用来管理设备文件的一种机制,在Linux中有三种常见的设备文件系统:devfs、mdev和udev。
- devfs:devfs是基于内核的动态设备文件系统,最早出现在Linux 2.3.46内核中。它通过动态创建和管理设备节点的方式来处理设备文件。然而,devfs存在一些限制和性能问题,从Linux 2.6.13版本开始被移除。
- mdev:mdev是一个轻量级的热插拔设备文件系统,通常用于嵌入式Linux系统。它是udev的简化版本,使用uevent_helper机制来处理设备的插入和拔出事件。mdev在设备插入时调用相应的用户程序来创建设备节点。
- udev:udev是目前在PC机上广泛使用的热插拔设备文件系统。它基于netlink机制,监听内核发送的uevent来处理设备的插入和拔出。udev能够动态创建和管理设备节点,并在设备插入时加载适当的驱动程序。它提供了丰富的配置选项,使用户能够灵活地管理设备文件。
这些设备文件系统在Linux中扮演着重要的角色,它们负责管理设备文件,使得用户空间程序可以方便地与底层硬件进行交互。udev是目前应用最广泛的设备文件系统,而mdev主要用于嵌入式系统中,提供了轻量级的设备管理功能。