产品在定型前,嵌入式系统需要对设备进行一系列的试验,包含环境性试验和可适应性试验,在这里谈谈可适应性中脚本的应用。
环境描述:
设备需要做emc试验,包含静电,脉冲和浪涌试验。
要验证设备在做试验的过程中是否有损伤、间歇性异常等不良情况,就需要对设备进行实时监控。这样就需要对设备进行在线监控。
当然开发一个上位机软件实时连接设备在线监测是最理想的状态,但是需要消耗大量的人力和物力,在这里我们使用脚本来实现,消耗的时间较少,当然,我们今天的目的不是研究如何使用脚本监测硬件状态,略过不说,抱歉抱歉。。。
难点:
由于emc试验对设备会有损伤的同时,所以对监测设备(如电脑、串口线、网线)也有一定的损伤,经过实践发现,采购抗干扰能力强的设备会有不错的效果,即使增加磁环也不能完全避免这个现象,这样对我们采集实时的状态带来了一定的不确定性。
解决方法:(举例)
while true
do
echo "====================" > /dev/console
echo "test wifi" > /dev/console
echo "====================" > /dev/console
/bin/ping 192.168.124.1 -I wlan0 -c1
[ $? -eq 0 ] && echo "wifi ping success" > /dev/console || echo "${RED} wifi ping failure" > /dev/console
sleep 2
done
以上是一个检测wifi的脚本,运行脚本后会一致检测wifi的状态,并将检测的状态(wifi ping success 或者 wifi ping failure)打印到屏幕上,供我们在线查看。
在试验的过程中会出现这样一个情况,串口设备会因为emc的干扰产生中断,这样在中断的时间里无法看到设备的实际状态。
可以采用将输出信息也打印到文件中来完成,即使中断了,也可以事后查看log文件来分析。
while true
do
echo "====================" >/dev/console
echo " test wifi" >/dev/console
echo "test wifi" >> auto.txt
echo "====================" >/dev/console
/bin/ping 192.168.124.1 -I wlan0 -c1
[ $? -eq 0 ] && echo "wifi ping success" >> auto.txt || echo "${RED} wifi ping failure" >> auto.txt
[ $? -eq 0 ] && echo "wifi ping success" >/dev/console || echo "${RED} wifi ping failure" >/dev/console
sleep 2
done
这样就可以将检测过程的文件输出到 auto.txt 文件中。
经试验发现效果不错,在做电源浪涌的时候,发现设备重新启动了,这下完了,不知道啥时候启动,具体是由于哪个回路的浪涌信号引起的,我总不能一直盯着设备看吧,即使一直盯着,可能也看不到啊。干脆加个时标吧,就变成这个样子了。
while true
do
echo "====================" >/dev/console
echo "`date +%T` test wifi" >/dev/console
echo "`date +%T` test wifi" >> auto.txt
echo "====================" >/dev/console
/bin/ping 192.168.124.1 -I wlan0 -c1
[ $? -eq 0 ] && echo "wifi ping success" >> auto.txt || echo "${RED} wifi ping failure" >> auto.txt
[ $? -eq 0 ] && echo "wifi ping success" >/dev/console || echo "${RED} wifi ping failure" >/dev/console
sleep 2
done
需要注意的一点是,做试验之前,需要对设备进行对时。这样就可以观察到从什么时间开始、结束,只要记录下验证不同项目的时间点,就可以对照时间,查找当时的异常情况了。感觉心里有底多了。
以上仅作记录,供有需求的人参考。