1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > FL2440 3G上网卡拨号上网 并实现mdev自动挂载

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

时间:2018-11-20 10:25:25

相关推荐

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

___________________________________

主机操作系统:Centos 6.5

交叉编译器环境:arm-linux-gcc-4.5.4

开发板平台: FL2440

Linux内核版本: 3.0

作者:songyong<handy_sky@>

___________________________________

一、配置内核支持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-0627.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来管理动态节点

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

以上引用网上一位前辈的说法:/lanmanck/article/details/4558500

首先我们在制作根文件系统的时候,需要在系统启动时最先读取的自启文件inittab或者是脚本里面注明的fstab文件里面先挂载/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编程去咯

Reference:关于热拔插usb hotplug

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。