Android——4.2 - 3G移植之路之libusb (一)
来源:互联网 发布:物理仿真实验软件 编辑:程序博客网 时间:2024/05/16 05:09
我在这里记录一下 我移植 的全过程,让他人少走弯路,有什么建议或者不对的欢迎留言~
撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/39057033
一.设备识别
目前的3G模块都是usb接口的,插在android系统中都会默认识别为usb storage 设备,会尝试通过Vold 挂载为usb 存储设备!
所以必须要把设备类型转掉,转换成Modem类型设备,只有这样才能实现主机与模块之间的正常通信,这里就需要一个转换驱动了,
usb-modeswitch 开源驱动,网上下载:http://www.draisberghof.de/usb_modeswitch/#download
其中还需要支持的API库,源码下载:http://www.libusb.org/
只有通过模式转换才算是正确的识别到了3G设备, 这里先解析 usb-modeswitch 所需要的 API 的移植。
二.编译libusb/libusb-compat
从上面的网址上面可以下载最新的 libusb-1.0.9 和 libusb-compat-0.1.4 (对久版本的兼容),
解压到我们android源码的 external 中,这两个lib 是为后面的usb_modeswitch服务的动态库,可以直接在linux上进行交叉编译,最后也能得到libusb.so libusb-compat.so,编译方法网上有很多!
我想竟然是往android平台移植,那么我就放到external中用android的编译机制去编译!
往两个文件夹下面添加Android.mk
先看libusb的Android.mk:
- #jscese add this android.mk to compile libusb.so for usb_modelswitch 140819
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- common_src :=\
- libusb/core.c \
- libusb/descriptor.c \
- libusb/io.c \
- libusb/sync.c \
- libusb/os/linux_usbfs.c \
- common_include :=\
- $(LOCAL_PATH)/ \
- $(LOCAL_PATH)/libusb \
- $(LOCAL_PATH)/libusb/os
- LOCAL_MODULE := libusb
- LOCAL_SRC_FILES :=$(common_src)
- LOCAL_C_INCLUDES +=$(common_include)
- include $(BUILD_SHARED_LIBRARY)
可以看到编译的.c源文件只要5个就OK 了,我们下载的libusb包里面有的不需要,需要进行一些修改和配置,
我的libusb源码下载:http://download.csdn.net/detail/jscese/7868431
libusb-compat的Android.mk:
- #jscese add this android.mk to compile libusb-compat.so for usb_modelswitch 140819
- LOCAL_PATH := $(call my-dir)
- include $(CLEAR_VARS)
- LIBUSB_DIR :=external/libusb
- common_src :=\
- libusb/core.c \
- common_include :=\
- $(LOCAL_PATH)/ \
- $(LOCAL_PATH)/libusb \
- $(LIBUSB_DIR)/libusb
- LOCAL_MODULE := libusb-compat
- LOCAL_SRC_FILES :=$(common_src)
- LOCAL_C_INCLUDES +=$(common_include)
- LOCAL_SHARED_LIBRARIES := libusb
- include $(BUILD_SHARED_LIBRARY)
可以看到libusb-compat 引入libusb
我的libusb-compat源码下载:http://download.csdn.net/detail/jscese/7868445
可在源码下 通过:
- mmm external/libusb
单独编译对应的.so
这里先记录libusb的移植,一步一步来。。
- Android——4.2 - 3G移植之路之libusb (一)
- Android——4.2 - 3G移植之路之libusb (一)
- 3g android4 移植 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 Android——4.2 - 3G移植之路
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- Android——4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)
- Android——4.2 - 3G移植之路之 AT 通信 (四)
- Android——4.2 - 3G移植之路之 APN (五)
- Android——4.2 - 3G移植之路之 AT 通信 (四)
- Android——4.2 - 3G移植之路之 APN (五)
- Android——4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- 3g android4 移植 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 Android——4.2 - 3G移植之路之 reference-ril .p
- 3G开发之android
- 第一章 3G之Android
- 《华清远见学习手记》 之3G智能机器人——移植madplay到FS2410
- 3G拨号之二,USB_switch移植
- 3G移动时代—android之引领新生活(航标)
- Android项目之3G移动警务通(一)
- Cocos2d-x学习笔记《01》— 环境搭建
- Cocos2d-x学习笔记《02》— 架构初识
- Android——4.2 - 3G移植之路之usb-modeswitch (二)
- 第18周OJ--问题 F: 用数字造数字(II)
- Cocos2d-x学习笔记《03》— 项目创建
- Android——4.2 - 3G移植之路之libusb (一)
- Ubuntu 12.04开机自动挂载Windows分区
- Cocos2d-X学习笔记《04》—— 基本概念
- win8开始菜单文件夹位置
- 单片机调试出现一些不常见问题及原因
- linux学习之(六)-主机名、网络IP的配置与查看
- Cocos2d-x学习笔记《06》—— 导演类Director
- Cocos2d-x学习笔记《07》——场景类Scene、布景类Layer
- python报错UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 4: ordinal not in range