1.软硬件要求
GCC 编译器的环境 : gcc4.6.4
ubuntu版本:ubuntu 16.04
uboot版本:uboot2013.01
NFS : NFS(网络文件系统)为开发板和linux主机之间的通讯。
TFTP : TFTP服务器用来实现开发板和linux主机之间的下载和上传
硬件要求:Cortex-A9(fs4412)、Zigbee、电脑主机
软件环境:ubuntu、
2、一些必要的库的安装
*******前提是ubuntu能够正常上网**********
sudo apt-get update //更新源
sudo apt-get -f install //更新依赖
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 //安装必要的包
*******ubuntu若是64位系统再继续安装这两个包**********
sudo apt-get install lib32z1 lib32ncurses5 //64 位系统的安装需要先安装如下两个包:
sudo apt-get install 包名 //安装包用的格式
3、交叉编译环境搭建
3.1 解压工具链压缩
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
打开bash.bashrc文件后:
在最后一行添加 export PATH=$PATH:/home/fengjunhui/toolchain/gcc-4.6.4/bin //根据自己的gcc-4.6.4路径添加
保存退出
source /etc/bash.bashrc //重启配置文件
3.3 查看环境变量
echo $PATH
出现 /home/linux/bin:/home/linux/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
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)
4、u-boot参数设
*******确认开发板能够SD卡启动**********
串口终端软件界面下,给开发板加电,刚加电时有几秒的倒计时,在倒计时时间内,敲空格键可以进入u-boot命令行
在u-boot命令行(SecureCRT)下一次执行如下u-boot命令:
fs4412# setenv serverip 192.168.9.16 #设置utuntu(服务端)端的ip地址
fs4412# setenv ipaddr 192.168.9.99 # 设置开发板端的IP地址 保证与服务端在同一个网段
fs4412# setenv gatewayip 192.168.9.1 # 保证与服务端在同一个网段
fs4412# setenv bootcmd tftp 41000000 uImage\;tftp 42000000 exynos4412-fs4412.dtb\;bootm 41000000 - 42000000
fs4412# setenv bootargs root=/dev/nfs nfsroot=192.168.9.16:/opt/4412/rootfs rw console=ttySAC2,115200 init=/linuxrc ip=192.168.9.99
fs4412# saveenv
*******只需要把ubuntu服务器IP与uboot服务器IP一致,其余IP网关一样。*******
5、ubuntu网络配置
1.设置VMwere为桥接模式(USB连接)
2.进入ubuntu 网络设置为 Disconnect(断开)
sudo ifconfig eth0 192.168.9.16 //设置ubuntu服务器IP (注意:可能eth0可能找不到,通过ifconfig查询)
ifconfig //查看服务器IP
6、TFTP环境搭建
6.1 检查 tftp 服务器是否存在:
dpkg -s tftpd-hpa
6.2 若未安装
sudo apt-get install tftpd-hpa tftp-hpa
通过安装时的打印信息,来确定在 etc 目录下的配置文件
6.3 修改配置文件
sudo vim /etc/default/tftpd-hpa
出现
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp" //用户名
TFTP_DIRECTORY="/tftpboot" //你的 tftp 服务器所在的路径
TFTP_ADDRESS=":69" //tftp 服务器的网关和端口号
TFTP_OPTIONS="-l -c -s" //tftp 文件服务器的可供选择的权限, get file\ put file \ list file
6.4 创建 tftp 服务器所在的路径:
cd / //进入根目录 在根目录下创建
sudo mkdir tftpboot //和配置文件的名字和路径必须保持一致
sudo chmod 777 tftpboot //修改 tftp 服务器文件夹的权限
6.5 ubuntu下拷贝uImage、exynos4412-fs4412.dtb两个文件到/tftpboot目录下
将 uImage exynos4412-fs4412.dtb 拷贝到 tftpboot 下
6.6 重启 tftp 服务器:
sudo service tftpd-hpa restart
出现 (高版本可能不出现以下信息)
tftpd-hpa stop/waiting
tftpd-hpa start/running, process 6439
测试tftp
root@Linux:/# tftp localhost
tftp> get zImage
tftp> q
6.7 启动开发板加载内核
等待内核加载完成 并能够控制ubuntu
7、nfs 环境搭建
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.g
在这个目录下有这两个文件
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)
3、重启 nfs 服务器
sudo /etc/init.d/nfs-kernel-server restart
出现 [OK] 字样表示完成