linux编程安防监控项目

一、项目概要图

 二、Linux环境搭建


2.1基本环境概述:

Gcc编译器的环境 : gcc4.6.4 
Ubuntu版本 :ubuntu14.04 或ubuntu16.04 
Uboot版本 :uboot2013.01 
内核版本 :Kernel-3.14.0 
nfs :NFS(网络文件系统)为开发板和linux主机之间的通讯 
tftp :tftp服务器用来实现开发板和linux主机之间文件的下载和上传 
硬件平台 :Cortex-A9(fs4412)、ZigBee,STM32,电脑主机(x86 x64) 
软件环境: Keil、Ubuntu、 
代码管理工具等 超级终端、(Putty、xshell) SecureCRT、Git、 Source Insight 3.5、4.0: /*******************************************************************/ 
蓝牙环境搭建 WiFi环境搭建 ZigBee环境搭建 /*******************************************************************/

2.2一些必要的库的安装:

sudo apt-get install gcc g++ binutils patch bzip2 flex bison make autoconf gettext texinfo unzip sharutils ncurses-term zlib1g-dev libncurses5-dev gawk subversion libz-dev (整个这一行所需要安装的包必须执行安装) 
sudo apt-get update 更新源:当包安装不成功的时候可以尝试执行 
sudo apt-get -f install 更新依赖:当更新源之后还是安装不成功时可以尝试 
sudo apt-get install 包名

2.3交叉编译环境搭建

2.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

2.3.2环境变量的添加

修改文件/etc/bash.bashrc添加如下内容
sudo vi /etc/bash.bashrc export PATH=$PATH:/home/fengjunhui/toolchain/gcc-4.6.4/bin 
2.3、重启配置文件 $ source /etc/bash.bashrc

2.3.3查看环境变量:

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

2.3.4工具链的测试

$ 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-NG hg+default-2685dfa9de14 - tc0002)

2.3.5扩展:

Ubuntu14.04 Ubuntu16.04. 64位系统的安装需要先安装如下两个包: 
/bash/... path/arm-none-linux-gnueabi-gcc not fount 
sudo apt-get install lib32z1 lib32ncurses5

2.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目录下的配置文件

2.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"     

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

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

2.4.3 重启tftp服务器

linux@ubuntu:~$ sudo service tftpd-hpa restart
		tftpd-hpa stop/waiting
		tftpd-hpa start/running, process 6439

		板子启动加载内核的时候经常遇到TTTTTTT..... 
			判断:网络不通
				ping不通,网络配置有关
				tftp服务器没有启动

2.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文件。

2.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选项,允许上传文件

2.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  

2.6 网络环境搭建

图形化配置静态IP,(建议采用这种方式进行学习)

无线局域网适配器 无线网络连接: (提供大家上网)
   连接特定的 DNS 后缀 . . . . . . . :
   本地链接 IPv6 地址. . . . . . . . : fe80::e937:86f:d0a6:a442%11
   IPv4 地址 . . . . . . . . . . . . : 192.168.31.137
   子网掩码  . . . . . . . . . . . . : 255.255.255.0
   默认网关. . . . . . . . . . . . . : 192.168.31.1

 

 2.7 Uboot引导盘制作

(注:uboot的移植过程不作为项目中的一个重点,只要能加载内核就好。)
5.1、将sd卡加载到windows下,识别SD卡之后,将SD卡格式化。(注意此时Ubuntu不要连接)。
5.2、将SD卡在Ubuntu中识别:  节点: /dev/sdb 

 

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

 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.49821 s, 151 kB/s
u-boot-fs4412.bin image has been fused successfully.
Eject SD card

 SecureCRT串口配置:putty  xshell

 

 

5.5、板子上电:
Checking Boot Mode ... EMMC4.41
Net:   dm9000
Hit any key to stop autoboot:  0 
FS4412 #  (能进入到这里)

 2.8 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,成功进入文件系统。

好,到这里咱们基本的环境配置就OK了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值