物联网项目实战一(Linux环境搭建、物联网仓储项目实战安排)

Linux环境搭建

0、基本环境概述:

Gcc编译器的环境       : gcc4.6.4

VMware® Workstation   :ubuntu12.04 或ubuntu10.04

Uboot版本  :uboot2013.01

内核版本      :Kernel3.14

nfs     :NFS(网络文件系统)为开发板和linux主机之间的通讯

tftp     :tftp服务器用来实现开发板和linux主机之间文件的下载和上传

硬件平台:

Cortex-A9(fs4412)、ZigBee、M0,电脑主机

软件环境:

Keil、Ubuntu  

代码管理工具等

超级终端、(Putty、xshell) SecureCRT、Git、 Source Insight 3.5:

/*******************************************************************/

蓝牙环境搭建

WiFi环境搭建

ZigBee环境搭建

/*******************************************************************/

1、一些必要的库的安装: 

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、交叉编译环境搭建

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

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

 

3、tftp环境搭建

tftp环境搭建

tftp   :tftp服务器用来实现开发板和linux主机之间文件的下载和上传

3.1、检查tftp服务器是否存在:  dpkg -s tftpd-hpa

3.2、未安装:sudo apt-get install   tftpd-hpa    tftp-hpa

3.3、 修改文件,并开启tftp服务  sudo vi   /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

#tftp服务器路径

TFTP_DIRECTORY="/home/fengjunhui/tftpboot" 

#tftp文件服务器网管和端口号

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s"

 3.4、创建ftpboot文件目录,并重启tftp服务器

        mkdir   /home/fengjunhui/tftpboot

   chmod   a+w  tftpboot   // 注意一定要修改权限

  fengjunhui@ubuntu:~/source$ sudo service tftpd-hpa restart

tftpd-hpa stop/waiting

tftpd-hpa start/running, process 32649

TTTTTT......    sudo service tftpd-hpa restart   (重启tftp服务器)

 

 3.5、本地回环测试

            tftp   127.0.0.1

            tftp>get main.c //下载文件从TFTP目录下

            tftp>put while.c //上传文件从TFTP目录下

            tftp>q

            查看当前文件目录,可以看到从TFTP文件目录中下载的main.c文件,打开TFTP文件,可以看到while.c文件

4、nfs环境搭建

        4.1、将 uImage拷贝到/home/fengjunhui/tftpboot目录下(用来存放设备树和镜像)

        4.2、将 rootfs.tar.xz拷贝到/home/fengjunhui/source(根文件系统)下并解压

        4.3、将 exynos4412-fs4412.dtb拷贝到/home/fengjunhui/tftpboot目录下

        4.4、 修改虚拟机nfs配置文件/etc/exports,添加如下内容并重启nfs服务

sudo vi /etc/exports

/home/fengjunhui/source/rootfs *(rw,sync,no_subtree_check,no_root_squash)

        4.5、重新启动nfs服务(网线,网口)

            sudo apt-get update    //如果无法连接,就更新目录

            sudo apt-get install nfs-kernel-server          //如果不存在,就在线下载并安装

            sudo /etc/init.d/nfs-kernel-server restart      //重启网络服务  

fengjunhui@ubuntu:~/source$ sudo /etc/init.d/nfs-kernel-server restart

 * Stopping NFS kernel daemon                                        [ OK ]

 * Unexporting directories for NFS kernel daemon...                        [ OK ]

 * Exporting directories for NFS kernel daemon...                          [ OK ]

 * Starting NFS kernel daemon

5、 网络环境搭建

图形化配置静态IP

如果这种静态IP不会配置的话,参考吴老师的网络配置教程(或者百度)

http://www.makeru.com.cn/1010

6、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

 

5.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.49821 s, 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 #  (能进入到这里)

6、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了。

物联网仓储项目概要图

物联网仓储项目的阶段目标

第一天

能根据课程独立的建立属于自己的知识体系框架

第二天

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

第三天

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

第四天

能对物联网仓储的软硬件有一个较好的理解,并自己制定通信的结构体

阶段性提交视频内容:

视频录制:简述项目的分层体系框架,简述功能的分析过程,简述通信的结构体制定过程,简述要实现的物联网仓储项目

视频格式提交要求:

格式: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

第十一天

完成m0传感器数据采集

第十二天

完成A9控制m0硬件

阶段性提交视频内容:

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

视频格式提交要求:

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

第十三天

完成传感器真实数据上传

第十四天

完成网页控制硬件

阶段性提交视频内容:

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

视频格式提交要求:

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

第十五天

提交doc文档: 独立完成物联网仓储项目的总结,可以从框架搭建、通信结构体设计、进程间通信、线程间通信、项目分工、项目联调、项目收获等部分来阐述,注重总结提升的过程。

猜你喜欢

转载自blog.csdn.net/weixin_39148042/article/details/82190894