一、在ARM9板上测试:
在原JZ2440上有linux-3.4.2内核,插上ME909S模块后:
/ # lsusb
Bus 001 Device 003: ID 12d1:15c1
Bus 001 Device 001: ID 1d6b:0001
使用lsusb指令后,打印出上边的信息,12d1就是华为的usb厂商号;当我们插上模块后,hub(我们的设备上的usb的根集中器)有一个固定的周期中断函数去收集这个USB端点或者叫接口上的信息,如果信息(接口上电平的变化)有改变,那么就要wake_up一个线程,这个线程的作用就是去枚举这个usb设备(这个4G模块),枚举干什么:
1.最开始与usb设备传输就是控制传输,只是端点0
2.通过端点0得到usb的信息:设备描述符,配置描述符,接口描述符,端点描述符(具体的这些描述符如果得到,可以参考我的第二篇 USB串口驱动程序,使用一个usbview软件查看描述符详细内容),其实最后感觉就是写USB驱动似乎就是根据它的这些描述符。
3.分配设备号
4.找驱动程序----找到了,执行驱动程序的probe函数
当然上边的1、2、3、4点有些不在枚举里边完成。OHCI(开发板上支持的usb控制器类型)
明天打算在window上测试它的一些功能,更全面的了解,然后在嵌入式板上写驱动。
//--------------------------------------------------------------------------------------------------------------//
在网上下载的SSCOM.v3.2测试4G模块的一般功能,我主要测试了打电话的功能(没什么,就是觉得只有打电话的功能才明显):发生指令:ATD15765562XXX;//这里的分号一定不能少。
接下来,就按照《华为模块Linux内核驱动集成指导-(V100R001_V2.0, Chinese)》指导书往下操作,『当然我使用的是linux-3.4.2内核』。
开始,发现主要程序在option.c里边,感觉这个文件名字风格有点奇怪,在看源代码的时候发现,竟然出现>>Option Inc.难不成这个还是个公司,果然这个.c文件前边就来一段介绍,最开始的PC-card就是Option公司制作的,,,哈哈哈,怪不得。
那么下边,就开始进入4G模块的研究阶段了,当然,以前对这些知识基本没有,什么MODEM(当然一直有听说,概念模糊)、什么AT、还有什么ECM等等,一下进入我知识的盲区了。
上边有一些对这些端点的基本介绍,似乎光看这些没什么收获,就只知道他们的具体功能,向来数形结合才是最让人理解的:
没错,我们将4G模块插上电脑就是这些,这些端点就是上边,书面上所谓的端点,哈哈,当然最后一个不是,是我电脑上其他线。明天开始在内核里边将修改的驱动编译,开始在linux下进行一些测试。
二、在linux和windows下使用描述:
在windows下,我们使用串口助手打开其中某一个端口,然后向这个端口发送AT指令就行。
但是在linux下,我们使用open打开ttyUSB0,其中这个ttyUSB0---ttyUSB4相当于上面的端口的功能,只不过这些ttyUSB*对应着USB的接口描述符,向这些ttyUSB*写什么,相当于就是向这个ttyUSB*发送什么。
见网上介绍特少,就写此文分享华为4G模块-ME909S-821详情