oneal.tang 发表于 2015-5-4 22:53:34

MYD-AM335X 网络加载(TFTP,NFS)

在进行嵌入式开发时,需要经常修改代码,调试程序,如果还是使用通常的方法进行拷贝,那么将大大降低开发的效率,本文将介绍如何使用网络进行文件更新,TFTP用来网络加载内核,可用于频繁修改内核的调试场景,NFS用来加载网络文件系统,可用于频繁修改应用程序的调试场景。这将大幅提高开发效率,而且这也是一个非常优雅的工作流。
TFTP加载内核
TFTP即小心文件传输协议,可用于在U-boot网络加载内核启动。
配置TFTP服务
首先需要在PC主机上安装并配置TFTP服务器,本文以Ubuntu为了进行介绍。
1. 安装tftp服务端
$ apt-get install tftp-hpa tftpd-hpa
2. 创建tftp服务器工作目录
$ mkdir -p ~/tftpboot
$ chmod 777 ~/tftpboot
3. 配置tftp服务器
$ vim /etc/default/tftpd-hpa
修改TFTP文件夹和选项如下
TFTP_DIRECTORY="~/tftpboot"
TFTP_OPTIONS="-l -c -s"
4. 重启tftp服务
$ service tftpd-hpa restart
5. 拷贝内核镜像到tftpboot目录
$ cp uImage ~/tftpboot
配置U-boot下载内核
1. 配置并测试网络
在PC主机服务端IP
$ ifconfig eth0 192.168.1.111
在开发板U-boot中设置
# set ethaddr 88:33:14:f6:c0:d4
# set ipaddr 192.168.1.222
# setenv serverip 192.168.1.111
# saveenv
# ping 192.168.1.101
2. 下载内核到内存并引导
# tftp 0x80200000 uImage;bootm 0x80200000


NFS根文件系统挂载
NFS即网络文件系统,挂载NFS有两种:
第一种方式是使用使用开发板存储设备中的文件系统启动,然后将网络上的一个NFS文件夹挂载到开发板的文件系统上。
第二种方式是将网络上一个完整的根文件系统挂载到开发板上,相当于可以无需开发板的存储设备,完全通过网络加载系统。
第一种方式比较简单,这里主要介绍的是第二种。
安装并配置NFS服务
1. 在PC主机上安装nfs服务端程序
$ apt-get install nfs-kernel-server

2. 添加文件夹权限,编辑网络访问权限
$ vim /etc/exports
3. 准备根文件系统目录
将一个现成的个文件系统解压到主机目录,例如~/Filesystem/myrootfs,可以使用我们的提供或者自己定制。
4. 添加目录
$ vim /etc/exports
将目录添加到NFS服务程序,在exports文件中加入如下内容:
~/Filesystem/myrootfs *(rw,subtree_check,no_root_squash,no_all_squash,sync)
5. 设置目录访问权限
$ chmod 777 -R ~/Filesystem/myrootfs/*
6. 修改设置nfs,绑定端口
$ vim /etc/default/nfs-kernel-server
做如下修改:
#RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="-p 13100"
7. 重启NFS服务
$ service nfs-kernel-server restart
8. 在本机测试NFS服务
$ mount -t nfs 127.0.0.1:~/Filesystem/myrootfs/* /mnt
在U-boot中设置从哪里加载文件系统
# setenv ipaddr 192.168.1.111;setenv serverip 192.168.1.222;tftp 0x80200000 uImage
# setenv bootargs console=ttyO0,115200n8 root=/dev/nfs nfsroot=192.168.1.104:~/Filesystem/myrootfs,nolock rw ip=dhcp
# bootm 0x80200000



页: [1]
查看完整版本: MYD-AM335X 网络加载(TFTP,NFS)