安全监控项目记录1——准备工作1、项目简介图2、进度和时间表3、环境构建1、环境构建2、库安装3、交叉编译环境构建4、tftp安装和测试5、NFS安装测试6、-
一、项目概要图
二、进度和日程安全监测项目阶段目标
第一天
回顾知识体系框架
第二天
能够了解项目实战时间表,初步构建项目所需的嵌入式环境
第三天
对项目的层次体系能力和功能框架有自己的分析能力,能够培养其意识
第四天
充分理解可以进行安全监视的硬件和软件,自己制作通信的结构体
分阶段提交视频内容:
视频录制:简述项目分层体系框架、功能分析过程、通信结构创建过程、实现的安全监控项目() ) )。
视频格式发送要求:
格式: mp4格式名字要求:阶段1-你的名字-视频主题-年月日. mp4
示例:第1阶段-土豪铅笔-第14天-层次体系与功能分析-20170804.mp4
第五天
完成大型机构建
第六天
完成boa服务器移植
分阶段提交视频内容:
视频录制:简要介绍构建的安全监控项目框架,完成boa服务器移植,演示html和cgi跳转
视频格式发送要求:
示例:第2阶段-狂野支架-第56天-仓库项目框架构建和boa移植-20170806.mp4
第七天
完成cgi、html移植
第八天
完成网络点亮
分阶段提交视频内容:
视频录制:演示视频,完成cgi、html部分的移植,在网页上真实控制a9指示灯
视频格式发送要求:
示例:第3阶段- ysdsn-da y78 -网络点亮-20170808.mp4
第九天
我把模拟的数据上传到了网页上
第十天
完成视频流服务器移植
分阶段提交视频内容:
视频录制:用视频流服务器拍摄完成的模拟数据并上传到网页的演示视频
视频格式发送要求:
示例:第4阶段4-ysdsn-day910-视频流服务器拍摄模拟数据上传页面-20170810.mp4
第11天
完成A9和ZigBee部分的传感器数据收集
第十二天
完成A9控制ZigBee硬件
分阶段提交视频内容:
视频录制:完成A9和ZigBee部分传感器数据的采集,同时将ZigBee部分数据传输到串行端口和A9端,同时通过串行端口和A9端控制ZigBee上的硬件
视频格式发送要求:
示例:阶段5-kld dw-day 1112-ZigBee-a9-ZigBee-2017 08 12.MP4
第十三天
完成传感器的实际数据上传(包括A9和ZigBee部分)
第十四天
网页控制硬件(包括A9和ZigBee部分)
分阶段提交视频内容:
视频录制:将实际数据上传到网页,通过网页控制A9和ZigBee硬件
视频格式发送要求:
示例:第6阶段6-klddw-day1314数据上传网页控制硬件-20170814.mp4
第十五天
演示完成GPRS消息和电话警告功能,直接向用户发送消息
示例:实现第7阶段7-klddw-day15gprs消息或电话报警功能-20170815.mp4
第16天
doc文件提交:独立完成安防监控项目总结,从框架建设、通信结构设计、进程间通信、线程间通信、项目分工、项目协作、项目收获等部分进行阐述,注重总结提升过程
示例:第8阶段8-klddw-day16项目总结文档(2017 08 16 .视频解说) )。
三、环境构建1、环境概述
2、库安装
3 )交叉编译环境构建3.1、解压缩工具链压缩包(http://gcc.gnu.org/下载地址) ) ) ) )。
将$ CD~$ mkdir toolchain $ CD toolchain下载的交叉编译工具/gcc-4.6.4.tar.xz复制到toolchain目录中,然后单击$ tarxvfgcc-4.
修改文件/etc/bash.bashrc,使sudo VI/etc/bash.bashrcexportpath=$ path :/home/feng Junhui/toolchain/gcc -。
$ source /etc/bash.bashrc 3.4,查看环境变量:
汾酒@ ub
untu:~$ echo $PATH/usr/local/s自然的音响:/usr/local/自然的音响:/usr/s自然的音响:/usr/自然的音响:/s自然的音响:/自然的音响:/usr/games:/usr/local/games:/home/fengjunhui:/home/fengjunhui/toolchain/gcc-4.6.4/自然的音响3.5、工具链的测试
$ arm-none-linux-gnueabi-gcc –vUsing built-in specs.COLLECT_GCC=arm-none-linux-gnueabi-gcc最后两行:Thread model: posixgcc version 4.6.4 (crosstool-NGhg+default-2685dfa9de14 -tc0002)扩展:
Ubuntu14.04 Ubuntu16.04. 64位系统的安装需要先安装如下两个包:
apt-get install lib32z1 lib32ncurses5
4,tftp安装与测试uImage === 内核 设备树 exynos4412-fs4412.dtb exynos4412-origen.dtb
uImage、设备树文件都可以通过tftp从Ubuntu所在的tftp服务器端来加载。 板子 : 客户端 Ubuntu : 服务器端 C-S 1.1、检查tftp服务器是否存在: dpkg -s tftpd-hpa1.2、未安装:sudo apt-get install tftpd-hpa tftp-hpa 通过安装时的打印信息,来确定在etc目录下的配置文件4.1、修改配置文件,
sudo vi /etc/default/tftpd-hpa # /etc/default/tftpd-hpa #用户名 TFTP_USERNAME="tftp" #你的tftp服务器所在的路径 TFTP_DIRECTORY="/home/linux/tftpboot" #tftp服务器的网关和端口号 TFTP_ADDRESS="0.0.0.0:69" #tftp 文件服务器的可供选择的权限, get file put file list file TFTP_OPTIONS="-l -c -s"4.2、创建tftp服务器所在的路径:
mkdir /home/linux/tftpboot -p //和配置文件的名字和路径必须保持一致 chmod 777 tftpboot //修改tftp服务器文件夹的权限4.3、重启tftp服务器:
linux@ubuntu:~$ sudo service tftpd-hpa restart tftpd-hpa stop/waiting tftpd-hpa start/running, process 6439 板子启动加载内核的时候经常遇到TTTTTTT..... 判断:网络不通 ping不通,网络配置有关 tftp服务器没有启动4.4、本地回环测试
tftp 127.0.0.1 tftp>get main.c //下载文件从tftpboot目录下 (保证tftpboot目录下有你要下载的文件) tftp>put while.c //上传文件到tftpboot目录下 (保证当前目录有你要上传的文件) tftp>q //退出 查看当前文件目录,可以看到从tftpboot目录下载的main.c文件,打开tftpboot目录,可以看到while.c文件。4.5、本地回环可能遇到的问题
可能遇到的问题参考:tftp>get fileTransfertimed out.原因: tftpd服务没有启动,重启tftp服务器:sudo service tftpd-hpa restart tftp>get fileErrorcode 2: Only absolute filenamesallowed原因:在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpatftp>put fileErrorcode 1: File not found原因:当前目录下指定的文件file不存在;或tftpd启动参数中没有指定-c选项,允许上传文件 5,NFS安装测试 nfs:网络文件系统 /nfsroot=... 内核起来的时候,在最后会加载文件系统,(根据你的参数去加载文件系统)ramdisk yaffs..... ext2 1、安装 sudo apt-get update //更新一下源 sudo apt-get -f install //更新一下依赖 sudo apt-get installnfs-kernel-server //如果不存在,就在线下载并安装2、修改nfs配置文件: mkdir ~/source cp rootfs.tar.gz . tar xvf rootfs.tar.gz 在这个目录下有这两个文件 linux@ubuntu:~/source pwd /home/linux/source linux@ubuntu:~/source$ ls rootfs rootfs.tar.xz sudo vim /etc/exports 添加如下内容: /home/linux/source/rootfs *(rw,sync,no_subtree_check,no_root_squash) 路径==>nfs路径===>nfs又是什么?一个路径*四个参数
其中: /home/linux/source/rootfs:共享的目录; *:不限定客户端; rw:共享目录可读可写; sync:将数据同步写入内存缓冲区与磁盘中,效率低,但可以保证数据的一致性; no_subtree_check:即使输出目录是一个子目录,nfs服务器也不检查其父目录的权限,这样可以提高效率; no_root_squash:来访的root用户保持root帐号权限; 3、重启nfs服务器 sudo /etc/init.d/nfs-kernel-server restart 6,网络环境搭建将UbuntuIP设为静态IP
主要映射IP编辑器中的网卡
7.1、将sd卡加载到windows下,识别SD卡之后,将SD卡格式化。(注意此时Ubuntu不要连接)。
7.2、将SD卡在Ubuntu中识别: 节点: /dev/sdb
/dev/mmcblk0 ---->sudo ./mkuboot.sh ----> sudo mv /dev/mmcblk0 /dev/sdb7.3、fengjunhui@ubuntu:~/uboot$ cd
sdfuse_q_2013/
制作uboot引导:
fengjunhui@ubuntu:~/uboot/sdfuse_q_2013$sudo ./mkuboot.sh [sudo] password for fengjunhui: Fuse FS4412 trustzone uboot file into SD card/dev/sdb reader is identified.u-boot-fs4412.自然的音响 fusing...1029+1 records in1029+1 records out527104 bytes (527 kB) copied, 3.49821s, 151 kB/su-boot-fs4412.自然的音响 image has been fused successfully.Eject SD card5.4、SecureCRT串口配置:putty
xshell
5.5、板子上电:
Checking Boot Mode ... EMMC4.41Net: dm9000Hit any key to stop autoboot: 0 FS4412 # (能进入到这里)7、uboot环境变量设置
输入printenv
set serverip 192.168.1.200 set ipaddr 192.168.1.100 set gatewayip 192.168.1.1 setenv bootcmd tftp 41000000 uImage;tftp 42000000 exynos4412-fs4412.dtb;bootm 41000000 - 42000000 setenv bootargs root=/dev/nfs nfsroot=192.168.1.200:/home/fengjunhui/source/rootfs rwconsole=ttySAC2,115200 init=/linuxrc ip=192.168.1.100 (C --- S ) Client Server setenv bootargs(传递给内核的启动参数) root=/dev/nfs(根文件挂载方式)192.168.1.200:/home/fengjunhui/source/rootfs rw console(制定打印信息的终端)=ttySAC2,115200(内核向串口输入信息) init=/linuxrc(指定内核运行第一个程序(缺省则从/s自然的音响/init启动)) ip=192.168.1.100(指定本机ip) (超级终端显示如下图) saveenv(保存到emmc中)一定要保存呐!!!查看环境变量信息:
FS4412 # prigatewayip=192.168.1.1baudrate=115200bootargs=root=/dev/nfsnfsroot=192.168.1.200:/home/fengjunhui/source/rootfs rw console=ttySAC2,115200init=/linuxrc ip=192.168.1.100bootcmd=tftp 41000000 uImage;tftp 42000000exynos4412-fs4412.dtb;bootm 41000000 - 42000000 bootdelay=3ethact=dm9000ethaddr=11:22:33:44:55:66gatewayip=192.168.1.1ipaddr=192.168.1.100netmask=255.255.255.0serverip=192.168.1.200stderr=serialstdin=serialstdout=serialEnvironment size: 474/16380 bytes测试引导镜像启动:
fengjunhui@ubuntu:~/tftpboot$ lsexamples.desktop exynos4412-fs4412.dtb uImage (保证无误)FS4412 # boot dm9000 i/o: 0x5000000,id: 0x90000a46 DM9000: running in 16 bit modeMAC: 11:22:33:44:55:66operating at 100M full duplex modeUsing dm9000 deviceTFTP from server 192.168.1.200; our IP address is 192.168.1.100Filename 'uImage'.Load address: 0x41000000Loading: T#################################################################380.9 KiB/sdoneBytes transferred = 3705424 (388a50 hex).......VFS: Mounted root (nfs filesystem) on device 0:10.[ 3.550000] devtmpfs:mounted[ 3.550000] Freeingunused kernel memory: 240K (c0677000 - c06b3000)[root@farsight ]# ok,成功进入文件系统。