码迷,mamicode.com
首页 > 其他好文 > 详细

FL2440 3G上网卡拨号上网,并实现mdev自动挂载

时间:2015-08-03 14:32:14      阅读:315      评论:0      收藏:0      [点我收藏+]

标签:3g上网卡拨号上网   buzybox的mdev实现usb热拔插   

___________________________________

主机操作系统:Centos 6.5
交叉编译器环境:arm-linux-gcc-4.5.4
开发板平台: FL2440        
Linux内核版本: 3.0
作者:songyong<handy_sky@outlook.com>

___________________________________

一、配置内核支持3G驱动以及PPP协议

打开ppp相关配置:
Device Drivers  --->
    [*] Network device support  --->
     <*>   PPP (point-to-point protocol) support
          [*]     PPP multilink support (EXPERIMENTAL) 
          [*]     PPP filtering
          <*>     PPP support for async serial ports
          <*>     PPP support for sync tty ports 
打开usb串口相关配置:
[*] USB support  ---> 
    <*>   USB Serial Converter support  --->
        [*]   USB Serial Console device support
        [*]   USB Generic Serial Driver
        <*>   USB driver for GSM and CDMA modems

自行在开发板上#lsusb 查看3G上网卡的厂商ID与设备ID,并将其添加到usb通用驱动option.c中(因为查看之后发现option.c中并没有我的3G上网卡信息,所以需要自行添加。如若能通过ID找到则可不添加

技术分享

以及在在option_ids数组中添加子项技术分享

二 、交叉编译拨号软件ppp-2.4.5和usb_modeswitch-1.2.4及其依赖的libusb-1.0.0和libusb-compat-0.1.4

usb_modeswitch;因为3G上网卡在linux下首次插入时是处于CD-ROM模式,我们如果要pppd拨号上网,则需要将默认被识别为存储设备的3g usb modem转换为可以通讯的多个串口设备。

usb_modeswitch-current_data.tar.bz2:这个包里包括提供给UDEV的驱动设备信息,和很多设备使用usb_mdoeswitch进行转换模式时需要配置的参数。下载它用于参考,usb_modeswitch.conf里面的参数就会参考到。

因为网上编译文档众多,在此不赘述。只是一开始我用的是usb_modeswitch-2.2.5,编译不通过。若只是想像我一样玩一下的话,可换此低版本通过。

下载地址:

ppp-2.4.5.tar.gz  ;usb-modeswitch-1.2.4.tar.bz2 ; usb-modeswitch-data-20150627.tar.bz2 ;libusb-1.0.0.tar.bz2 

都通过之后,将ppp文件夹中的pppd和chat放入开发板/usr/sbin目录下;

三、配置usb_modeswitch.conf;并编写ppp拨号脚本

我们进入usb_modeswitch-data....../usb_modeswitch.d目录中打开对应ID的文件

技术分享

技术分享

一开始HuaweiMode=1不通过,然后我改为0后通过。至此,到这里我们发现12d1:1446其实并没有什么实际性的参考价值.....

网上的配置文件原本还有各种参数,但是又都不给出解释。我这样最简陋的基本配置,所幸能使用。有更具体需求的可以自行添加。

改好之后执行: 

# mount -t usbfs usbfs /proc/bus/usb/       //挂载usb文件系统

#/apps/3G/usb_modeswitch -c /apps/3G/usb_modeswitch.conf    //-c是指指定配置文件

如若成功:# ls  /dev/ttyUSB*  可看到USB0-3等串口设备出现。

接下来重头------->串口下的AT指令集

首先我们执行microcom --help ,发现-s是serial串口调试

#microcom -s 115200 /dev/ttyUSB1

这时候屏幕可能就“卡”在这,也无任何回显。不要慌,我们敲at回车等待回应

如果回应 OK则可使用串口通讯,可能可以实现拨号。

ate1回车  可开启回显,这样就不会没有安全感了,不信就试试技术分享

以下是比较常用的AT命令。对于不同的厂商设备可能AT指令不完全相同,但是大多是一致的。所以可去网上随便找个datasheet看看。

ate0关闭
at+cgmm 可查看模块名
at+cgmr  可查看模块版本信息
at+cgmi 可查看模块制造商
at+csq 可查看信号强度
at+cpin? 查看SIM卡是否到位
at+creg? 查看SIM卡是否注册上,网络注册的情况。
at+cops? 查看SIM卡运营商

技术分享

对于拨号脚本,其实大多都相同,稍加修改即可。

wcdma:

技术分享

chat-wcdma-connect:

技术分享

chat-wcdma-disconnect:

技术分享

将这三个放到/etc/ppp/peers路径下。

当我们的microcom -s 115200 /ttyUSB1

在at+creg?回复1或者5之后表示可以拨号了。

技术分享

执行pppd call wcdma拨号

技术分享

至此,3G上网卡手动实现usb_modeswitch切换串口然后ppp拨号上网的基本需求就完成了。

下面使用mdev自动切换.

mdev是busybox自带的一个简化版的udev
作用是在系统启动和热拔插或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的。记得一开始学习驱动的时候,当时就知道了热拔插hotplug这个机制。简单地说内核里面的hotplug机智就是说当我们存在设备热拔插时,内核会调用用户空间层的一些脚本来进行处理。

==============================================================================================

busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为hotplug会被内核发送uevent之前调用,所以如果动态可插拔设备很多,很频繁,那么每次内核都会调用elf格式的用户空间的hotplug,生成一个独立的hotplug程序来处理,所以hotplug是一个非常笨重的实现方法,但是在我们的arm开发板上,可插拔设备并没有想象中的频繁
目前还没有必要移植完全版的udev,所以完全可以在不复杂的嵌入式设备上使用mdev来管理动态节点

==============================================================================================

以上引用网上一位前辈的说法:http://blog.csdn.net/lanmanck/article/details/4558500

首先我们在制作根文件系统的时候,需要在系统最先读取的自启文件inittab或者是rsc里面先挂载/sys和/proc文件系统。
因为mdev的另外一个很有用的地方是,他可以通过proc和sys文件系统来动态整理出注册的设备,进而到/dev/下生成他们对应的节点。但前提是使用该功能之前必须mount上proc和sys文件系统

然后我们还需要添加最关键的两句:

echo /sbin/mdev > /proc/sys/kernel/hotplug   //发现调用hotplug机制时就使用我们用户层的应用程序/sbin/mdev来处理

mdev -s   //会扫描并自动创建相应的节点.

现在当我们出现设备节点之后还有个配置文件mdev.conf ,里面包含了对相关设备节点的具体操作。

技术分享

上面是我的配置,当检测到sg*这些设备节点时,就执行/apps/etc/modem_hotplug这个脚本。

技术分享

技术分享

因为手中就这一个3G上网卡,所以我就只是简单的只配置了它的脚本。如果是要普遍使用于大多数的话,还需要lsusb解析上网卡型号然后找对应的配置实现转串口。以后工作了做到这块了再深入研究花时间编写吧。至此,我们就已经可以实现板子上mdev自动挂载3G上网卡了。下一步如果想要拨号之后发出热点wifi的话也很简单,再配置一次nat表应该就行。我这里就不做了,开始看socket编程去咯技术分享

版权声明:本文为博主原创文章,未经博主允许不得转载。

FL2440 3G上网卡拨号上网,并实现mdev自动挂载

标签:3g上网卡拨号上网   buzybox的mdev实现usb热拔插   

原文地址:http://blog.csdn.net/u010944778/article/details/47251701

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!