1| 开发环境搭建
一、FTP(File Transfer Protocol)
开启 linux下的 FTP 服务
sudo apt-get install vsftpd
sudo vi /etc/vsftpd.conf
打开 vsftpd.conf 文件以后找到如下两行:
local_enable=YES
write_enable=YES
确保上面两行前面没有“#”,有的话就取消掉
保存退出后,重启服务
sudo /etc/init.d/vsftpd restart
windows 下连接FTP:
FTP软件中填写对应终端的IP 输入用户名和密码即可
二、NFS(Network File System)
NFS 服务端
sudo apt-get install nfs-kernel-server rpcbind
安装完成后创建一个nfs文件夹,以后需要通过网络用的文件都放这里.xxxx/nfs
之后配置文件/etc/exports:
sudo vi /etc/exports
在文件末尾添加如下所示内容:
xxxx/nfs *(rw,sync,no_root_squash)
重启 NFS 服务
sudo /etc/init.d/nfs-kernel-server restart
NFS客户端
安装客户端应用:
apt-get install -y nfs-common
用mkdir命令创建一个文件夹xxx/nfs-mount。
将NFS服务器的xxx/nfs 目录挂载到NFS客户端的xxx/nfs-mount 目录,执行以下命令:
mount 192.168.119.128:xxx/nfs xxx/nfs-mount
连接失败情况解决:
如果出现以下情况
ARM-Linux NFS挂载不上,是由于高版本的NFS服务,默认不支持nfs v2的连接,而uboot中nfs服务是 V2版本的,所以需要修改/etc/default/nfs-kernel-server
文件以支持v2 nfs。
修改完内容如下:
# Number of servers to start up
#RPCNFSDCOUNT=8
RPCNFSDCOUNT='-V 2 8'
# Runtime priority of server (see nice(1))
RPCNFSDPRIORITY=0
# Options for rpc.mountd.
# If you have a port-based firewall, you might want to set up
# a fixed port here using the --port option. For more information,
# see rpc.mountd(8) or http://wiki.debian.org/SecuringNFS
# To disable NFSv4 on the server, specify '--no-nfs-version 4' here
#RPCMOUNTDOPTS="--manage-gids"
RPCMOUNTDOPTS="-V 2 --manage-gids"
# Do you want to start the svcgssd daemon? It is only required for Kerberos
# exports. Valid alternatives are "yes" and "no"; the default is "no".
NEED_SVCGSSD=""
# Options for rpc.svcgssd.
RPCSVCGSSDOPTS="--nfs-version 2,3,4 --debug --syslog"
三、SSH安全外壳协议 (Secure Shell)
SSH 服务开启
安装 ssh 服务
sudo apt-get install openssh-server
ssh 的配置文件为/etc/ssh/sshd_config,使用默认配置即可
四、交叉编译工具链
编译 ARM 架构的代码,我们需要一个在 X86 架构的 PC 上运行,可以编译 ARM 架构代码的 GCC 编译器,这个编译器就叫做交叉编译器.
Linaro GCC 编译工具链(编译器)安装
下载地址:
https://releases.linaro.org/components/toolchain/binaries/latest-7/arm-linux-gnueabihf/
有很多种 GCC 交叉编译工具链,因为我们所使用的 I.MX6U-ALPHA 开发板是一个 Cortex-A7 内核的开发板,因此选择 arm-linux-gnueabihf,点击后面的“Binaries”进入可执行文件下载
创建目录:/usr/local/arm:
sudo mkdir /usr/local/arm
将下载的文件放至该目录进行解压
sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz
解压完成以后会生成一个名为“gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf”的文件夹,这个文件夹里面就是我们的交叉编译工具链.
修改环境变量,使用 VI 打开/etc/profile 文件,命令如下:
sudo vi /etc/profile
打开/etc/profile 以后,在最后面输入如下所示内容:
export PATH=$PATH:/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin
重启 Ubuntu 系统,交叉编译工具链(编译器)就安装成功了
查看版本号
arm-linux-gnueabihf-gcc -v
如果交叉编译器安装正确的话就会显示版本号
五、TFTP服务
tftp 命令的作用和 nfs 命令一样,都是用于通过网络下载东西到 DRAM 中,只是 tftp 命令使用的 TFTP 协议,Ubuntu 主机作为 TFTP 服务器。因此需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa,命令如下:
sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd
和 NFS 一样,TFTP 也需要一个文件夹来存放文件,在用户目录下新建一个目录,命令如下:
mkdir /home/firestaradmin/linux/tftpboot
chmod 777 /home/firestaradmin/linux/tftpboot
这 样 我 就 在 我 的 电 脑 上 创 建 了 一 个 名 为 tftpboot 的目录 ( 文 件 夹 ),路径为**/home/firestaradmin/linux/tftpboot**
注意!我们要给 tftpboot 文件夹权限,否则的话 uboot 不能从tftpboot 文件夹里面下载文件。最后配置 tftp,安装完成以后新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,然后在里面输入如下内容:
server tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /home/firestaradmin/linux/tftpboot/
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
完了以后启动 tftp 服务sudo service tftpd-hpa start
之后打开**/etc/default/tftpd-hpa** 文件,将其修改为如下所示内容:
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/firestaradmin/linux/tftpboot"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l -c -s"
TFTP_DIRECTORY 就是我们上面创建的 tftp 文件夹目录,以后我们就将所有需要通过TFTP 传输的文件都放到这个文件夹里面,并且要给予这些文件相应的权限。
最后输入如下命令, 重启 tftp 服务器:sudo service tftpd-hpa restart
tftp 服务器已经搭建好了,接下来就是使用了。将 zImage 镜像文件拷贝到 tftpboot 文件夹中,并且给予 zImage 相应的权限,命令如下:
cp zImage /home/firestaradmin/linux/tftpboot/
cd /home/firestaradmin/linux/tftpboot/
chmod 777 zImage
万事俱备,只剩验证了,uboot 中的 tftp 命令格式如下:tftpboot [loadAddress] [[hostIPaddr:]bootfilename]
看起来和 nfs 命令格式一样的,loadAddress 是文件在 DRAM 中的存放地址,**[[hostIPaddr:]bootfilename]**是要从 Ubuntu 中下载的文件。
但是和 nfs 命令的区别在于,tftp 命令不需要输入文件在 Ubuntu 中的完整路径,只需要输入文件名即可。比如我们现在将 tftpboot 文件夹里面的 zImage 文件下载到开发板 DRAM 的 0X80800000 地址处,命令如下:tftp 80800000 zImage
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!