
Kernel
文章平均质量分 91
waterAdmin
技术 专注 提升
展开
-
<kernel>kernel 6.4 USB-之-usb_new_device()分析
在Linux内核的USB子系统中,用于处理新连接的USB设备的函数usb_new_device。它的主要作用是初始化新连接的USB设备,并将其添加到设备系统中。这个函数接受一个指向struct usb_device的指针作为参数,这个结构体包含了新连接的USB设备的所有信息。函数的主要步骤和作用如下:(1) 如果USB设备不是根集线器,则禁用设备唤醒功能。(2) 向运行时电源管理框架报告设备处于活动状态,并启用设备的自动挂起功能。(3) 禁用所有设备的自动挂起功能。原创 2023-08-23 16:02:30 · 675 阅读 · 0 评论 -
<kernel>kernel 6.4 USB-之-hub_port_init()分析
hub_port_init()函数是Linux内核中的USB驱动程序的一部分,它位于USB核心驱动程序的hub.c文件中。这段代码的主要功能是初始化USB设备并将其连接到USB集线器端口。具体来说,这段代码的主要步骤包括:(1) 重置设备并获取设备描述符。(2) 根据设备的速度(例如,超高速、高速、全速或低速)设置端点0的最大数据包大小。(3) 尝试多次获取设备描述符,如果失败则重试。(4) 如果设备是无线USB设备,我们已经在连接确认序列中分配了一个未授权的地址;授权将分配最终地址。原创 2023-08-23 10:42:29 · 955 阅读 · 1 评论 -
<kernel>kernel 6.4 USB-之-hub_port_connect()分析
本章主要分析的是在Linux内核的USB驱动中,用于处理USB端口连接的函数hub_port_connect。主要过程和作用包括:(1) 断开此端口下的任何现有设备。(2) 检查端口状态,如果连接不稳定或者没有设备连接,可能会尝试恢复端口电源(如果端口支持电源切换的话)。(3) 为新连接的设备进行初始化,包括分配设备编号、设备状态设定、设备速度设定等。原创 2023-08-21 17:03:47 · 842 阅读 · 5 评论 -
<kernel>kernel 6.4 USB-之-hub_port_connect_change()分析
hub_port_connect_change()函数主要用于处理USB集线器端口的连接状态变化。这个函数在以下情况下被调用:当端口的连接状态发生变化;当端口的使能状态发生变化(通常由电磁干扰引起);当usb_reset_and_verify_device函数遇到改变的描述符(比如固件下载后)。以下是这段代码的详细过程和作用:函数首先获取指定端口的设备和集线器对象,并打印一条关于端口状态和变化的调试信息。如果集线器有LED指示器,那么就将指定端口的LED设置为自动模式。原创 2023-08-18 16:14:40 · 477 阅读 · 0 评论 -
<kernel>kernel 6.4 USB-之-port_event()分析
在前一篇文章分析了hub_event()函数,之后hub_event()函数会进一步调用 port_event函数;这个函数port_event的主要作用是处理USB集线器(Hub)上某个特定端口的事件。具体来看,代码的主要功能如下:首先,它会检查端口的变化位(change bits)。如果端口的连接状态(connection)或使能状态(enable)发生变化,它会清除相应的端口特性(port feature)。如果端口被禁用并且没有连接变化,它会尝试重新启用端口并将连接更改标志设置为1。原创 2023-08-17 15:01:07 · 1024 阅读 · 0 评论 -
<kernel>kernel 6.4 笔记
如果没有获取到网络命名空间,那么就调用uevent_net_broadcast_untagged函数,将uevent广播到所有的网络命名空间。如果获取到了网络命名空间,那么就调用uevent_net_broadcast_tagged函数,将uevent广播到指定的网络命名空间。第四步:解析接收到的uevent事件。uevent事件的格式是一系列的以’\0’分隔的字符串,每个字符串的格式是"键=值"。第二步:绑定套接字到一个地址。在用户层,可以通过监听netlink套接字来获取这个uevent事件的内容。原创 2023-08-17 10:11:31 · 328 阅读 · 0 评论 -
<kernel>kernel 6.4 USB-之-hub_event()分析
这里的work是结构体struct usb_hub中的一个成员,而events是struct usb_hub中的另一个成员。第32-36行:这段代码是在处理USB集线器的事件时,检查集线器的状态,如果集线器已经断开连接(即设备状态为USB_STATE_NOTATTACHED),则进行一些清理工作。原创 2023-08-16 16:09:18 · 829 阅读 · 0 评论 -
<Linux开发>--驱动开发-- 字符设备驱动(5) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(5) 过程详细记录驱动开发是建立再系统之上的,前面作者也记录了系统移植的过程记录,如果有兴趣,可进入博主的主页查看相关文章,这里就不添加链接了。其它各驱动可到博主主页查看,由于后续会有越来越多的篇幅,就不一一列举链接到文章中了。第1、2 两篇是旧版字符驱动的开发方式,第3篇是新字符设备驱动的开发实验,第4篇是基于设备树下的实验,接下来这篇,是基于pinctrl子系统和GPIO子系统进行驱动开发的方式。子系统相关介绍,可查看手册,或百度查阅相关资料。实验原创 2021-11-11 23:04:27 · 1013 阅读 · 0 评论 -
<Linux开发>--驱动开发-- 字符设备驱动(3) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(3) 过程详细记录驱动开发是建立再系统之上的,前面作者也记录了系统移植的过程记录,如果有兴趣,可进入博主的主页查看相关文章,这里就不添加链接了。其它各驱动可到博主主页查看,由于后续会有越来越多的篇幅,就不一一列举链接到文章中了。前面两篇是旧版字符驱动的开发方式,接下来根据开发手册,进行新字符设备驱动的开发实验。实验过程记录如下:一、编程环境准备1、安装虚拟机ubuntu,以及交叉工具链,这个在讲解系统移植部分也有说到,是必须的;2、内核源码,这个原创 2021-11-09 17:42:23 · 277 阅读 · 0 评论 -
<Linux开发>--驱动开发-- 字符设备驱动(2) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(2) 过程详细记录作者之前讲解记录了系统移植部分内容,包括uboot、Linux和设备树、以及根文件系统这三个方面,接下来的将进入设备驱动部分的开发过程记录了。系统移植部分可参考以下链接:uboot移植可参考以下:<Linux开发> -之-系统移植 uboot移植过程详细记录(第一部分)<Linux开发> -之-系统移植 uboot移植过程详细记录(第二部分)<Linux开发> -之-系统移植 uboot移植过程详细记录(第三部分)(uboot移植原创 2021-10-30 22:56:35 · 294 阅读 · 0 评论 -
<Linux开发>--驱动开发-- 字符设备驱动(1) 过程详细记录
<Linux开发>–驱动开发-- 字符设备驱动(1) 过程详细记录作者之前讲解记录了系统移植部分内容,包括uboot、Linux和设备树、以及根文件系统这三个方面,接下来的将进入设备驱动部分的开发过程记录了。系统移植部分可参考以下链接:uboot移植可参考以下:<Linux开发> -之-系统移植 uboot移植过程详细记录(第一部分)<Linux开发> -之-系统移植 uboot移植过程详细记录(第二部分)<Linux开发> -之-系统移植 uboot移植过程详细记录(第三部分)(uboot移植原创 2021-10-26 22:55:01 · 318 阅读 · 0 评论 -
<Linux开发>系统移植 -之- linux内核移植过程详细记录(第二部分完结)
<Linux开发>系统移植 -之- linux内核移植过程详细记录(第二部分)前面,第一部分讲解了,NXP官方原厂的Linux直接编译下载到开发板的操作过程,及测试效果。以及过程中设计使用的一些辅助工具。从第一部分,可以熟悉整个Linux编译到下载运行的流程,方便接下来的移植操作。<Linux开发>系统移植 -之- linux内核移植过程详细记录(第一部分)本次为Linux系统移植中Linux移植的第二部分,主要讲解NXP原厂Linux移植到正点原子Linux开发板的过程,并记录。操作流程均参考正点原原创 2021-10-23 00:01:49 · 1050 阅读 · 2 评论 -
<Linux开发>系统移植 -之- linux内核移植过程详细记录(第一部分)
<Linux开发>系统移植 -之- linux内核移植过程详细记录(第一部分)本章主要讲解linux内核和设备树的移植。硬件环境则是正点原子Linux开发板。本系列讲解过程,及作者实操过程,均参考正点原子Linux开发指南。...原创 2021-10-09 21:36:35 · 1327 阅读 · 0 评论