對dnw驅動原始碼進行簡要分析。
#include #include #include #include #include #include #include #define secbulk_major 102
#define secbulk_minor 0
#define driver_name "secbulk"
#define bulkout_buffer_size 512
struct secbulk_dev
;static struct usb_class_driver secbulk_class;
static struct usb_device_id secbulk_table= , //c
};static struct usb_driver secbulk_driver;
static void secbulk_disconnect(struct usb_inte***ce *inte***ce)
static ssize_t secbulk_read(struct file *file, char __user *buf, size_t len, loff_t *loff)
static ssize_t secbulk_write(struct file *file, const char __user *buf, size_t len, loff_t *loff)
ret = usb_bulk_msg(dev->udev, usb_sndbulkpipe(dev->udev, dev->bulk_out_endpointaddr), //構造批量傳輸資訊,傳輸給usbcore處理
dev->bulkout_buffer,
to_write,
&actual_length,
3*hz);
if(ret || actual_length!=to_write)
len -= to_write;
total_writed += to_write;
}return total_writed;
}static int secbulk_open(struct inode *node, struct file *file)
static int secbulk_release(struct inode *node, struct file *file)
static struct file_operations secbulk_fops = ;
static struct usb_class_driver secbulk_class = ;
static int secbulk_probe(struct usb_inte***ce *inte***ce, const struct usb_device_id *id)
iface_desc = inte***ce->cur_altsetting;
for(i=0; i < iface_desc->desc.bnumendpoints; i++) //從usbcore傳入的藉口中得到得到輸出端點
}if(!(dev->bulk_out_endpointaddr))
ret = usb_register_dev(inte***ce, &secbulk_class); //將usb驅動註冊成字元裝置驅動提供給使用者程式
if(ret)
dev->udev = usb_get_dev(inte***ce_to_usbdev(inte***ce));
usb_set_intfdata(inte***ce, dev);
mutex_init(&dev->io_mutex);
return 0;
error:
if(!dev)
kfree(dev);
return ret;
}static struct usb_driver secbulk_driver= ;
static int __init secbulk_init(void)
return 0;
}static void __exit secbulk_exit(void)
module_init(secbulk_init);
module_exit(secbulk_exit);
module_license("gpl");
Eureka原始碼系列 2 原始碼啟動入口
本文介紹如何搭建eureka原始碼的debug環境,網上有一些部落格抄來抄去,抄錯了都不知道。eureka server模組下有乙個測試類 eureka server src test j a com netflix eureka resources eurekaclientserverrestin...
原始碼系列 基於 FPGA 的 USB2 0 設計
2019年9月4日,usb if終於正式公布usb 4規範。它引入了intel此前捐獻給usb推廣組織的thunderbolt雷電協議規範,雙鏈路執行 two lane 傳輸頻寬因此提公升,與雷電3持平,都是40gbps。需要注意的是,你想要體驗最高傳輸速度,就必須使用經過認證的全新資料線。usb4...
USB 滑鼠驅動原始碼分析
kernel kernel 3.4.39 uhci intel,低速 1.5mbps 全速 12mbps ohci microsoft 低速 全速 ehci 高速 480mbps usb匯流排驅動程式的作用 1 分配位址給usb裝置,同時將分配的位址發給usb裝置 最開始通訊位址是埠0 2 發出命令...