Andrew Huang <bluedrum@163.com> 转载请注明作者及联络方式.
手里的USB Phone并且使用Holtek的HT82A834R .支持与SkyPe软件交互,比如按下Phone上的数字按键,则SkyPe也会显示相应数字。而且PHONE的LCD也会相应提示。 但是官方只提供WINDOWS的中间程序和驱动,并没有提供USB HID的交互接口。在LINUX下,虽然会显示按键设备结点 /dev/hiddev0 和 /dev/hidraw0,但是操作起来不得法。因此在结合他单片机的程序简单来看分析。并且用WINDOWS USB分析软件综合分析出它USB HID接口。
因为libusb也采用/dev/hiddev接口,并且封装了大量细节,并且可以跨平台使用,因此我决定用libusb来写一个Linux 下控制USB Phone的测试程序。
一.S3c6410 下libusb的移植.
1.1 libusb介绍
参考如下文章: libusb 官网是 http://libusb.sourceforge.net,官网有两个版本 a) 0.1.12 是传统非线程安全的,官网不推荐了。 0.1 API 手册:http://libusb.sourceforge.net/doc/ 有这个 http://sourceforge.net/projects/libusb/files/libusb-compat-0.1/libusb-compat-0.1.3/
b) 1.0 是比较推荐的新的库,功能强大! 1.0 API 手册:http://libusb.sourceforge.net/api-1.0/index.html 我下的这个: http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.8/libusb-1.0.8.tar.bz2/download
1.2 移植 tar xvf libusb-1.0.8.tar.bz2 cd libusb-1.0.8 ./configure --host=arm-linux --prefix=$PWD/../../output/arm-linux --enable-shared --enable-static --enable-examples-build make make install
它会生一个libusb.so这样库 在examples下有四个工具,但好象安装不了,所以只能在libusb目录下手工拷到bin目录下 cp examples/.libs/* ../../output/arm-linux/bin 这个四个工具分别是 dpfp dpfp_threaded lsusb lt-lsusb
执行lsub会有如下结果 - [root@FriendlyARM bin]# export LD_LIBRARY_PATH=/mnt/nfs/obt9808_sw/output/arm-li
-
nux/lib;./lsusb
-
1d6b:0001 (bus 1, device 1)
-
04b4:0307 (bus 1, device 2)
二.libusb 编程接口
在Linux内核有一个自带的早期Yealink的USB Phone的输入输出驱动,虽然接口不一样,但原理上两者差不多。主要是按键会用一个Endpoint发送按键给应用程序,而USB PHONE的LCD的显示也完全是由PC上的软件发命令来控制.
|