ARM+LINUX(montavista2.6.x)环境下

SIMCOM5218使用

http://blog.sina.com.cn/s/blog_4c796ed20100hpxg.html

一.

系统平台的搭建

系统平台的搭建采用TFTP下载内核启动挂载网络文件系统的方式。具体的平台搭建过程《SEED DVS6446

Development Software User's

Guide.pdf》和《sprue66f.pdf》都有详细的说明。在此只说明些注意事项:

1. 首先保证host机linux系统已经开启xinetd,tftp和nfs服务同时关闭防火墙。这些可以在终端输入setup命令后的的图像用户界面中进行勾选也可以直接用命令来操作/etc/init.d/iptables

stop //关闭防火墙,service xinetd

restart  //重启 xinetd

服务等。如果没有tftp服务选项可以在系统——添加/删除文件中勾选tftp服务系统自动更新进行安装。安装好后在根目录下应有tftpboot目录,如果没有创建此目录。注意tftpboot目录的权限可以用命令

chmod –R 777 /tftpboot

进行更开。关于tftp的配置也可以在启动配置文件里更改:修改/etc/xinetd.d/tftp主要设置TFTP服务器的根目录,开启服务,修改配置文件如下:

service tftp

{

disable = no

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /tftpboot -c

per_source = 11

cps = 100 2

flags = IPv4

}

说明:

其中sever_args处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件。验证TFTP服务是否起来了可以用netstat

–nlp命令查看。

2. 网络文件系统的挂载:修改/etc/exports时候

/opt/nfs

*(rw,sync,no_root_squash,no_all_squash)注意*与(间没有空格。在拷贝根文件系统的时候注意最好不要用图形用户界面的copy

最好用copy –a

选项,这样可以保证文件属性不变。实际过程中如果/dev目录下的文件由于属性变化的问题可能导致console,null,ttyS0等文件出错,导致挂载nfs时候出现can’t

open an initial console 等错误。

3. 在开发板启动时候,设置bootargs的时候将simcom5218的设备ID等设置进去,以保证系统能够正确识别到它。如下:

#setenv bootargs mem=60M console=ttyS0,115200n8 root=/dev/nfs rw

noinitrd ip=dhcp nfsroot=192.168.0.11:/opt/nfs

video=dm64xxfb:output=pal usbserial.vendor=0x05c6

usbserial.product=0x9000

二.

模块的连接

将3G模块通过USB线与开发板连接:

 

SIMCOM5218 开发板

三.

更改内核驱动源码,编译内核,内核设置

3.1首先要配置内核选项(注意事项/dev/tts目录下)

要想系统能够识别到设备且能拨号上网,需要内核支持一些选项,比如对USBhost的支持,还有两项比较重要是对ppp的支持和USB

Sserial Converter

support的支持,通常内核配置的默认配置中会选上这些。大概原理就是将USB设备转为串口设备,然后通过chat,pppd来拨号产生ppp0设备。进入内核源码目录下,输入命令:

# make ARCH=arm CROSS_COMPILE=arm_v5t_le- menuconfig

进入内核配置命令:

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

PPP Deflate compression

< >PPP BSD-Compress compression

< >PPP MPPE compression (encryption)

(EXPERIMENTAL)

< >PPP over Ethernet

(EXPERIMENTAL)

< >PPP over ATM

< >PPP over L2TP (EXPERIMENTAL)

[*]USB

support--->

USB Serial Converter

support--->

<>内为空表示不编译进内核,*表示编译进内核,M表示编译成模块,使用时候,需要用加载,实际操作时本人是先编译成模块,手动加载,等到调试成功后,再把驱动编译进了内核。更改内核配置后需要重新编译内核。(#make

ARCH=arm CROSS_COMPILE=arm_v5t_le- uImage).

在模块连接好开发板后,下载映象启动系统的时候或是在系统启动后连接3G模块,如果有如下信息显示证明该模块已经成功加载,可以使用了。

最值得注意的一点是arm开发板平台不同于pc平台,pc平台linux系统驱动成功加载后,应该是在/dev目录下增加了ttyUSB0,ttyUSB1,ttyUSB2,ttyUSB3,ttyUSB4几个设备。而arm平台linux系统在成功加载模块后,是在/dev/tts目录下增加了USB0,USB1,USB2,USB3,USB4几个设备。如下:

3.2不同内核版本的内核中usbserial驱动会有些差异,有的版本不需更改.如果在/dev/tts目录下识别不到USB0,USB1,USB2.USB3,USB4

就需要更改内核下的驱动源码:

drivers\usb\serial\Usb-serial.c

drivers\usb\serial\Generic.c

修改如下(红色代码为添加的):

drivers\usb\serial\Usb-serial.c:

int usb_serial_probe(struct usb_interface *interface,

const struct usb_device_id *id)

{

……

int

max_endpoints;

int

isnmea = 0;

……

iface_desc = interface->cur_altsetting;

if(dev-> descriptor.idVendor == 0x05c6

&&

dev-> descriptor.idProduct == 0x9000

&&

iface_desc-> desc.bInterfaceNumber == 1)

isnmea =

1;

for (i =

0; i <

iface_desc->desc.bNumEndpoints; ++i) {

endpoint =

&iface_desc->endpoint[i].desc;

……

if (usb_endpoint_is_bulk_out(endpoint)) {

dbg("found

bulk out on endpoint %d", i);

if(!isnmea) {

bulk_out_endpoint[num_bulk_out] = endpoint;

++num_bulk_out;

}

}

……

}

……

#ifdef CONFIG_USB_SERIAL_GENERIC

if (type

== &usb_serial_generic_device) {

num_ports = num_bulk_out;

if (num_ports == 0 && !isnmea)

{

unlock_kernel();

dev_err(&interface->dev, "Generic

device with no bulk

out, not allowed.\n");

kfree (serial);

return -EIO;

}

}

#endif

……

}

drivers\usb\serial\Generic.c

int usb_serial_generic_write(struct usb_serial_port *port, const

unsigned char

*buf, int count)

{

……

//return

0;

return

count;

}

更改完代码后重新编译内核,下载映象启动系统。

四. 拨号上网

4.1 编写ppp拨号上网脚本

系统支持pon和poff命令来实现ppp服务的开启和关闭服务,pon命令如果不加参数的话,系统会默认执行位于/etc/ppp/peers目录下的provider脚本。可以把自己的拨号脚本写于此文件内,如果有自己命名的脚本,需要指明脚本参数,或是更改pon脚本内容。也可以用命令pppd

call my_scripts_name。建议采用更改provider脚本的方式,具体可参考如下步骤:

(1)编辑目录/etc/ppp/chap-secrets(此操作用于需要认证)

添加如下:

# Secrets for authentication using CHAP

# client server secret IP

addresses

any 0 any

#cp /etc/ppp/chap-secrets /etc/ppp/pap-secrets

注:实际操作过程中采用的是没有认证noauth,所以这两个脚本并未使用。

(2)编辑目录/etc/ppp/peers/provider

修改为:

noauth

/dev/tts/USB2

460800

crtscts

modem

debug

nodetach

usepeerdns

noipdefault

defaultroute

user "3gnet"

0.0.0.0:0.0.0.0

connect "/usr/sbin/chat -s -v -f

/etc/ppp/connect-chat"

disconnect "/usr/sbin/chat -s -v -f

/etc/ppp/disconnect-chat"

注:connect-chat和disconnect-chat为ppp目录下需要创建和编辑的两个脚本

(3)创建和编辑/etc/ppp目录下的connect-chat脚本和disconnect脚本

connect-chat脚本:

# chat script for provider

TIMEOUT 15

ABORT  "DELAYED"

ABORT "BUSY"

ABORT "ERROR"

TIMEOUT 15

ABORT "BUSY"

ABORT "ERROR"

ABORT "NO

DIALTONE"

ABORT "NO

CARRIER"

TIMEOUT 40

"" 'AT'

SAY 'send AT+CFUN=1...\n'

OK

'AT+CFUN=1' #设置为全功能模式

TIMEOUT 60

SAY 'Setting APN...\n'

OK

'AT+CGDCONT=1,"IP","3gnet",,0,0'#wcdma的APN为3gnet

SAY 'Dialing...\n'

OK 'ATDT*99#' #拨号

CONNECT

disconnect-chat脚本:

ABORT OK

ABORT  BUSY

ABORT DELAYED

ABORT "NO

ANSWER"

ABORT "NO

CARRIER"

ABORT "NO

DIALTONE"

ABORT VOICE

ABORT ERROR

ABORT RINGING

TIMEOUT 12

"" \\k\\k\\k\\d+++ATH

"NO CARRIER-AT-OK"

拨号前要在终端输入命令删除default端口,默认下是使用eth0

上网的,如下图:

在控制中端执行:#route del defuault命令后应显示如下:

修改完后在终端输入命令:

target# pon或者pon&使其后台运行

如果显示如下信息表示已经成功拨号上网了:

root@192.168.0.101:~# pon

timeout set to 15 seconds

abort on (DELAYED)

abort on (BUSY)

abort on (ERROR)

timeout set to 15 seconds

abort on (BUSY)

abort on (ERROR)

abort on (NO DIALTONE)

abort on (NO CARRIER)

timeout set to 40 seconds

send (AT^M)

send AT+CFUN=1...

expect (OK)

AT^M^M

OK

-- got it

send (AT+CFUN=1^M)

timeout set to 60 seconds

Setting APN...

expect (OK)

^M

AT+CFUN=1^M^M

OK

-- got it

send (AT+CGDCONT=1,"IP","3gnet",,0,0^M)

Dialing...

expect (OK)

^M

AT+CGDCONT=1,"IP","3gnet",,0,0^M^M

OK

-- got it

send (ATDT*99#^M)

expect (CONNECT)

^M

ATDT*99#^M^M

CONNECT

-- got it

Serial connection established.

using channel 2

Using interface ppp0

Connect: ppp0

/dev/tts/USB2

Warning - secret file /etc/ppp/pap-secrets has world and/or

group access

sent [LCP ConfReq id=0x1

0x0>

]

rcvd [LCP ConfReq id=0x0

0x0>

> ]

No auth is possible

sent [LCP ConfRej id=0x0

MD5>]

rcvd [LCP ConfAck id=0x1

0x0>

]

rcvd [LCP ConfReq id=0x1

0x0>

]

sent [LCP ConfAck id=0x1

0x0>

]

sent [LCP EchoReq id=0x0 magic=0xffab68f]

kernel does not support PPP filtering

sent [CCP ConfReq id=0x1

15>

15>]

sent [IPCP ConfReq id=0x1

01>

<

ms-dns3 0.0.0.0>]

rcvd [LCP DiscReq id=0x2 magic=0x18a9540]

rcvd [LCP EchoRep id=0x0 magic=0x18a9540 0f fa b6 8f]

rcvd [LCP ProtRej id=0x3 80 fd 01 01 00 0c 1a 04 78 00 18 04 78

00]

Protocol-Reject for 'Compression Control Protocol' (0x80fd)

received

rcvd [IPCP ConfNak id=0x1

10.11.12.13>

10.11.12.14>

0.11.12.13>

10.11.12.14>]

sent [IPCP ConfReq id=0x2

01>

3>

10.11.12.14>]

rcvd [IPCP ConfNak id=0x2

10.11.12.13>

10.11.12.14>

0.11.12.13>

10.11.12.14>]

sent [IPCP ConfReq id=0x3

01>

3>

10.11.12.14>]

rcvd [IPCP ConfReq id=0x0]

sent [IPCP ConfNak id=0x0

0.0.0.0>]

rcvd [IPCP ConfRej id=0x3

01>]

sent [IPCP ConfReq id=0x4

0.0.0.0>

10.11.12.13>

.14>]

rcvd [IPCP ConfReq id=0x1]

sent [IPCP ConfAck id=0x1]

rcvd [IPCP ConfNak id=0x4

172.20.62.64>

202.106.195.68>

202.106.46.151>]

sent [IPCP ConfReq id=0x5

172.20.62.64>

202.106.195.68>

202.106.46.151>]

rcvd [IPCP ConfAck id=0x5

172.20.62.64>

202.106.195.68>

202.106.46.151>]

Could not determine remote IP address: defaulting to

10.64.64.64

not replacing existing default route via 192.168.0.2

Cannot determine ethernet address for proxy ARP

local IP address 172.20.62.64

remote IP address 10.64.64.64

primary DNS address

202.106.195.68

secondary DNS address 202.106.46.151

Script /etc/ppp/ip-up started (pid 1576)

Script /etc/ppp/ip-up finished (pid 1576), status = 0x0

此时执行route命令应该有ppp0:

要想能ping通域名还需更改/etc/resolv.conf文件添加如下:

nameserver 202.106.195.68

nameserver 202.106.46.151

执行poff命令可以关闭ppp0显示信息如下:

(4)关于rc.local启动文件

如果考虑让系统在启动的时候就自动运行脚本,是用户登录后就直接能够上网,而不用去手动pon启动ppp拨号服务的话,可以考虑更改配置文件。在/etc/rc.d目录下创建文件rc.local然后在里边添加自己要执行的命令,在系统启动后执行完所有启动配置文件,且在提示用户登录前,执行此脚本。如在此文件中可以加入

route del default

pon&

命令,系统启动的时候会自动拨号上网。

4.2 安装bwm-ng测试网络

LINUX的带宽监控工具,下边的网站提供了很多:

http://translate.google.com.hk/translate?hl=zh-CN&langpair=en%7Czh-CN&u=http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-linux.html

网络的测试采用了基于控制台的bwm-ng软件:在ppp上网或是ftp上传下载文件的过程中,执行bwm-ng命令会显示ppp0有数据接收到和发送出。

arm linux 2.6下载,ARM+LINUX(montavista2.6.x)环境下SIMCOM5218使用相关推荐

  1. kali linux 虚拟机iso 下载,Kali Linux 2016.2发布提供虚拟机以及系统镜像下载

    Kali Linux 2016.2发布提供虚拟机以及系统镜像下载 Kali Linux 2016.2发布提供虚拟机以及系统镜像下载,本次Kali Linux 2016.2提供了五种桌面模式,分别为Gn ...

  2. linux补丁怎么下载工具,Linux内核补丁批量自动下载工具

    Linux kernel官网cgit工具不支持按变更代码进行补丁搜索,想到个办法就是把补丁都抓下来,这样可以在本地搜索.花了2个小时写了个小工具,话不多说,直接看效果: E:\docs\TOOLS\p ...

  3. redis linux 安装包下载,redis linux安装包

    redis linux安装包适用于Linux系统平台,如果您需要搭建NOSQL数据库,可以在本页下载该安装包.安装存在一些前提要求,例如C++编译环境.gcc编译器,下载解压包之后,需要您根据项目情况 ...

  4. linux的tomcat下载,tomcat linux 64位下载

    tomcat 8发布了,这里为大家带来了 linux版本下载,此版本为8.0.32 tomcat linux 64位下载,它是由Apache 所开发的一个核心项目,由于Tomcat 产品的技术先进.性 ...

  5. linux最新系统下载软件,linux lite4.8稳定版下载

    linux lite4.8稳定版是最新推出的linux稳定版操作系统,支持64位安装系统,并且拥有丰富完整的系统套件,让你开发与办公更加方便,还搭载了各种各样的主题皮肤,以及强大的图像编辑器和查看器, ...

  6. suse linux 11镜像下载,SUSE Linux Enterprise 11 SP3 发布

    SUSE Linux Enterprise是一份面向关键任务计算的协作式平台.SUSE Linux Enterprise Desktop是企业级Linux桌面,适合例行的企业应用.它向现有系统和很多办 ...

  7. Linux搭建BT下载服务器,linux下搭建bt服务器–xbt篇

    在windows2003下搭建bt服务器对硬件的要求较高,低配置的服务器容易死机,很是麻烦. 我们考虑用linux.据我所知,在linux下面可以作为bt tracker的软件并不是不多.现在介绍两个 ...

  8. linux安装apache下载文件,Linux安装apache详解

    一.概述 今天终于在在Linux把apache安装好了,花了将近两天的时间,废材啊... 看图. 二.步骤 1.下载apache源代码 可以通过WinScp将源代码将从window上移到Linux上. ...

  9. 移动u盘装linux移动系统下载,(把Linux装进U盘打造最简洁移动系统.doc

    (把Linux装进U盘打造最简洁移动系统 把Linux装进U盘 打造最简洁移动系统 在日常的电脑使用中,我们已经习惯了Windows操作系统,你有没有想过使用更简洁.随处可用的移动系统呢?你想不想随时 ...

最新文章

  1. 2018python培训-参加python培训要多少钱?
  2. 2016年Android实习岗位 腾讯二面+阿里一面
  3. python counter_教你Python的collections.Counter类型
  4. Swift傻傻分不清楚系列(九)闭包
  5. 程序员编程经验_在没有实际编程的情况下成为更好的程序员
  6. Jmeter Web 性能测试入门 (四):一个小实例带你学会 Jmeter 脚本编写
  7. JavaScript概念梳理
  8. multimodel_forms 插件用法
  9. TechSmith Camtasia Mac v2021屏幕录制剪辑软件
  10. octave存储文档
  11. oracle中两个日期相减
  12. STM32与ARM7、ARM9、ARM11
  13. 阿里云IoT | HaaS开源百校科技助力计划 —— 开源大使招募
  14. Python爬虫进阶之巧破RSA加密
  15. iQOO探索悦行者深入阿尔山林海体验性能和操控激情
  16. VeLO:让AI自己调整参数的新优化器
  17. 【图像融合】基于matlab高分辨率全色图IHS图像融合(含评价指标)【含Matlab源码 2406期】
  18. MYSQL高可用架构MMM实现
  19. Android--kotlin基础(三)
  20. 【论问阅读】VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION

热门文章

  1. 眼动和脑电多模态数据融合分析
  2. 在线脑图(思维导图)服务网站
  3. 百家讲坛 明太祖朱元璋
  4. 新零售复购分析,简单 3 步抓住回头客
  5. 西门子1500可编程逻辑控制器语言介绍(1)----CEM语言
  6. A/B 测试的统计学原理及用例详解
  7. 有五只猴子分一堆桃子.第一只猴子最先来,扔了一个后平分成五分,拿走了一份.其他猴子也一样扔了一个,平分成5分,拿走自己的.问:桃子至少有几个?
  8. SpringBoot自动配置Redis原理
  9. BitLocker使用: 不重启,关闭已解锁加密驱动器。
  10. ESB Evaluation