安防监控项目记录1——进度安排与环境搭建

安防监控项目记录1——准备工作

  • 一,项目概要图
  • 二,进度与时间安排
  • 三,环境搭建
    • 1,环境概述
    • 2,库安装
    • 3,交叉编译环境搭建
    • 4,tftp安装与测试
    • 5,NFS安装测试
    • 6,网络环境搭建
    • 7、Uboot引导盘制作

一,项目概要图

安防监控项目记录1——进度安排与环境搭建_第1张图片
安防监控项目记录1——进度安排与环境搭建_第2张图片

二,进度与时间安排

安防监控项目的阶段目标

第一天

回顾建立知识体系框架

第二天

能理解项目的实战安排,并初步搭建起项目所需的嵌入式环境

第三天

能对项目的分层体系能力和功能框架有自己的分析能力,并培养这种意识

第四天

能对安防监控的软硬件有一个较好的理解,并自己制定通信的结构体

阶段性提交视频内容:

视频录制:项目的分层体系框架,功能的分析过程,通信的结构体制定过程,简述要实现的安防监控项目()

视频格式提交要求:

格式:mp4格式 名字要求:阶段1-你的名字-视频的主题-年月日.mp4

示例: 阶段1-张三丰-day14-分层体系和功能分析-20170804.mp4

第五天

完成主框架的搭建

第六天

完成boa服务器的移植

阶段性提交视频内容:

视频录制:简述搭建的安防监控项目框架、完成boa服务器移植,演示html和cgi的跳转

视频格式提交要求:

示例: 阶段2-乔峰-day56-仓储项目框架搭建和boa移植-20170806.mp4

第七天

完成cgi、html的移植

第八天

完成web点灯

阶段性提交视频内容:

视频录制:完成cgi、html部分的移植,网页上真实控制a9的led灯的演示视频

视频格式提交要求:

示例: 阶段3-张无忌-day78-web点灯-20170808.mp4

第九天

完成将模拟的数据上传到web网页

第十天

完成视频流服务器的移植

阶段性提交视频内容:

视频录制:通过视频流服务器来拍摄完成模拟数据上传到网页的演示视频

视频格式提交要求:

示例: 阶段4-张无忌-day910-视频流服务器拍摄模拟数据上传网页-20170810.mp4

第十一天

完成A9和ZigBee部分的传感器数据采集

第十二天

完成A9控制ZigBee硬件

阶段性提交视频内容:

视频录制:完成A9和ZigBee部分的传感器数据的采集,同时将ZigBee部分的的数据传输到串口上和A9端、同时从串口端和A9端控制ZigBee上的硬件

视频格式提交要求:

示例: 阶段5-令狐冲-day1112-ZigBee->A9->ZigBee-20170812.mp4

第十三天

完成传感器真实数据上传(包括A9和ZigBee部分)

第十四天

完成网页控制硬件(包括A9和ZigBee部分)

阶段性提交视频内容:

视频录制:完成真实数据上传到网页,并通过网页控制A9和ZigBee上硬件

视频格式提交要求:

示例: 阶段6-令狐冲-day1314数据上传网页网页控制硬件-20170814.mp4

第十五天

完成GPRS短信或电话报警功能,并演示直接发送短信给用户
示例: 阶段7-令狐冲-day15gprs短信或电话报警功能的实现-20170815.mp4

第十六天

提交doc文档: 独立完成安防监控项目的总结,可以从框架搭建、通信结构体设计、进程间通信、线程间通信、项目分工、项目联调、项目收获等部分来阐述,注重总结提升的过程。
示例: 阶段8-令狐冲-day16项目总结文档-20170816.doc(同时附视频讲解)

三,环境搭建

1,环境概述

安防监控项目记录1——进度安排与环境搭建_第3张图片

2,库安装

安防监控项目记录1——进度安排与环境搭建_第4张图片

3,交叉编译环境搭建

3.1、解压工具链压缩包 (http://gcc.gnu.org/ 下载地址)

$  cd  ~

$ mkdir toolchain

$ cd  toolchain

将下载的交叉编译工具/gcc-4.6.4.tar.xz拷贝到toolchain目录下并解压

$ tar  xvf
 gcc-4.6.4.tar.xz  
gcc-4.4.6.tar.xz  gcc-4.5.1.tar.xz

3.2、环境变量的添加

修改文件/etc/bash.bashrc添加如下内容 

sudo vi  /etc/bash.bashrc

export
 PATH=$PATH:/home/fengjunhui/toolchain/gcc-4.6.4/bin

3.3、重启配置文件

$ source  /etc/bash.bashrc

3.4、查看环境变量:

 fengjunhui@ubuntu:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/fengjunhui:/home/fengjunhui/toolchain/gcc-4.6.4/bin

3.5、工具链的测试

$ arm-none-linux-gnueabi-gcc  –v

Using built-in specs.

COLLECT_GCC=arm-none-linux-gnueabi-gcc

最后两行:

Thread model: posix

gcc version 4.6.4 (crosstool-NGhg+default-2685dfa9de14 -tc0002) 

扩展:
Ubuntu14.04 Ubuntu16.04. 64位系统的安装需要先安装如下两个包:

/bash/...  path/arm-none-linux-gnueabi-gcc  not fount

sudo

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-hpa


1.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 file

Transfertimed out.

原因: tftpd服务没有启动,重启tftp服务器:sudo service tftpd-hpa restart 

tftp>get file

Errorcode 2: Only absolute filenames
allowed

原因:在/etc/xinetd.d/tftpd中设置的server_args为/etc/default/tftpd-hpa

tftp>put file

Errorcode 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 install
nfs-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、Uboot引导盘制作

(注:uboot的移植过程不作为项目中的一个重点,只要能加载内核就好。)

7.1、将sd卡加载到windows下,识别SD卡之后,将SD卡格式化。(注意此时Ubuntu不要连接)。

7.2、将SD卡在Ubuntu中识别: 节点: /dev/sdb

/dev/mmcblk0  ---->sudo ./mkuboot.sh ---->
 sudo mv  /dev/mmcblk0  /dev/sdb

7.3、fengjunhui@ubuntu:~/uboot$ cd
sdfuse_q_2013/

fengjunhui@ubuntu:~/uboot/sdfuse_q_2013$ ls

add_padding    add_sign.c  Makefile  
sd_fusing_exynos4x12.sh
add_padding.c  chksum     
mkuboot.sh     u-boot-fs4412.bin
add_sign       chksum.c   

制作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.bin fusing...

1029+1 records in

1029+1 records out

527104 bytes (527 kB) copied, 3.49821s, 151 kB/s

u-boot-fs4412.bin image has been fused successfully.

Eject SD card

5.4、SecureCRT串口配置:putty
xshell

5.5、板子上电:

Checking Boot Mode ... EMMC4.41

Net:  dm9000

Hit 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 rw
console=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(指定内核运行第一个程序(缺省则从/sbin/init启动))  ip=192.168.1.100(指定本机ip) (超级终端显示如下图)

    saveenv(保存到emmc中)一定要保存呐!!!

查看环境变量信息:

FS4412 # pri

gatewayip=192.168.1.1

baudrate=115200

bootargs=root=/dev/nfs
nfsroot=192.168.1.200:/home/fengjunhui/source/rootfs rw 		console=ttySAC2,115200
init=/linuxrc ip=192.168.1.100

bootcmd=tftp 41000000 uImage;tftp 42000000
exynos4412-fs4412.dtb;bootm 41000000 - 42000000 bootdelay=3
ethact=dm9000
ethaddr=11:22:33:44:55:66
gatewayip=192.168.1.1
ipaddr=192.168.1.100
netmask=255.255.255.0
serverip=192.168.1.200

stderr=serial

stdin=serial

stdout=serial



Environment size: 474/16380 bytes

测试引导镜像启动:

fengjunhui@ubuntu:~/tftpboot$ ls

examples.desktop 
exynos4412-fs4412.dtb  uImage  (保证无误)

FS4412 # boot 

dm9000 i/o: 0x5000000,
id: 0x90000a46 

DM9000: running in 16 bit mode

MAC: 11:22:33:44:55:66

operating at 100M full duplex mode

Using dm9000 device

TFTP from server 192.168.1.200; our IP address is 192.168.1.100

Filename 'uImage'.

Load address: 0x41000000

Loading: T
#################################################################

380.9 KiB/s

done

Bytes transferred = 3705424 (388a50 hex)

.......

VFS: Mounted root (nfs filesystem) on device 0:10.

[    3.550000] devtmpfs:
mounted

[    3.550000] Freeing
unused kernel memory: 240K (c0677000 - c06b3000)

[root@farsight ]#       ok,成功进入文件系统。

你可能感兴趣的:(项目记录一安防监控)