OK6410开发板调试EC20通信模块

时间:2024-03-20 09:02:21

作为一名小白鼠,经过我长达半个月的艰苦努力下,终于在板子上调通了EC20模块。话不多说,下面记录我碰到的问题和解决方案。

/*******************************************************************/

PC:windows7

Linux:ubuntu12.04

硬件开发板:OK6410

开发板内核版本:linux-3.0.1

硬件开发板:OK6410

/*******************************************************************/

一.开发前的准备工作

1)确保开发板,ubuntu,PC在同一局域网,以便于开发。在ubuntu下配置tftp服务器方便下载文件;在windows下配置CRT,使用串口连接开发板,使用ssh连接ubuntu;

2)了解EC20.


OK6410开发板调试EC20通信模块

个人认为应该特别注意供电电压,我使用的模块标准供电为5V-2A。

EC20支持三种驱动:USB Serial Driver,GobiNet Driver,QMI WWANDriver。

Gobi 是高通公司开发的移动宽带调制解调器的一组芯片,目前有Sierra Wireless,中兴,华为以及高通公司等众多厂商使用。由此可见GobiNet Driver大多处理的也是相关的工作。

QMI:Qualcom Message Interface,即高通消息接口。QMI-WWAN驱动程序提供了对QMI端口和网络接口的访问,比原来的GobiNet更简单,此驱动程序并入上游内核。

USB Serial Driver:

OK6410开发板调试EC20通信模块


3)在高通提供的文档中:

OK6410开发板调试EC20通信模块

(1)如果你需要USB Serial Driver,确保option模块存在。

(2)如果你需要CDC ACM 驱动,确保cdc_acm模块存在。

(3)如果你需要GobiNet驱动,确保GobiNet存在。

(4)如果你需要QMI WWAN驱动,确保qmi_wwan存在。

4)USB驱动结构

OK6410开发板调试EC20通信模块

USB设备驱动:控制USB设备如何与主机通信

USB核心:负责USB驱动管理,协议处理,设备热插拔控制,总线数据传输控制等

USB主机控制器驱动:控制插入其中的设备

/*******************************************************************/

二 根据文档修改驱动文件。

当设备连接上USB 串口驱动,驱动将会创建设备文件在/dev目录下,eg:ttyUSB0/ttyUSB1/ttyUSB2...

2.1 添加VID和PID

添加的目的是识别EC20,你需要添加信息到File:你的内核目录/drivers/usb/serial/option.c

OK6410开发板调试EC20通信模块

当添加EC20模块时,你应该删除下面文件的一些信息:

OK6410开发板调试EC20通信模块

2.2添加零包机制

零包机制的添加是为了完善USB协议。

添加信息到文件:OK6410开发板调试EC20通信模块

OK6410开发板调试EC20通信模块

2.3 添加重启恢复(add reset rusume)

当设备的MCU进入到挂起或者睡眠模式,一些USB主机控制器或者USB hub会掉电,并且当设备退出挂起/睡眠模式时,USB主机控制器/USB Hub 也无法恢复,而是断电重启。因此添加信息到文件:

OK6410开发板调试EC20通信模块

2.4 使用GobiNet or QMI WWAN

如果你需要GobiNet 或者QMI WWAN驱动,你需要修改文件:你的内核目录/drivers/usb/serial/option.c

OK6410开发板调试EC20通信模块

2.5 修改内核配置

Step1:

cd /你的内核目录

Step2:

make menuconfig

Step3:

开启你的USB串口选择项

OK6410开发板调试EC20通信模块

  OK6410开发板调试EC20通信模块

Step4:

别的博主都会配置ppp选项,因为在后面会用到。

  OK6410开发板调试EC20通信模块

Step5:

保存配置退出,make。

会在目录:你的内核/arch/arm/boot下生成zImage,下载文件到arm开发板。

到此需要的操作结束。

/*******************************************************************/

可能碰到的问题:

1.EC20接上板子,板子重启

解决过程:给EC20外接电源,然后再插拔设备板子就不会重启了。

2.刚开始下载文件到板子,插上设备没有任何反应。

解决过程:刚开始想转变思路,以模块的方式加载到板子上,具体过程为:OK6410开发板调试EC20通信模块


注意到文档中是加载到linux中,我需要的是加载到板子上,所以在make的时候修改-C(-C作用是make之前先进入-C后面的路径执行make),这个过程感觉蛮复杂,总之碰到的问题也不少,以后再说。反正这种方式没有成功。

后来重新检查自己修改的内核代码,发现了错误,修改完,重新加载,有反应,如图:

OK6410开发板调试EC20通信模块

这里貌似是驱动分配失败了,不明所以。查看/dev,发现添加了一个USBDEV设备文件,并没有ttyUSB,个人认为需要USB转串口驱动,可以在内核配置中选上即可。

OK6410开发板调试EC20通信模块

3. 显示正常,但是会弹出错误:option:option_instat_callback:error -71

谷歌发现这个问题可能是供电问题造成的。感觉问题不大,就没有在管。

4. ttyUSB2测试

命令:cat  /dev/ttyUSB2 &,echo -e "AT\r\n" > /dev/ttyUSB2

发现无响应。

解决过程:使用5v2A的电源供电,然后转换供电方式为USB供电,在不断电的情况下进行设备重新插拔,设备运转正常。