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