免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6124 | 回复: 17
打印 上一主题 下一主题

Linux系统下编译usb-skeleton.c的问题~会的朋友请指教。急急急。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-05-20 14:23 |只看该作者 |正序浏览
最近在学习编写关于基于linux的两台服务器之间的usb通信的程序!
学长指教只需要完成对于linux下的usb驱动程序的分析,然后再添加一个接收信息和反馈信息的函数就可以了。。
主要就是对于usb-skeleton.c的应用。。但是按照网上(http://hi.baidu.com/wenlongren/b ... a993d7f6039e35.html)指点,依照要求做了之后,在make的时候发现很多问题,没法通过。。不晓得怎么回事。哪位高手指点下。。或者指教下是否有其他方法完成linux服务器间的usb接口通讯的实现的。。急急急。。


但是编译之后出现很多问题。。请高手指教。
[root@localhost usb]# make
make -C /lib/modules/2.6.18-8.el5/build M=/root/usb modules
make[1]: Entering directory `/usr/src/kernels/2.6.18-8.el5-i686'
  CC [M]  /root/usb/usb.o
/root/usb/usb.c:32: 警告:大整数隐式截断为无符号类型
/root/usb/usb.c:32: 警告:大整数隐式截断为无符号类型
/root/usb/usb.c:54: 错误:字段 ‘submitted’ 的类型不完全
/root/usb/usb.c: 在函数 ‘skel_open’ 中:
/root/usb/usb.c:110: 错误:隐式声明函数 ‘usb_autopm_get_interface’
/root/usb/usb.c: 在函数 ‘skel_release’ 中:
/root/usb/usb.c:145: 错误:隐式声明函数 ‘usb_autopm_put_interface’
/root/usb/usb.c: 在函数 ‘skel_write’ 中:
/root/usb/usb.c:296: 警告:传递参数 6 (属于 ‘usb_fill_bulk_urb’)时在不兼容的指针类型间转换
/root/usb/usb.c:298: 错误:隐式声明函数 ‘usb_anchor_urb’
/root/usb/usb.c:315: 错误:隐式声明函数 ‘usb_unanchor_urb’
/root/usb/usb.c: 在函数 ‘skel_probe’ 中:
/root/usb/usb.c:365: 错误:隐式声明函数 ‘init_usb_anchor’
/root/usb/usb.c:377: 错误:隐式声明函数 ‘usb_endpoint_is_bulk_in’
/root/usb/usb.c:390: 错误:隐式声明函数 ‘usb_endpoint_is_bulk_out’
/root/usb/usb.c: 在函数 ‘skel_disconnect’ 中:
/root/usb/usb.c:439: 错误:隐式声明函数 ‘usb_kill_anchored_urbs’
/root/usb/usb.c: 在函数 ‘skel_draw_down’ 中:
/root/usb/usb.c:451: 错误:隐式声明函数 ‘usb_wait_anchor_empty_timeout’
/root/usb/usb.c: 在顶层:
/root/usb/usb.c:498: 警告:从不兼容的指针类型初始化
/root/usb/usb.c:499: 警告:从不兼容的指针类型初始化
/root/usb/usb.c:501: 错误:初始值设定项里有未知的字段 ‘supports_autosuspend’
/root/usb/usb.c:501: 警告:初始值设定周围缺少花括号
/root/usb/usb.c:501: 警告:(在 ‘skel_driver.dynids’ 的初始化附近)
make[2]: *** [/root/usb/usb.o] 错误 1
make[1]: *** [_module_/root/usb] 错误 2
make[1]: Leaving directory `/usr/src/kernels/2.6.18-8.el5-i686'
make: *** [default] 错误 2

论坛徽章:
0
18 [报告]
发表于 2011-08-26 16:03 |只看该作者
留名关注下USB驱动开发的问题。

论坛徽章:
0
17 [报告]
发表于 2011-08-26 09:13 |只看该作者
版主你好。
我在系统自带的内核里找到的源代码,能编译通过。
但是,插上USB设备后,没有调用成员函数probe。
已经修改了PRODUCT和VENDOR的ID号,但是还是没用。参考了一些相关方面的书籍,说得很详细,但是都没有我要的问题。
希望你能指教指教,谢谢!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
16 [报告]
发表于 2009-06-01 14:24 |只看该作者
原帖由 peakailcf 于 2009-6-1 12:52 发表
能找到这个文件,显示是1.5kb。
但是点击打开出现:无法显示“/usr/include/linux/kernel.h”。
这是怎么回事?是我的linux安装有问题吗?还是...


你能否自己下一个完整的源码呢?

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
15 [报告]
发表于 2009-06-01 14:23 |只看该作者
原帖由 peakailcf 于 2009-6-1 14:01 发表
另外,您发给我的那个usb-skeleton.c是2.0版本的。USB Skeleton driver - 2.0
不知道您那里有无2.6以上版本的吗?会不会出现问题是因为版本低的缘故呢?可不可以将2.6版本的发给我试试。
谢谢您了。


我给你的是内核源码2.6.18.3的。

论坛徽章:
0
14 [报告]
发表于 2009-06-01 14:01 |只看该作者

回复 #12 Godbach 的帖子

另外,您发给我的那个usb-skeleton.c是2.0版本的。USB Skeleton driver - 2.0
不知道您那里有无2.6以上版本的吗?会不会出现问题是因为版本低的缘故呢?可不可以将2.6版本的发给我试试。
谢谢您了。

论坛徽章:
0
13 [报告]
发表于 2009-06-01 12:52 |只看该作者

回复 #12 Godbach 的帖子

能找到这个文件,显示是1.5kb。
但是点击打开出现:无法显示“/usr/include/linux/kernel.h”。
这是怎么回事?是我的linux安装有问题吗?还是...

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
12 [报告]
发表于 2009-05-25 15:57 |只看该作者
内核编程用的源码目录下include目录。
看一下源码目录下include/linux/kernel.h.

论坛徽章:
0
11 [报告]
发表于 2009-05-25 15:35 |只看该作者

还有一个问题!!

我找到以下两个函数:usb_skel_init和usb_skel_exit(大约在文件的尾部吧),并分别在其中增加一条打印指令:
printk(KERN_ALERT "Entering myusb init\n"); // 加入usb_skel_init函数中
printk(KERN_ALERT "Entering myusb exit\n"); // 加入usb_skel_exit函数中

用来调试的,测试系统是否调用过这个函数。

KERN_ALERT是再linux/kernel.h里面定义的。
我查看了一下我的kernel.h ,如下:
[root@localhost usr]# cat /usr/include/linux/kernel.h
#ifndef _LINUX_KERNEL_H
#define _LINUX_KERNEL_H

/*
* 'kernel.h' contains some often-used function prototypes etc
*/


#define SI_LOAD_SHIFT   16
struct sysinfo {
        long uptime;                    /* Seconds since boot */
        unsigned long loads[3];         /* 1, 5, and 15 minute load averages */
        unsigned long totalram;         /* Total usable main memory size */
        unsigned long freeram;          /* Available memory size */
        unsigned long sharedram;        /* Amount of shared memory */
        unsigned long bufferram;        /* Memory used by buffers */
        unsigned long totalswap;        /* Total swap space size */
        unsigned long freeswap;         /* swap space still available */
        unsigned short procs;           /* Number of current processes */
        unsigned short pad;             /* explicit padding for m68k */
        unsigned long totalhigh;        /* Total high memory size */
        unsigned long freehigh;         /* Available high memory size */
        unsigned int mem_unit;          /* Memory unit size in bytes */
        char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */
};

/* Force a compilation error if condition is true */
#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)]))

/* Force a compilation error if condition is true, but also produce a
   result (of value 0 and type size_t), so the expression can be used
   e.g. in a structure initializer (or where-ever else comma expressions
   aren't permitted). */
#define BUILD_BUG_ON_ZERO(e) (sizeof(char[1 - 2 * !!(e)]) - 1)

/* Trap pasters of __FUNCTION__ at compile-time */
#define __FUNCTION__ (__func__)

#endif

确实没有KERN_ALERT的定义。
怎么会这样呢!!?
请指教?

论坛徽章:
0
10 [报告]
发表于 2009-05-25 14:31 |只看该作者

回复 #9 Godbach 的帖子

版主您好:
    那个usb-skeleton文件编译通过意味着自制的简单usb驱动是已经可以实现了。接下来我想让两台装有linux系统的服务器间进行实时的通过usb完成的信息传输。以便保持两台机器间进程的同步,实现当一台服务器当机的情况,可以让另一台服务器根据另一台服务器的变化来通过usb信息的传递知道其出现问题,然后由自己来继续提供服务。类似于热备一样。是只需要写个接收、反馈信息的函数就可以还是需要做什么样的设计啊。最近思路枯竭。望指教下。。谢谢了。

[ 本帖最后由 peakailcf 于 2009-5-25 14:37 编辑 ]
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP