ARM40-A5应用——RDACE的一种默认出厂配置

ARM40-A5应用——RDACE的一种默认出厂配置

2018.9.15

一、网络配置

  RDACE使用eth0或ppp0连接公网,eth1用于调试。
  并且有线存在则用有线eth0,有线不存在则用无线ppp0,本文介绍该应用场景的配置。

  RDACE共使用3个网络:eth0、eth1、ppp0,其默认配置与用途分别为:
  eth0  192.168.0.250  业务  将RDACE的数据传送到服务器
  eth1  192.168.6.6   调试  使用网络与PC机连接,用 telnet 登陆
  ppp0  移动分配IP   业务  将RDACE的数据传送到服务器

1.1、eth0

  上电启动时,/etc/init.d/S40network 会读取 /etc/network/interfaces.eth0 的内容,配置eth0网口。
  interfaces.eth0 的内容示例:

# Configure eth0
MACADDRESS=28:3e:34:00:01:01
IPADDRESS=192.168.0.250
NETMASK=255.255.255.0

1.2、eth1

  上电启动时,/etc/init.d/S41network 会读取 /etc/network/interfaces.eth1 的内容,配置eth1网口。
  interfaces.eth1 的内容示例:

# Configure eth1
MACADDRESS=28:3e:34:00:02:02
IPADDRESS=192.168.6.6
NETMASK=255.255.255.0

1.3、ppp0

  参考《ARM40-A5应用——GPRS模块ppp拨号上网》。
  RDACE的无线网络,使用GPRS模块,通过ppp模式拨号上网。
  /etc/ppp/pon-M26-auto.sh & 用于启动GPRS模块。
  脚本 /etc/ppp/pon-M26-auto.sh 每60s 会 ping 223.5.5.5 和 223.6.6.6,如果不通,则重启GPRS模块。所以GPRS模块断网后,一般会在2分钟左右重新连上。源码见附(1)。

二、应用场景

  RDACE使用eth0或ppp0连接公网,eth1用于调试。
  在图形界面上选择有线eth0或无线ppp0;若选中eth0,则ppp0无法使用;若选中ppp0,则eth0无法使用。

2.1、使用eth0连接公网

  建立 /etc/network/if-public-network.sh 文件,
touch /etc/network/if-public-network.sh
chmod 755 /etc/network/if-public-network.sh
  其内容为:

#!/bin/sh
killall pon-M26-auto.sh
killall pppd
route del -net default
route add -net default netmask 0.0.0.0 gw 192.168.0.1 eth0

  测试:
  (1)/etc/network/if-public-network.sh
  (2)ping 223.5.5.5 可以看到是通过eth0发出的数据包

2.2、使用ppp0连接公网

  修改 /etc/network/if-public-network.sh 文件的内容:
echo "/etc/ppp/pon-M26-auto.sh &" > /etc/network/if-public-network.sh
  ppp连接建立后,系统自动调用/etc/ppp/ip-up脚本。我们在/etc/ppp/ip-up脚本中增加路由:
route del default
route add default gw $5 $1 # $5 the remote IP address,$1 e.g. ppp0
  测试:

killall pppd
killall pon-M26-auto.sh
/etc/network/if-public-network.sh

  然后 ping 223.5.5.5 可以看到是通过ppp0发出的数据包

root@ARM40:/# ping 223.5.5.5
PING 223.5.5.5 (223.5.5.5): 56 data bytes
64 bytes from 223.5.5.5: seq=0 ttl=51 time=1163.151 ms
64 bytes from 223.5.5.5: seq=1 ttl=51 time=387.219 ms
64 bytes from 223.5.5.5: seq=2 ttl=51 time=353.236 ms
^C
--- 223.5.5.5 ping statistics ---
4 packets transmitted, 3 packets received, 25% packet loss
round-trip min/avg/max = 353.236/634.535/1163.151 ms

  route可以看到:
这里写图片描述

2.3、上电自启动 /etc/network/if-public-network.sh

  若要上电自启动 /etc/network/if-public-network.sh,则修改/etc/profile,

logintty=$(tty|grep -c "console")
if [ $logintty -eq 1 ]; then # ssh,telnet can't get into this line
        /etc/network/if-public-network.sh
fi

二、时间设置

  参考《ARM40-A5应用——与网络时间的同步》。
  ARM40上电启动时,会运行/etc/init.d/profile,在该脚本的最后,添加:

reset
export TZ='CST-8'
hwclock -s -f /dev/rtc0
logintty=$(tty|grep -c "console")
if [ $logintty -eq 1 ]; then              # ssh,telnet can't get into this line
        /opt/user/date_update.sh &        # when startup,update date
        #/opt/user/cron_user.sh &
fi
  • reset
      将终端设回原始的状态,当系统终端因为程序不正常执行而进入一些奇怪的状态时,可用它来重设终端状态。
  • export TZ=’CST-8’
      设定时区为东八区(北京时间)。
  • hwclock -s -f /dev/rtc0
      将硬件时间(/dev/rtc0)设置为系统时间。
  • /opt/user/date_update.sh
      在ARM40刚上电启动时,脚本/opt/user/date_update.sh会从网络同步一次时间,同步成功后退出。若无法同步成功,则每60s再尝试同步一次。
  • /opt/user/cron_user.sh
      脚本/opt/user/cron_user.sh执行定时任务(例行性排程),其内容为:
    0 1 * * * (rdate -s 129.6.15.28) && (hwclock -w) &>/dev/null 2>&1
      即每天从网络同步一次时间,并存入到/dev/rtc0中。
      默认不使用该功能,将其注释掉。

三、远程登录

  参考《ARM40-A5应用——使用holer访问内网的ARM40》。
  RDACE默认安装holer,在远端PC机上,可以通过如下方式访问ARM40:
  (1)先ping一下更放心 ping www.holer.org
    若ping不通,需在/etc/hosts中增加: 121.196.199.47 holer.org
  (2)访问ARM40

ssh armholer@holer.org -p 65534            #使用对应的HOLER KEY和PORT
root@holer.org's password:                 #输入登陆密码
root@ARM40:~# ls /home/test
gpio_test        uart_test        can_test        spi_test

  可见,能够访问ARM40了。 按Ctrl+D键可退出登录。

参考文章:

  ARM40-A5应用——GPRS模块ppp拨号上网
  ARM40应用——ARM40联网的几种应用场景配置示例
  ARM40-A5应用——与网络时间的同步
  ARM40-A5应用——使用holer访问内网的ARM40
  荟聚计划:共商 共建 共享 Grant
  

附:

(1)脚本 /etc/ppp/pon-M26-auto.sh

#!/bin/sh

dns1="223.5.5.5" #aliyun dns
dns2="223.6.6.6" #aliyun dns

if [ ! -e /etc/ppp/connect-errors ]; then 
        ln -s /dev/console /etc/ppp/connect-errors
fi

while true
do
        procnum=`ps -ef|grep "pppd"|grep -v grep|wc -l`
        if [ $procnum -eq 0 ]; then
                pppd call M26-gprs &
        fi
        sleep 60

        ping -s 1 -c 1 -w 50 -I ppp0 $dns1 >/dev/null #ping dns1,1 byte,1 count,timeout is 50s
        if [ "$?" != "0" ]; then #ping request timed out
                ping -s 1 -c 2 -w 50 -I ppp0 $dns2 #ping dns2,1 byte,2 count,timeout is 50s
                if [ "$?" != "0" ]; then #ping request timed out
                        killall pppd #kill pppd
                fi
        fi
done

(2)/opt/user/date_update.sh 的内容

#!/bin/sh

ntpServer="129.6.15.28"
#echo "nameserver 223.5.5.5" > /etc/resolv.conf # aliyun DNS1
#echo "nameserver 223.6.6.6" >> /etc/resolv.conf # aliyun DNS2

while true
do
        sleep 60
        rdate -s $ntpServer
        tmp=$?
        #echo $tmp # for test
        if [ $tmp -eq 0 ]; then # get ntp time
                hwclock -w 
                echo "Date is updated."
                exit 0
        else # can't get ntp time
                procnum=`ps -ef|grep "rdate"|grep -v grep|wc -l`
                if [ $procnum -ne 0 ]; then
                        killall rdate
                fi
        fi
done

(3)/opt/user/cron_user.sh 的内容

/opt/user$ cat cron_user.sh 
#!/bin/sh

if [ ! -d /var/spool/cron/crontabs ]; then
        mkdir -p /var/spool/cron/crontabs
fi
crontab /etc/cron.arm40 # cron
crond

猜你喜欢

转载自blog.csdn.net/vonchn/article/details/82702451