硬件平台:
海思Hi3515 Linux
3G模块:
1、移动模块:ZTE M305(TD-SCDMA)
2、联通模块:HUAWEI EM770W(WCDMA)
3、电信模块:HUAWEI EM660(CDMA2000-EVDO)
开始工作:
1、在编译内核时,通过make menuconfig打开模块加载选项,因为调用3G需要用到pppd服务,所以找到pppd服务的,全部启用。
2、修改串口驱动,在内核文件中找到option.c文件,在linux-2.6.24\drivers\usb\serial目录下,然后找到option_ids这个设备枚举变量的定义,大概是在134行的位置,然后在这个定义的最后面(“{ } /* Terminating entry */”之前)添加三行:
解释一下什么意思,这个就是添加一下我所用到的三种3G模块的设备信息,不然插上3G模块,系统无法识别,首先要保证系统识别才能进行后面的操作,在USB_DEVICE(0x12d1,0x1404)中,0x12d1是厂商ID,0x1404是设备模块的ID,这两个参数需要你参考你所使用的模块的datasheet文档了,因为我用的是这三个模块,所以填入对应的值就可以了。
添加完之后,就可以重新编译内核,并把内核烧写到板子中,这里烧写过程不赘述。
3、在系统启动脚本中添加驱动加载,在/etc/init.d/rcS中添加下面几行,其中usbserial.ko和option.ko的路径根据在开发板中的具体位置而定
4、在系统/var/目录下创建2个文件夹:(注意,这一步很关键,不然在进行拨号时会报Can't create lock file /var/lock/LCK..ttyUSB0: No such file or directory的错误)
5、重头戏,移植pppd,我用的是ppp-2.4.5,大家可以从ftp://ftp.samba.org/pub/ppp/这里进行下载。
这里和以往的交叉编译有些不同,以往的交叉编译中,都是在运行./configure的时候,同时制定CC,AR,LD,STRIP等参数,然后再make一下就完了。但是编译这个的时候,要注意,在运行./configure的时候配置上述参数根本不起作用,我当时就按照以往的习惯编译了一遍,结果也没有报错,但是实际上使用的PC本身的gcc编译的,并非交叉编译,这里一定要注意。
在make的同时指定CC等编译参数,命令如下:
因为我的交叉编译器路径保存到了/opt/hisi-linux/x86-arm/gcc-3.4.3-uClibc-0.9.28/bin路径下,大家可根据实际情况修改。
6、编译完成之后,拷贝编译后的文件:
其中/usr/local/build这个目录是我把最终需要拷贝的都放在这个目录下,到时候将这个目录下的文件统统拷贝到开发板中的/usr/目录下
回到ppp-2.4.5目录中: