信息安全系15级学生课程设计——2018.05
课题:物联网实训·远程安防监控系统
一、课题简介
本系统是基于PC、ARM Cortex-A8/A9、GPRS、ZigBee等设备依托在各项互联网、传感器等技术上编写以实现远程安防监控,使用户更方便的监控所需监控的环境,获得所有信息及其处理特殊情况。
本系统主要分为三大模块:核心服务器端(PC)、前端数据中心(A9/A8)和远程监控终端(ZigBee)。
二、实现情况
目前,本课题组已将所需调试的模块编译并试运行,个别地方仍然存在问题,但已可初步实现PC和ARM之间的串口通信并使用浏览器访问远程监控控制页面,在正常使用状态下不会出现运行Bug。
贡献度排名:赵文昊、王一帆、许星霖
WiFi模块和视频接口模块目前尚存在未解决的问题,具体情况将在下面详述。
三、实现步骤
1.环境搭建
在课程设计初期,约一周的时间内一直都在进行环境的配置,基本是由赵文昊负责的,由于教程内使用的Ubuntu虚拟机版本、编译器版本都比较老,这些花掉了不少时间,并且没有指出详细的配置方法和效果,导致在尝试向后进行时困难重重,很多编译无法通过。在这种情况下还是求助老师获得了一个配置好的Ubuntu虚拟机环境,这块的进度比较慢,也拖慢了整体实现的进度,但是最终没有为后面的步骤造成影响。
在小组3人中,只有1人完全没有Linux的使用基础,故前期许星霖简要学习了Linux指令,可以完成简单的操作,达到了足够完成本次实现的程度。
2.编译源码
在这个阶段我们对老师提供的模块代码进行了编译,这里用到了交叉编译,在解释什么是交叉编译之前,先要明白什么是本地编译。
本地编译
本地编译可以理解为,在当前编译平台下,编译出来的程序只能放到当前平台下运行。平时我们常见的软件开发,都是属于本地编译:
比如,我们在 x86 平台上,编写程序并编译成可执行程序。这种方式下,我们使用 x86 平台上的工具,开发针对 x86 平台本身的可执行程序,这个编译过程称为本地编译。
交叉编译
交叉编译可以理解为,在当前编译平台下,编译出来的程序能运行在体系结构不同的另一种目标平台上,但是编译平台本身却不能运行该程序:
比如,我们在 x86 平台上,编写程序并编译成能运行在 ARM 平台的程序,编译得到的程序在 x86 平台上是不能运行的,必须放到 ARM 平台上才能运行。
所以,这需要我们将交叉编译的工具链路径配置到系统环境变量中,这里没有什么问题。
接下来是BootLoader、Linux内核、主程序、根文件系统这几块源码的编译,赵文昊和王一帆两边都对源码进行了编译,对比发现没有不同之处,也就可以正常使用了。
3.镜像烧写
这块地方由于我的电脑VMware有点奇怪,SD卡怎么说也接不到虚拟机上,所以Linux-SD卡烧写这块实现主要是由王一帆同学实现的,Fastboot烧写镜像这块主要是我来实现的。
将我们在上个环节中编译出来的程序代码拷到一起后,在Linux中以管理员身份运行mkuboot.sh这个shellcode文件,即可自动运行镜像烧写过程。
而Fastboot方式烧写镜像就在Windows平台下操作即可,将编译好的文件放在镜像烧写的目录中,在安装好设备的Fastboot镜像并添加了Fastboot命令的情况下,使用资料中给出的批处理命令自动烧写即可成功。
4.Linux内核调试
在这之后的内容都是我和王一帆同学共同完成的两个人都进行了实验操作,在启动了开发板上的Linux命令提示符后,程序一直向我们汇报错误如下所示,出于胆小一直没敢输入指令,后来才知道不停跳出错误提示这个过程中可以大胆敲入我们需要的命令。这个时候我们并不知道开发板上没有烧WiFi模块,毕竟开发板被一块大屏幕盖住了,后面另找老师要来了WiFi模块的外接设备,虽然启动后仍然在跳出错误报告和日志信息,但是创建软链接后就可以正常连接到设备上了。
在获取到了外接WiFi模块后无线网卡会在开启wap_supplicant服务后,在ifconfig中失去wlan0网卡,所以WiFi模块目前实现还是存在问题。
5.BOA和视频模块调试
BOA服务器按部就班开启服务即可打开,后来也证明了以后不需要再多次手动开启服务,开机会自动启动,启动服务后在电脑上访问开发板的IP地址即可连接到管理平台。(由于WiFi模块出错,所以这里只能使用网线直连电脑,需要配置eth0网卡IP和电脑以太网口静态IP地址,确保电脑能Ping通开发板,开发板Ping不通电脑可能是防火墙规则所致)
试一下,LED和蜂鸣器的控制都是正常的 ,风扇控制不了因为我们开发板上并没有风扇这个设备,所以暂时放掉了。
视频模块这里我们在试用指导书上的命令时,提示Camera设备繁忙,无法使用video0接口进行摄像头调用,自然也就无法通过访问8080或者是自己设定好的端口进行访问连接摄像头,并且我们很难判断具体是哪个进程在占用摄像头,我在尝试kill掉一些程序后停止了尝试,不敢去kill掉系统进程。
我们换了一个video1进行视频模块的调试,出现了一些变化,8080端口可以访问不再是404:Not Found了,但是页面背景是灰色的,并没有摄像头的图象显示,我个人认为是摄像头的video设备错误,video0以外的设备不能获取图象。
四、其它出现的问题
驱动程序Fastboot安装有错
安卓设备目前只有我的设备可以做到连接上后可以在设备管理器中看到它并为其安装驱动程序,所以目前只有我的设备可以通过Fastboot方式烧写SD卡镜像,另外,许星霖组员的电脑上无法将Fastboot代码添加到环境变量Path中所以发Fastboot命令无法找到。
解决方案:Fastboot驱动安装时应关闭驱动强制签名,百度上可查,亲测有效。但是在本次课程设计结束后应调回初始设置,否则电脑将面临危险,不推荐长时期使用这个状态。
VMware连接SD卡设备出错
这个我目前其实也不知道怎么解决,因为我的VMware好像只有在实现这个课程设计的时候才出现这个问题,目前能想到的给大家提供的方法也就是更新VMware版本或者修改服务项的键值,到现在仍然不能解决。