机顶盒与电脑间的硬件连接:机顶盒端:USB转串口线(可能是DB9接口的串口线,也可能是4PIN的连接线);电脑端:可将上述的DB9接口直接连接到电脑后面的串口座,现在很多没有该串口座,那么直接再使用同样的USB转串口线(注意DB9的接口有所区别,如果是4PIN线的,那请注意两边的4PIN座子对应的接线为GND接GND,TX接RX,RX接TX,VCC接VCC)与机顶盒用到的转换线相连。
机顶盒的软件设计:有了上面的硬件连接后,我们要进行如下修改(我们使用到的USB转串口线内置的转换芯片型号为CP2102,下面的Android对应linux kernel都是针对该款芯片配置):a.内核配置CONFIG_USB_SERIAL=yCONFIG_USB_SERIAL_CONSOLE=yCONFIG_USB_SERIAL_GENERIC=yCONFIG_USB_SERIAL_CP210X=yb.内核源码修改进行源码修改,主要是该USB转串口识别到的设备名改下名字,避免与其他类型设备冲突,主要将识别到ttyUSBx改名为ttyUSBDBGx(其中x为0-255之间的数字):a).修改drivers/usb/serial/bus.c文件,在如下语句:dev_info(&port->serial->dev->dev,“%s converter now attached to ttyUSB%d\n”,driver->description, minor);前添加如下语句:if (driver->driver.name == “cp210x”)dev_info(&port->serial->dev->dev,“%s converter now attached to ttyUSBDBG%d\n”,driver->description, minor);else在如下语句:dev_info(dev, “%s converter now disconnected from ttyUSB%d\n”,driver->description, minor);前添加如下语句:if (driver->driver.name == “cp210x”)dev_info(dev, “%s converter now disconnected from ttyUSBDBG%d\ndriver->description, minor);elseb).修改drivers/usb/serial/usb-serial.c文件,在如下语句:dev_set_name(&port->dev, “ttyUSB%d”, port->number);前添加如下语句:if (type->driver.name == “cp210x”) {usb_serial_tty_driver->name = “ttyUSBDBG”;dev_set_name(&port->dev, “ttyUSBDBG%d”, port->number);}elsec.Android源码修改a).在external目录下添加setdebugport目录,包含如下文件和内容:Android.mk:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES:= setdebugport.cLOCAL_MODULE:= setdebugportinclude $(BUILD_EXECUTABLE)setdebugport.c:#include
验证:当我们将USB转串口的串口这端接到PC上(直接接到PC的DB9或者另一个USB转串口线),并且用SecureCRT等串口终端软件打开该串口(波特率配置与原系统的调试串口一致,一般为115200n8),然后将USB转串口的USB端接到机顶盒上,等约1-2秒,SecureCRT就出现了sh交互界面,就可以进行调试了。