当前位置:   article > 正文

安防监控项目记录1——进度安排与环境搭建_嵌入式安防监控项目实战

嵌入式安防监控项目实战

一,项目概要图

在这里插入图片描述
在这里插入图片描述

二,进度与时间安排

安防监控项目的阶段目标

第一天

回顾建立知识体系框架

第二天

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

第三天

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

第四天

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

阶段性提交视频内容:

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

视频格式提交要求:

格式: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,环境概述

在这里插入图片描述

2,库安装

在这里插入图片描述

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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3.2、环境变量的添加

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

sudo vi  /etc/bash.bashrc

export
 PATH=$PATH:/home/fengjunhui/toolchain/gcc-4.6.4/bin
  • 1
  • 2
  • 3
  • 4
  • 5

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
    • 1
    • 2

    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) 
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

    /bash/...  path/arm-none-linux-gnueabi-gcc  not fount
    
    sudo
    
    • 1
    • 2
    • 3

    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目录下的配置文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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"     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    4.2、创建tftp服务器所在的路径:

       mkdir  /home/linux/tftpboot -p    //和配置文件的名字和路径必须保持一致
    
       chmod 777  tftpboot               //修改tftp服务器文件夹的权限
    
    • 1
    • 2
    • 3

    4.3、重启tftp服务器:

       linux@ubuntu:~$ sudo service tftpd-hpa restart tftpd-hpa 
       stop/waiting tftpd-hpa 
       start/running, process 6439
    
    
    
       板子启动加载内核的时候经常遇到TTTTTTT..... 
    
           判断:网络不通
    
              ping不通,网络配置有关
    
              tftp服务器没有启动
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    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文件。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    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选项,允许上传文件
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    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又是什么? 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46

    一个路径*四个参数

       其中:
    
       /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  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    6,网络环境搭建

    将UbuntuIP设为静态IP
    主要映射IP编辑器中的网卡

    7、Uboot引导盘制作

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

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

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

    /dev/mmcblk0  ---->sudo ./mkuboot.sh ---->
     sudo mv  /dev/mmcblk0  /dev/sdb
    
    • 1
    • 2

    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   
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    制作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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    5.4、SecureCRT串口配置:putty
    xshell

    5.5、板子上电:

    Checking Boot Mode ... EMMC4.41
    
    Net:  dm9000
    
    Hit any key to stop autoboot:  0 
    
    FS4412 #  (能进入到这里)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    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中)一定要保存呐!!!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    查看环境变量信息:

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    测试引导镜像启动:

    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,成功进入文件系统。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/280197
    推荐阅读
    相关标签
      

    闽ICP备14008679号