基于S3C2440和Linux的无线拨号上网终端

2012-04-24 08:12王贝贝周冬梅
电子科技 2012年9期
关键词:电路板内核菜单

王贝贝,周冬梅

(成都理工大学信息科学与技术学院,四川成都 610059)

目前嵌入式技术已经广泛应用于各个领域,设计采用S3C2440处理器和Linux系统实现的无线拨号上网终端在各个领域有着广泛的应用空间。例如在视频监控方面,结合无线网络技术,使监控的方式更加多元化,使监控的面积和距离都得到了大幅提高,摆脱了物理通道的约束,可以说是未来监控系统的发展方向。终端采用 ARM9嵌入式处理器,主频最高可达400 MHz,而且其内部集成了LCD控制器、内存控制器、Flash接口电路以及双通道的USB总线,处理器也支持Linux操作系统,而Linux操作系统也拥有现代操作系统所具备的内容:抢先式多任务处理、内存保护、虚拟内存[1]并支持TCP/IP的众多协议。因此,将它们用于无线拨号上网终端中时,可以利用ARM9低功耗,高性能的特点和Linux良好的网络支持功能完成拨号上网和进一步的具体应用。

1 终端硬件平台

硬件部分采用核心板加底板的结构,核心板是以S3C2440作为处理器,并配有 64 MB的 SDRAM,256 MB/1 GB的Nand Flash和2 MB的Nor Flash;底板上添加了串口、USB 接口、100 Mbit·s-1以太网RJ-45接口和SD卡等基本外围电路。另外,单独开发了3G模块的电路板,目的是把3G模块的miniPCI接口通过硬件转化为USB接口,这样不仅方便3G模块与核心板的连接,而且也方便了对3G模块在Linux系统下驱动的处理,3G模块采用华为EM770W。

2 软件平台

2.1 PC机软件平台

系统软件平台以Linux操作系统为基础,在PC机上安装虚拟机,然后在VMware Workstation上安装Red hat Enterprise 5,内核采用 Linux-2.6.32.2,然后在Red hat5的Linux上建立ARM-Linux-gcc的交叉编译环境,ftp以及samba服务器等。

2.2 终端的系统移植

系统移植包括:配置Linux内核,向内核中添加3G模块的驱动和ppp协议的支持,并重新编译和下载。

在内核配置之前,首先要进入内核目录,执行make distclean命令将以前相关的临时文件、配置文件、中间文件和路径文件等清除。再开始配置内核:第一步,cp config_mini2440_w35.config;第二步,make menuconfig进入基于文本模式的菜单型选项,添加USB转串口的驱动和PPPD协议支持的选项;第三步,对内核进行编译,执行命令make zImage,编译成功后在/arch/arm/boot目录下将生成zImage烧写文件;第四步,制作目标板的文件系统映像,在mini2440的目录下执行命令mkyaffszimage-128M rootfs-qtopia-qt4 rootfsqtopia-qt4.img,这样在当前目录下就生成了相应的文件系统映像;第五步,烧写文件,连接好串口和USB电缆,打开超级终端和DNW软件,硬件上电并选择为NOR Flash启动,进入BIOS功能菜单。首先选择功能号[f]开始对 Nand Flash进行分区;然后选择功能号[v]开始下载supervivi,下载完毕,BIOS会自动烧写supervivi到NAND Flash分区中,并返回主菜单;安装Linux内核,在BIOS主菜单中选择功能号[k],开始下载Linux内核zImage;安装根文件系统,在BIOS主菜单选择功能号[y],开始下载ysffs根文件系统映像文件rootfs-qtopia-qt4.img,此过程大概需要2 min,下载的文件越大,烧写的时间就会越长;下载完毕后,拔下USB连接线,在BIOS主菜单选择功能号[b],启动系统,进一步进行屏幕校正和相关设置[3]。

3 拨号程序分析

3.1 PPPD拨号程序的简要分析

PPPD是一个用户空间的后台服务进程(Daemon),负责与3G模块进行通信会话来进行必要的初始化设置,然后开始按照协议要求的步骤进行拨号。初始化设置是由PPPD自带的辅助工具CHAT完成,这个程序利用AT指令[2]和3G模块进行通信,主要是交互一些拨号的参数设置、进行拨号的用户名和密码、是否采用数据加密等连网参数[4]。

拨号流程和主要函数如下:

(1)主程序pppd_start(),这个函数首先是做初始化工作,对几个所使用的协议进行初始化,这里所用到的分别是 lcp_protent,chap_protent,ipcp_protent。

(2)完成初始化后,正式开始进行协议的协商,PPPD协议协商流程,如图1所示。

图1 PPPD协议协商流程图

(3)接下来开始发起lcp通信,start_link->lcp_lowerup(),这个函数首先和内核的PPP协议进行协商,主要是 MTU等链路参数,协商后设置 LCPDELAYED_UP标志,把lcp_delayed_up函数设置给一个定时器,这个定时器会根据DELAYED_UP标志周期执行前赋给lcp_delayed_up,在这里函数将主动发起lcp协议请求,之后等待对方回应。start_link函数结束返回到pppd_start()主函数继续执行。

(4)主函数pppd_start会进入一个无限循环,这个循环主要执行函数handle_events()和get_input()。handle_events主要处理接收到的信号,get_input负责处理接收到的数据包。

3.2 配置拨号脚本

(1)需要配置的拨号脚本文件有3个,分别是:wcdma,chat-wcdma-connect和 chat-wcdmadisconnect。把它们存放在/etc/ppp/peers目录下。注意要在wcdma中添加persist命令,保证3G网络在一段时间断开后能自动再连接。

(2)设置开机自动拨号上网,在系统的开机启动脚本中添加shell命令:/etc/ppp/rmlock,判断并删除无效的串口的lock文件,保证成功拨号。/usr/bin/pppd call wcdma,使其自动拨号。/usr/bin/sleep 15,保证15 s的拨号时间。

4 测试

4.1 驱动检测

将电路板的启动模式设置为Nand Flash启动,则Linux系统会在通电后自动运行。系统启动后,会在/dev目录下生成ppp设备节点,可用ls/dev/ppp-l命令查看是否存在。在电路板的USB HOST口连接3G模块的电路板,若超级终端上有如图2所示的信息输出,则可知3G模块的驱动已经正确添加到内核中了。

图2 3G模块驱动检测结果

4.2 拨号测试

在超级终端命令行下,输入命令:pppd call wcdma&,结果如图3所示,说明拨号成功。

图3 3G模块成功拨号的结果

然后记录出现的两个DNS地址,找到/etc目录下的resolv.conf文件,将分配得到的两个DNS服务器地址:202.102.224.68和202.102.227.68添加到文件中,这样就可以进行域名解析了。Ping外网测试,ping 119.75.217.56检查是否能够正常访问网络。结果如图4所示,说明网络连接正常。

图4 ping外网的结果

5 结束语

设计和实现了基于S3C2440和Linux的无线拨号上网终端,对其中3G拨号上网所用到技术进行了探讨和分析。利用ARM高速的实时数据处理能力和Linux的网络支持功能,保证了终端设备工作的稳定性和实时性,具有一定的实际意义。有待注意之处:(1)硬件3G模块的电路板有必要集成到底板上,这样可以简化系统设计,降低成本。(2)Linux系统内核要根据具体的实际应用情况进行裁剪,这样不仅节省了存储资源,而且还提高了系统的处理速度。

[1] 徐英慧,马忠梅,王磊,等.ARM9嵌入式系统设计-基于S3C2410与 Linux[M].北京:北京航空航天大学出版社,2007.

[2] 华为技术有限公司.EM770W AT命令接口说明书[M].广州:华为技术有限公司,2009.

[3] 广东友善之臂计算机科技有限公司.Mini2440用户手册[M].广州:广东友善之臂计算机科技有限公司,2011.

[4] 熊海泉.嵌入式Linux下PPP网络协议实现[J].科技广场,2006(1):37-38.

猜你喜欢
电路板内核菜单
强化『高新』内核 打造农业『硅谷』
中国新年菜单
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
废旧手机电路板中不同金属回收的实验研究
96 芯插接电路板控制系统的故障设置装置设计
本月菜单
微生物内核 生态型农资
废弃电路板拆解技术研究现状及展望
微波辅助浸取废弃电路板中铅锡锑