Android——4.2 - 3G移植之路之libusb (一)

前段时间往smart TV上移植3G模块,发现移植3G的百度谷歌一搜,基本全是linux开发板上的,

我在这里记录一下 我移植 的全过程,让他人少走弯路,有什么建议或者不对的欢迎留言~

撰写不易,转载请注明出处: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的移植,一步一步来。。

时间: 2024-08-02 02:08:53

Android——4.2 - 3G移植之路之libusb (一)的相关文章

Android——4.2 - 3G移植之路之usb-modeswitch (二)

在前文Android--4.2 - 3G移植之路之libusb (一)  中有解析到libusb 这个动态库的移植,目的就是为了 usb-modeswitch 服务. usb-modeswitch的作用就是转换usb型的设备状态,也是3G 移植中重要的准备工作! 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/39271443 一.Kernel配置: usb-modeswitch需要kernel中的驱动支持,需要配置serial驱

Android——4.2 - 3G移植之路之 APN (五)

APN,这东西对于刚接触的人来说并非那么好理解.对于3G移植上网不可缺少,这里记录一下. 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/41248939 概念: APN(Access Point Name),也就是 接入点 ,移动设备使用数据流量上网必须配置的一个參数,代表以何种方式来连接服务台开启数据流量功能. 一般有訪问WAP或者connect 因特网,国内的运营商2G,3G标识例如以下: 移动公司:2G:GSM.3G:TD

Android——4.2 - 3G移植之路之 AT 通信 (四)

在前文Android--4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)中分析了3G连接网络的流程,其中有说道通过AT指令建立连接, 在这里记录一下3G中的AT通信. 撰写不易,转载请注明出处:http://blog.csdn.net/jscese/article/details/41083363 概念: 来自AT命令手册中的概念如下: TE Terminal Equipment 终端设备 与DTE 等价 比如一个计算机 它是和信息网络的一端相接的可提供必要功

Android——4.2 - 3G移植之路之 reference-ril .pppd 拨号上网 (三)

Android的RIL机制中的 reference-ril.c 即为厂商提供的驱动接口.这个驱动源代码各个厂商都是有提供的,网上也有下载.我如今用的就是huawei wcdma的.最后编译成libreference-ril.so.关于这个接口驱动在RIL中所扮演的角色可參考Android--RIL 机制源代码分析 android 4.2自带pppd源代码在/external/ppp/pppd中.相同,kernel中也是须要打开对point-to-point 的支持,在network suppor

将 Android* Bullet 物理引擎移植至英特尔® 架构

简介 由于目前的移动设备上能够使用更高的计算性能,移动游戏现在也可以提供震撼的画面和真实物理(realistic physics). 枪战游戏中的手雷爆炸效果和赛车模拟器中的汽车漂移效果等便是由物理引擎所提供,其核心是物理模拟. 一般而言,物理模拟决定了游戏引擎的性能. 一款游戏成功与否通常取决于物理引擎计算物理模型的速度和准确度. 本文将介绍如何构建 Android 版 Bullet 物理引擎并将其移至到基于英特尔? 凌动 SoC 的平台. Bullet 物理 Bullet 物理库是一个实时物

Android Vector曲折的兼容之路

Android Vector曲折的兼容之路 两年前写书的时候,就在研究Android L提出的Vector,可研究下来发现,完全不具备兼容性,相信这也是它没有被广泛使用的一个原因,经过Google的不懈努力,现在Vector终于迎来了它的春天. 在文章后面,会给出本文的Demo和效果图,并开源在Github Vector Drawable Android 5.0发布的时候,Google提供了Vector的支持.Vector Drawable相对于普通的Drawable来说,有以下几个好处: Ve

Android安卓书籍推荐《Android驱动开发与移植实战详解》下载

百度云下载地址:点我 Android凭借其开源性.优异的用户体验和极为方便的开发方式,赢得了广大用户和开发者的青睐,目前已经发展成为市场占有率很高的智能手机操作系统. <Android驱动开发与移植实战详解>分为18章,依次讲解了Android系统的基本知识, Linux内核的基本知识,分析了Android系统的源码,深入分析HAL层的基本知识,GoldFish下的驱动.MSM内核和驱动.OMAP内核和驱动.显示系统驱动.输入系统驱动.振动器系统驱动.音频系统驱动和视频输出系统驱动,多媒体框架

android 3G移植【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17028383 一 开发环境简介 内容 说明 3G模块 华为EM820W(WCDMA) 3G SIM卡 中国联通3G卡 嵌入式Linux版本 linux-2.6.37 主机开发环境 Ubutun 10.04   二 主要步骤 1 向linux内核中添加3G模块驱动(USB转串口的option驱动)和ppp网络协议的支持 2 交叉编译ppp-2.4.4源代码 将拨号上网所需的两个应用

Android企业级最佳实践高手之路

如何从一个Android程序员到成为一个高手级别的Android开发者和架构师,是每个Android开发者和管理者关心的核心问题,成功的从一个Android程序员到架构师,需要掌握: 1, Android开发与架构,具备Android系统式如何驾驭开发者与架构者的的能力: 2, 通晓Android程序开发的最佳模式,当你直到这个最佳模式的时候,你会发现AsyncTask是Android的败笔,而且这个败笔一直未能够在版本升级中解决: 3, 理解Android程序开发和运行背后的控制者: 4, 合