我自己翻译加入VCP到安卓内核   
 陈 翻译1. 介绍
安卓操作系统的内核使用的是修改过的Linux OS。Linux 通过内核模块支持串口,包括USB串口。由于Linux内核包含一个与FTDI的,FTxxx通过一个串行接口设备进行通信的内核模块,它就有可能构建一个同样支持Android的模块。由于驱动要素作为内核映像的一部分对于嵌入式系统,它不是一个简单地把驱动复制到手机上,来启用此功能。为了包含此功能,开发人员需要在源代码级对操作系统进行控制。
The Android OS shares its kernel with the Linux OS. Linux supports serial ports, including USB serial ports, via kernel modules. Since the Linux kernel includes a kernel module to communicate with FTDI's FTxxxx devices via a serial port interface it is possible to build that same support into a kernel for the Android OS.As the driver forms part of the kernel image for an embedded system, it is not a straightforward case of copying a driver file to a handset to enable this functionality. The developer needs to be in control of th OS at the source code level in order to include this functionality.本文件提出两个替代方法包括FTDI的Android操作系统的设备VCP的支持,首先考虑建立一个完整的内核映像,包括FTDI的VCP驱动程序模块,第二建立一个兼容的FTDI内核模块和将它插入功能内核。希望支持FT232H设备的客户应注意,本IC的支持,在2.6.39及后续版本。从内核2.6.31开始所有其他设备都支持。This document presents two alternative methods of including VCP support for FTDI devices in the Android OS; the first considers building a complete kernel image including the FTDI VCP driver module, the second addresses building a compatible FTDI kernel module and inserting it in to a functional kernel.Customers wishing to support the FT232H device should note that support for this IC is included in kernel 2.6.39 and later. All other devices are supported from kernel 2.6.31.
2.建立一个完整的内核映像,包括FTDI的VCP驱动程序模块考虑到从源代码构建整个OS,本节介绍如何构建内核映像FTDI的VCP驱动程序支持。
This section describes how to build FTDI VCP driver support in to kernel image when building the endtire OS from source.2.1先决条件为了包括的FTDI的VCP驱动程序在Android映像上,并用它成功,以下是
要求:
一个硬件平台,包括一个USB主机设备的Android/ Linux内核支持。
? FTDI的测试是使用的BeagleBoard-xM Rev C.
基于一个FTDI的测试与设备
? FTDI FT232R基于US232R电缆进行测试。
一个开发系统,带有安装与配置正确的android开发工具。
? FTDI的发展进行机上运行Linux与Ubuntu的10.04带有默认的内核(2.6.32)。Android操作系统的源代码,包括内核源代码,这已配置和已知的构建
工作选择的开发平台Android操作系统。
? FTDI的测试是基于2.6.32内核在TI提供了一个在Android2.3
OMAP设备的姜饼开发工具包,虽然一些修改
要求,使其工作的BeagleBoard- XM Rev C的平台。该套件还包括
需要构建工具。
?在下面的命令生成默认的内核配置
Android内核源代码目录:
make config omap3_beagle_defconfig
2.2略
3修改预编译的内核包括FTDI的VCP驱动内核模块本节介绍如何插入FTDI的VCP驱动内核模块到一个工作中的Android映像。
这里提供的方向是基于http://android.serverbox.ch/?p=285提供的指示
它最初是由Manuel迪Cerbo写的。3.1先决条件
为了建立FTDI的VCP驱动程序的内核模块,并把它插入到一个Android映像,
要求如下:
一个硬件平台,包括一个USB主机设备的Android/ Linux内核支持。
?注意root访问权限必须有效,在设备上完成内核模块的插入
。根在生产Android设备的访问,可以不平凡的
超出本文档的范围。
基于一个FTDI的测试与设备
? FTDI FT232R基于US232R电缆进行测试。
一个与Android的构建工具的发展系统安装和配置正确。
? FTDI的发展进行机上运行Linux与Ubuntu的10.04
默认的内核(2.6.32)。
? Android SDK和NDK的程序包,必须安装。首先,确定在Android设备上运行的内核版本。这是作为一个内核模块的重要
建成为一个不同的内核版本将最有可能不能正常工作。
这可以通过两种方式。内核版本的显示在Android设备屏幕-设置-About Tablet下面另外,内核版本可以从命令提示符(通过终端确定
仿真程序或通过 ADB shell会话)的命令:
cat /proc/version
对于平板匹配上面的屏幕截图,从这个命令的输出
Linux version 2.6.36.3-gb899528 ([email protected])
(gcc version 4.4.3 (GCC) ) #1 SMP PREEMPT Wed Jun 15 12:28:16 PDT 2011应该指出的是,这里使用的平板没有启用USB主机和所提供的信息仅用于说明。然后,可以用于获取正确的内核源获得的内核的版本号从这个网址:
http://android.git.kernel.org/.
需要注意的是处理器类型也必须找到正确的区域
所需的内核源代码的站点。在这里提供的例子中,处理器是NVIDIA
Tegra2和2.6.36的内核源代码相应的URL
从这里,可以下载内核的快照。下载完成后,将文件提取到一个新的
目录在 ~/android-kernel-source. 在写作本文档时此文件从这里可以得到
tegra-android-tegra-2.6.36-9001adc.tar.g
3.3现有的内核的配置可以从Android设备提取通过ADB命令adb pull /proc/config.gz config.gz
现有的Android内核配置然后,可以适用于上述获得的快照。为了
要做到这一点,在开发计算机上执行以下命令(假设内核
快照被提取到~/android-kernel-source/ directory):cat config.gz > ~/android-kernel-source/tegra-android-tegra-2.6.36-
9001adc/.confi一旦应用现有的配置,它可以被修改,包括支持FTDI的VCP
内核模块。要做到这一点,从Android NDK menuconfig。切换到Android内核源
目录
cd ~/android-kernel-source/tegra-android-tegra-2.6.36-9001adc假设的Android NDK的是安装在/opt/ directory ,添加NDK的目录和PATH
如下:export PATH=/opt/android-ndk-r5/toolchains/arm-eabi-4.4.0/prebuilt/linuxx86/bin/:$PAT这使我们能够使用的Android NDK的构建工具,从源头上构建Android内核的全部或部分
目录。执行以下命令以显示内核配置菜单:
make menuconfig ARCH=arm CROSS_COMPILE=arm-eabi-这将显示一个菜单,可以选择相应的模块。请注意,以
能够建立FTDI的VCP驱动程序作为一个模块,支持可装载模块必须启用:
选择 Device Drivers -> USB Support.  选择 “USB Serial Converter Support”.  按 “M”包括
作为一个内核模块的支持,并启用了一个子菜单,然后突出显示“USB FTDI Single Port Serial Driver”。
按“M”选择的FTDI的VCP驱动程序作为内核模块。
选择“退出”,并选择退出时保存配置。
要完成的内核配置,Makefile应该进行编辑,以外向性数量相匹配
下载从源头上提取的内核从http://android.git.kernel.org;这是在Makefile最上面被列出
3.4建立和插入内核模块确保在PATH的Android NDK的。假设的Android NDK的是安装在/opt/ directory,NDK的目录添加到PATH如下:如果这个尚未完成:
export PATH=/opt/android-ndk-r5/toolchains/arm-eabi-4.4.0/prebuilt/linuxx86/bin/:$PATH
要构建内核模块,在Android内核源代码目录执行以下命令:
make modules ARCH=arm CROSS_COMPILE=arm-eabi-
一旦完成,ftdi_sio.ko内核模块将会存在在驱动器/usb/serial directory。
下一步,从开发计算机复制内核模块Android设备。这可以通过
ADB命令:adb push drivers/usb/serial/ftdi_sio.ko /sdcard
该模块,此时必须插入到内核中。这必须通过adb shell,并要求root
权限。如果root权限无效,操作将失败。与此启动的亚行会议
用这个命令在开发机器上开始一个adb会话:adb shell一旦adb shell会话正在运行,就执行下面命令来插入内核模块
 
su
cd sdcard
insmod ftdi_sio.ko到时,操作就完成了,在android设备上vcp driver可以用了。
4.权限虽然内核模块加载FTxxxx设备时,列举和创建一个设备
在/ dev目录中,该设备的默认权限不允许默认的Android用户
访问端口。
为了解决这个问题,需要修改的ueventd.rc文件在Android根文件系统
(rootfs的),设置适当的权限。下面的行追加ueventd.rc结束
文件应该解决的问题
/dev/ttyUSB* 0666 root root一旦这条线,串行端口的权限将允许读取和写入所有用户访问,并
本机应用程序应该能够访问在这一点上的串行端口。例如,在命令
Android终端仿真器,如echo “Hello serial port” > /dev/ttyUSB0
和cat /dev/ttyUSB0应该按预期工作。
5通过Java API的访问COM端口
尽管现在的串口设备的访问的本地应用程序,应用程序开发使用
Android SDK中不会因为Android平台不包括一个API能够访问串行端口
从Java应用程序访问的串行端口。这是一个Android应用程序的严重限制
开发商希望通过VCP驱动程序访问FTxxxx的设备。
创建一个开源项目已经提供失踪串口的Java API为Android
(http://code.google.com/p/android-serialport-api/)。这个项目允许访问串口,USB或
否则,从Android平台上的Java应用程序。它已经过测试FTDI的BeagleBoardxM Rev C的开发平台,并已被证明的工作后,重新编译从源到
SerialPort.c源文件的第96行中删除O_DIRECT标记;造成库
(libserial_port.so)应该被复制到/ rootfs的/系统/ lib和应用程序应该被复制到
/ rootfs的/系统/应用程序。复制这些文件后,在SerialPort的应用将出现在主要的Android
应用程序的屏幕和USB串口通信。
但是请注意,这是一个开源社区项目,并没有得到维持或支持
FTDI的。

解决方案 »

  1.   

    翻 译完了,还是不行。终端用USB连在电脑上无反应????
      

  2.   

    求大侠指导我在模拟器上测试OK,但移到实机上,实机没串口,所以必须用USB转串口,现在这个USB驱动就是装不上去。我用的是这个芯片CP2012 下面这个网站上有驱动安装说明。我不太懂,求大侠指导
    http://www.ftdichip.com/Support/Documents/TechnicalNotes/TN_132_Adding_FTDI_Devices_VCP_Driver_Support_to_Android
      

  3.   

    看样子像是usb虚拟串口吧? 如果是那样,你现在考虑android设备作为主还是从? 
    看上去像是做主的,那你就需要把 编译好的 cp2012驱动加载到系统,成功后lsusb可以看到/dev/ttyUSB* 类似字样。不过在已有的android平板产品上加载驱动很麻烦,很多厂家都不统一usb这块内核配置。
      

  4.   

    你说的是对的。就是想加载这个驱动到android。麻烦也得弄啊!  帮帮忙啊。最后一步了。
      

  5.   

    我按照文档操作,无法得到内核   他给的这个网站打不开http://android.git.kernel.org/  自动跳转,怎样用其它方式得到内核???http://topic.csdn.net/u/20110902/14/fa131f4d-f9f3-4300-bf90-7b7d26fb289c.html这里有,太复杂
      

  6.   

    android kernel 早些时候换地方了,不知道现在官方 git库是否弄好kernel,我懒得去google了
    https://github.com/android/kernel_common
    这个也不错的
    不过即使下到了内核,编完了驱动,或许只是痛苦刚刚开始。
      

  7.   

    只要装完驱动就OK.我在模拟器上测试串口OK
      

  8.   

    我也曾经研究过usb 转rs232 ,要加入驱动确实还没找到方法。不过我准备用usb文件系统来完成数据通信。简单的说就是用一颗单片机设计成u盘。安卓系统把数据以文件形式写入U盘。单片机在把数据通过rs232传递出来。反向也是这样。这样的好处是安卓系统只要能读写U盘就能连接串口设备。不存在驱动问题。缺点是硬件成本较高。速度到不会差很多,只是人体感觉不出来。
      

  9.   

    我也有这样的需求,USB转串口,没有驱动啊,高手出来吧!
      

  10.   


    現在出了一個芯片FT311D, 可以實現安卓轉串口, 不需驅動我也認為能寫出驅動而且裝上内核裡是很厲害的
      

  11.   

    真搞不懂,为什么非得用USB转串口,加个网络转串口的设备不就行了,直接用SOCKET操作就简单多了
    真正做工控的,不会在意这点小成本的.
      

  12.   

    我们是FTDI的一级代理商,[email protected],15817431194
    有任何疑问我们都可以回复你。
      

  13.   

    现在FTDI推出FT311D,实现Android USB转UART等标准协议的桥接芯片,无需驱动,不需写固件,不限升级,轻松解决开发难题。如果想了解这方面的信息或者开发上遇到问题需要支持,可以联系我。 FTDI中国区代理 柏盛科技企业有限公司 Frank Huang [email protected] QQ:2569186357 tel:15013790186
    .
      

  14.   

    楼上说得这么轻松,想必一定是大侠吧~
    我也急切需要USB转串口的驱动,求大侠指点思路~小妹先拜谢了~!
      

  15.   


    你用CP2012, 想用FTDI驅動, 這有可能嗎? 起碼用FTDI的FT232R FT230X FT231X 等
      

  16.   

    楼主你的Android可以支持串口了吗?我最近在研究酷比魔方的U30GT支持FT232,将D2XX下到目录后点击Info就直接退出了,估计是需要系统的支持。我的QQ是156884734能不能与你交流呢?
      

  17.   

    使用USB232ET的USB网络串口转换器
      

  18.   

    看影片,安卓免驅FT231X轉串口http://v.youku.com/v_show/id_XNTQzODgzOTY4.html
      

  19.   


    http://www.ftdichip.com/Drivers/D2XX.htm
    这里有个例子,你可以参考下,不过的事FTDI的芯片
      

  20.   

    剛去淘寶買了一些USB轉RS232線材, 有代碼提供的
      

  21.   

    我剛去淘寶買了一些USB轉RS232線材, 有代碼提供的
      

  22.   

    想更快, 更容易讓你的安卓系統連接到USB? FTDI最新推出的FT312D是你們最好的選擇。
    FT312D 是一個可用在多介面的安卓主控IC, 能夠提供即時由安卓USB埠(B)到GPIO, UART, PWM, I2C主控, SPI從或SPI主控介面。
     
    可簡易地通過電阻控制使用模式, 有了这个新的芯片,系统開發商可以加强这种現今流行而且龐大的移动通信市場的進行连接与创建適合用户的应用,充分利用安卓(Android)平台资源的能力,高性能的处理,加速度计,触摸屏接口等優勢。
      

  23.   

    淘宝上搜usb 转232 ,有不要otg支持的
      

  24.   

    我在淘寶找到一家有多款USB轉串的, 有的需要OTG, 有些不需要, 而且都有代碼附送
    淘宝上搜Jakutech 就可以了