您的位置 首页 电路

Kinect移植到嵌入式ARM渠道上面

我毕业设计做的libusb移植,而kinect通信是基于libusb,所以,就做了一个kinect+libusb在嵌入式平台上面的移植,经过几个月忙碌…

我毕业规划做的libusb移植, 而kinect通讯是根据libusb,所以,就做了一个kinect+libusb在嵌入式渠道上面的移植, 经过几个月繁忙,总算将毕业规划给完成了,写下一点心得, 也算是我多年在csdn讨取资源的回馈。

本体系首要由两个部件构成:嵌入式硬件渠道和USB设备,经过USB总线建立起它们之间通讯,如图2.16所示,USB设备Kinect中包括一个USB集线器,在Kinect内部经过Hub将红外摄像头、五颜六色摄像头、电机等设备衔接到Kinect内部USB总线上面,终究将Kinect设备衔接到ARM9嵌入式硬件渠道的Roothub上面。

图2.16 体系硬件衔接图

本体系的软件体系规划首要中心部分是Libusb,它为USB设备驱动程序开发供给一系列API,它封装了许多USB协议和底层内核交互代码,将驱动开发从内核空间搬移到用户空间。为了完成Libusb运转在嵌入式linux渠道上面,需求USB文件体系和linux底层USB驱动代码作为底层接口支撑,而这些接口终究依赖于一个嵌入式linux操作体系。总的来说,本体系软件层次如下图2.17所示:

图2.17 体系软件规划图

详细过程:

step1: 建立一个嵌入式linux渠道

自己用的是TQ2440 , 这个就直接用了出厂的源程序, 不过需求留意的是, libusb是根据usb文件体系的,所以移植的时分一定要包括进来

step2: 编译libusb

这一步很重要,需求运用穿插编译器ARM-linux编译, 下载libusb,进入其官网http://www.libusb.org/挑选最新版,下载

详细的装置编译过程如下:

1. 解压libusb-1.0.9.tar到当时文件中:

#tar –vxf libusb-1.0.9.tar –C ./

2. 运用cd指令进入到解压后的文件夹中,运转配置文件:

#./configure CC=arm-linux-gccCXX=arm-linux-g++ /

–build=i686-linux –host=arm-linux

其间–build=i686-linux表明软件是在X86渠道下编译的,–host=arm-linux表明运用的是穿插编译器arm-linux-进行编译,体系默许是将软装置到/usr/local/lib目录下,需求更改运用–prefix=/path/to/install。

3. 编译装置:

#make

#make install

4. 进入/usr/local/lib/目录检查是否生成方针文件。

#cd /usr/local/lib/

能够看到在该目录下,多出一个libusb的文件夹,里边有一个include和lib目录。

5. 挂载NFS,经过nfs将include目录和lib目下的文件拷贝到开发板上

#mount –t nfs 192.168.0.7:/opt/nfs /mnt/nfs

这儿192.168.0.7为开发板的地址。

step3: 运用libusb编写一个usb设备遍历程序

代码如下:

附录A 运用libusb遍历usb设备程序源码/*desc:    运用libusb库函数编程遍历当时一切的usb设备*author: lxz*create data:   2013,3,20*modify data:	2013,4,25/#include #include #include "libusb.h"#include int main(){libusb_device devs ;             // used to retrieve a list of device libusb_context *ctx = NULL ;       //a libusb sessionstruct libusb_device_descriptor desc ;int r = 1 ;                         //for return valuessize_t cnt ;                       //holding number of devices in listr = libusb_init(&ctx);        //initialize the library for the session we just declaredif( r<0){fprintf(stderr, "failed to initalise libusb\n");  //there was a errorexit(1) ;}else{printf("init successful !\n");}libusb_set_debug(ctx,3);   //set verbosity level to 3, as suggested in the documentioncnt = libusb_get_device_list(ctx, &devs) ;   //get the list of devicesif(cnt <0){fprintf(stderr, "Get Device Error\n");exit(1);}printf("%d Device in list .\n", cnt) ;ssize_t i ;   //for iterating through the listfor(i=0; i

编译:

将生成的代码,经过nfs下载到TQ2440开发板中, 在开发板上, 运转刚刚编译的程序,

libusb成功运转在ARM渠道上面, 接下来便是对kinect进行操作了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/276711.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部