write /sys/devices/platform/soc/a600000.ssusb/mode host 到usb_add_hcd 函数的流程
时间: 2023-10-03 15:03:01 浏览: 140
1. 用户在终端执行 "write /sys/devices/platform/soc/a600000.ssusb/mode host" 命令,将 USB 控制器的模式设置为主机模式。
2. 操作系统内核接收到该命令后,将其转化为对应的系统调用,并将该调用传递给 VFS (Virtual File System) 层。
3. VFS 层通过路径名解析,找到对应的文件 "/sys/devices/platform/soc/a600000.ssusb/mode",并将该操作传递给文件系统。
4. 文件系统将该操作转化为对应的文件操作函数,在该函数中会将用户传入的数据 "host" 写入到 "/sys/devices/platform/soc/a600000.ssusb/mode" 文件中。这个文件实际上是一个内核变量的映射。
5. 当 USB 子系统初始化时,会调用 usb_add_hcd 函数,该函数会读取 "/sys/devices/platform/soc/a600000.ssusb/mode" 文件中的值,判断 USB 控制器的模式是主机模式还是设备模式。
6. 如果模式是主机模式,那么 usb_add_hcd 函数会创建一个新的 USB Host Controller Driver (HCD) 实例,并为该实例分配内存空间。
7. 接着,usb_add_hcd 函数会调用 HCD 实例的 probe 函数,该函数会初始化 USB 控制器,并将其注册到 USB 子系统中。
8. 最后,USB 子系统会将所有已注册的 USB 设备和 HCD 实例进行匹配,如果匹配成功,那么设备就会被添加到系统中,并且可以被其他进程访问和使用。