Linux下的USB转SATA学习

本文探讨了Linux系统中USB转SCSI层的过程,详细介绍了如何通过kernel/drivers/usb/storage/uas.c将USB设备转化为SCSI设备。接着,讲解了SCSI层如何在kernel/drivers/scsi/libsas/sas_ata.c中转换为SATA操作,直接控制SATA硬盘。最后,提到了kernel/drivers/ata目录下SATA驱动的具体实现,并对比了ASM1053E和ASM1153E SATA转USB控制器芯片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

USB层转SCSI层

  1. kernel/drivers/usb/storage/uas.c

使用usb 的设备添加一个scsi设备
流程:module_usb_driver(uas_driver);
|
module_driver(__usb_driver, usb_register, usb_deregister)
|
usb_register(driver)
|
usb_register_driver(driver, …)
|
driver_register

	  /**
 * usb_register_device_driver - register a USB device (not interface) driver
 * @new_udriver: USB operations for the device driver
 * @owner: module owner of this driver.
 *
 * Registers a USB device driver with the USB core.  The list of
 * unattached devices will be rescanned whenever a new driver is
 * added, allowing the new driver to attach to any recognized devices.
 *
 * Return: A negative error code on failure and 0 on success.
 */
int usb_register_device_driver(struct usb_device_driver *new_udriver,
		struct module *owner)
{
	int retval = 0;

	if (usb_disabled())
		return -ENODEV;

	new_udriver->drv
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值