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:


  1. #jscese add this android.mk to compile libusb.so for usb_modelswitch 140819  
  2. LOCAL_PATH := $(call my-dir)  
  3. include $(CLEAR_VARS)  
  4.   
  5. common_src :=\  
  6.     libusb/core.c \  
  7.     libusb/descriptor.c \  
  8.     libusb/io.c \  
  9.     libusb/sync.c \  
  10.     libusb/os/linux_usbfs.c \  
  11.       
  12. common_include :=\  
  13.     $(LOCAL_PATH)/ \  
  14.     $(LOCAL_PATH)/libusb \  
  15.     $(LOCAL_PATH)/libusb/os  
  16.       
  17. LOCAL_MODULE :libusb  
  18. LOCAL_SRC_FILES :=$(common_src)  
  19.   
  20. LOCAL_C_INCLUDES +=$(common_include)  
  21. include $(BUILD_SHARED_LIBRARY)  

可以看到編譯的.c源文件只要5個就OK 了,我們下載的libusb包裏面有的不需要,需要進行一些修改和配置,

我的libusb源碼下載:http://download.csdn.net/detail/jscese/7868431


libusb-compat的Android.mk:


  1. #jscese add this android.mk to compile libusb-compat.so for usb_modelswitch 140819  
  2. LOCAL_PATH := $(call my-dir)  
  3. include $(CLEAR_VARS)  
  4.   
  5. LIBUSB_DIR :=external/libusb  
  6.   
  7. common_src :=\  
  8.     libusb/core.c \  
  9.   
  10.       
  11. common_include :=\  
  12.     $(LOCAL_PATH)/ \  
  13.     $(LOCAL_PATH)/libusb \  
  14.     $(LIBUSB_DIR)/libusb  
  15.   
  16.   
  17. LOCAL_MODULE :libusb-compat  
  18. LOCAL_SRC_FILES :=$(common_src)  
  19. LOCAL_C_INCLUDES +=$(common_include)  
  20. LOCAL_SHARED_LIBRARIES :libusb  
  21.   
  22. include $(BUILD_SHARED_LIBRARY)  

可以看到libusb-compat 引入libusb

我的libusb-compat源碼下載:http://download.csdn.net/detail/jscese/7868445


可在源碼下 通過:

  1. mmm external/libusb  

單獨編譯對應的.so


這裏先記錄libusb的移植,一步一步來。。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章