上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页
  2011年8月30日
摘要: 小知识:sudo insmod /lib/modules/2.6.22-14-generic/kernel/drivers/usb/serial/usbserial.ko vendor=0x8086 product=0xd001同时插上ttyUSB0和ttyUSB1(ch341),obm可以将dkb下载下去,但是自动重起之后,就不能下载接下来的东西了,所以应该,需要close(ttyUSB0_handle);然后进行接下来的下载,分别调用两次不过应该自动关闭了,所以可能还是不能同时插上ttyUSB0和ttyUSB1lsusb 显示usb设备的vendor和product比如:b074@glie 阅读全文
posted @ 2011-08-30 18:32 image eye 阅读(14482) 评论(0) 推荐(0) 编辑
  2011年8月29日
摘要: probe的调用从driver_register看起:int driver_register(struct device_driver * drv){ klist_init(&drv->klist_devices, klist_devices_get, klist_devices_put); init_completion(&drv->unloaded); return bus_add_driver(drv);}klist_init与init_completion没去管它,可能是2.6的这个设备模型要做的一些工作。直觉告诉我要去bus_add_driver。bus_ 阅读全文
posted @ 2011-08-29 09:29 image eye 阅读(9996) 评论(1) 推荐(1) 编辑
  2011年8月28日
摘要: Linux内核源码树的每个目录下都有两个文档Kconfig和Makefile。分布到各目录的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文档相关的内核配置菜单。在执行内核配置make menuconfig时,从Kconfig中读出菜单,用户选择后保存到.config的内核配置文档中。在内核编译时,主Makefile调用这个.config,就知道了用户的选择。这个内容说明了,Kconfig就是对应着内核的每级配置菜单。 假如要想添加新的驱动到内核的源码中,要修改Kconfig,这样就能够选择这个驱动,假如想使这个驱动被编译,则要修改Makefile。添加 阅读全文
posted @ 2011-08-28 11:35 image eye 阅读(2406) 评论(0) 推荐(1) 编辑
  2011年8月27日
摘要: 在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#define __initcall(fn) device_initcall(fn)#define device_initcall(fn) __define_initcall("6",fn,6)#def... 阅读全文
posted @ 2011-08-27 23:38 image eye 阅读(3055) 评论(0) 推荐(0) 编辑
  2011年8月24日
摘要: USB 总线引出两个重要的链表!一个 USB 总线引出两个重要的链表,一个为 USB 设备链表,一个为 USB 驱动链表。设备链表包含各种系统中的 USB 设备以及这些设备的所有接口,驱动链表包含 USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)。USB 设备驱动程序(usb device driver)和 USB 驱动程序(usb driver)的区别是什么?USB 设备驱动程序包含 USB 设备的一些通用特性,将与所有 USB 设备相匹配。在 USB core 定义了:struct usb_device_driver usb_gener 阅读全文
posted @ 2011-08-24 21:50 image eye 阅读(9659) 评论(1) 推荐(6) 编辑
摘要: 4.2.1 usb_endpoint_is_int_in判断端点是否为中断in类型static inline int usb_endpoint_is_int_in(const struct usb_endpoint_descriptor *epd){return (usb_endpoint_xfer_int(epd) && usb_endpoint_dir_in(epd));}static inline int usb_endpoint_xfer_int(const struct usb_endpoint_descriptor *epd){return ((epd->bm 阅读全文
posted @ 2011-08-24 19:28 image eye 阅读(2165) 评论(0) 推荐(1) 编辑
  2011年8月20日
摘要: 通过一天的实践 终于能够装载上驱动模块 并测试了其读写是否正常。就遇到的问题做以下总结:1.提示warning: 找不到 /linux/config.h 头文件(查资料为内核版本问题) 直接touch /linux/config.h2.提示warning:passing argument 6 of 'usb_fill_bulk_urb' compatible pointer typeusb_fill_bulk_urb函数中第6个参数类型不匹配?这个warning没有解决,第6个参数传递的是skel_write_bulk_callback,这里skel_write_bulk_ca 阅读全文
posted @ 2011-08-20 15:31 image eye 阅读(1915) 评论(0) 推荐(0) 编辑
摘要: 位置参数可以用shift命令左移。比如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1、$2、$3丢弃,$0不移动。不带参数的shift命令相当于shift 1。非常有用的 Unix 命令:shift。我们知道,对于位置变量或命令行参数,其个数必须是确定的,或者当 Shell 程序不知道其个数时,可以把所有参数一起赋值给变量$*。若用户要求 Shell 在不知道位置变量个数的情况下,还能逐个的把参数一一处理,也就是在 $1 后为 $2,在 $2 后面为 $3 等。在 shift 命令执行前变量 $1 的值在 shift 命令执行后就不可用了。示例如下:#测试 s 阅读全文
posted @ 2011-08-20 14:37 image eye 阅读(126243) 评论(5) 推荐(21) 编辑
摘要: 对所有用户有效在/etc/profile增加以下内容。只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 command not found)#在PATH中找到可执行文件程序的路径。export PATH =$PATH:$HOME/bin#gcc找到头文件的路径C_INCLUDE_PATH=/usr/include/libxml2:/MyLibexport C_INCLUDE_PATH#g++找到头文件的路径CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/include/ 阅读全文
posted @ 2011-08-20 14:05 image eye 阅读(61666) 评论(0) 推荐(2) 编辑
摘要: shell 编程中使用到得if语句内判断参数 –b 当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目录时返回真 -e 当pathname指定的文件或目录存在时返回真 -f 当file存在并且是正规文件时返回真 -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真 -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效 -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真 -p 当file存在并且是命令管道时返回为真 -r 当由pathname指定的文件或目录存 阅读全文
posted @ 2011-08-20 11:09 image eye 阅读(105966) 评论(0) 推荐(8) 编辑
上一页 1 ··· 3 4 5 6 7 8 9 10 11 下一页