|
在进行嵌入式开发时,需要经常修改代码,调试程序,如果还是使用通常的方法进行拷贝,那么将大大降低开发的效率,本文将介绍如何使用网络进行文件更新,TFTP用来网络加载内核,可用于频繁修改内核的调试场景,NFS用来加载网络文件系统,可用于频繁修改应用程序的调试场景。这将大幅提高开发效率,而且这也是一个非常优雅的工作流。
TFTP加载内核
TFTP即小心文件传输协议,可用于在U-boot网络加载内核启动。
配置TFTP服务
首先需要在PC主机上安装并配置TFTP服务器,本文以Ubuntu为了进行介绍。
1. 安装tftp服务端
[mw_shl_code=shell,true]$ apt-get install tftp-hpa tftpd-hpa[/mw_shl_code]
2. 创建tftp服务器工作目录
[mw_shl_code=shell,true]$ mkdir -p ~/tftpboot
$ chmod 777 ~/tftpboot[/mw_shl_code]
3. 配置tftp服务器
[mw_shl_code=shell,true]$ vim /etc/default/tftpd-hpa[/mw_shl_code]
修改TFTP文件夹和选项如下
[mw_shl_code=shell,true]TFTP_DIRECTORY="~/tftpboot"
TFTP_OPTIONS="-l -c -s"[/mw_shl_code]
4. 重启tftp服务
[mw_shl_code=shell,true]$ service tftpd-hpa restart[/mw_shl_code]
5. 拷贝内核镜像到tftpboot目录
[mw_shl_code=shell,true]$ cp uImage ~/tftpboot[/mw_shl_code]
配置U-boot下载内核
1. 配置并测试网络
在PC主机服务端IP
[mw_shl_code=shell,true]$ ifconfig eth0 192.168.1.111[/mw_shl_code]
在开发板U-boot中设置
[mw_shl_code=applescript,true]# 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[/mw_shl_code]
2. 下载内核到内存并引导
[mw_shl_code=shell,true]# tftp 0x80200000 uImage;bootm 0x80200000[/mw_shl_code]
NFS根文件系统挂载
NFS即网络文件系统,挂载NFS有两种:
第一种方式是使用使用开发板存储设备中的文件系统启动,然后将网络上的一个NFS文件夹挂载到开发板的文件系统上。
第二种方式是将网络上一个完整的根文件系统挂载到开发板上,相当于可以无需开发板的存储设备,完全通过网络加载系统。
第一种方式比较简单,这里主要介绍的是第二种。
安装并配置NFS服务
1. 在PC主机上安装nfs服务端程序
[mw_shl_code=shell,true]$ apt-get install nfs-kernel-server[/mw_shl_code]
2. 添加文件夹权限,编辑网络访问权限
[mw_shl_code=shell,true]$ vim /etc/exports[/mw_shl_code]
3. 准备根文件系统目录
将一个现成的个文件系统解压到主机目录,例如~/Filesystem/myrootfs,可以使用我们的提供或者自己定制。
4. 添加目录
[mw_shl_code=shell,true]$ vim /etc/exports[/mw_shl_code]
将目录添加到NFS服务程序,在exports文件中加入如下内容:
[mw_shl_code=shell,true]~/Filesystem/myrootfs *(rw,subtree_check,no_root_squash,no_all_squash,sync)[/mw_shl_code]
5. 设置目录访问权限
[mw_shl_code=applescript,true]$ chmod 777 -R ~/Filesystem/myrootfs/*[/mw_shl_code]
6. 修改设置nfs,绑定端口
[mw_shl_code=shell,true]$ vim /etc/default/nfs-kernel-server[/mw_shl_code]
做如下修改:
[mw_shl_code=shell,true]#RPCMOUNTDOPTS=--manage-gids
RPCMOUNTDOPTS="-p 13100"[/mw_shl_code]
7. 重启NFS服务
[mw_shl_code=shell,true]$ service nfs-kernel-server restart[/mw_shl_code]
8. 在本机测试NFS服务
[mw_shl_code=shell,true]$ mount -t nfs 127.0.0.1:~/Filesystem/myrootfs/* /mnt[/mw_shl_code]
在U-boot中设置从哪里加载文件系统
[mw_shl_code=shell,true]# 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[/mw_shl_code]
|
|