使用网络烧写开发板及nfs网络文件系统搭建

烧录

学习文件系统的构建时,需要烧写自己构建的文件系统来验证是否能被成功挂载,这就需要烧录工具。之前裸机时使用的烧录工具是linux版本的oflash,但该工具只能烧录裸机程序,不适用于kernel,rootfs等烧录,故转而寻找其他代替工具。首先试过使用linux班的dnw,但pc机一直无法检测到开发板usb设备,因此只能选择通过网络来烧录。

开发环境

开发板:s3c2440
烧录工具:tftp + uboot
pc系统:ubuntu 14.04

环境搭建

  • 开发板
    支持tftp功能的uboot:使用tftp需要开发板uboot支持tftp功能,该功能在uboot编译时需要加入。
  • pc端
    tftpd-hpa:tftp server端,用来响应uboot的文件下载请求
	sudo apt-get install tftpd-hpa

安装完成后需进行配置

	sudo vi /etc/default/tftpd-hpa

配置如下

	TFTP_USERNAME="tftp" //默认
	TFTP_DIRECTORY="/home/jiang/workspace/tftproot" //创建的目录作为文件下载目录
	TFTP_ADDRESS="0.0.0.0:69"
	TFTP_OPTIONS="-l -c -s" //权限

完成配置后需更改tftproot目录的权限

	sudo chmod 777 /tftpboot

重启tftp服务

	sudo service tftpd-hpa restart

烧写

将需烧写的文件放到tftproot/下,再赋予权限(否则会因权限不足导致无法下载)便进行下载。
步骤如下:

  • 进入uboot控制台,设置开发板和pc机ip(二者需在同一网段)
	set ipaddr 192.168.0.110 //开发板ip
	set serverip 192.168.0.100 //pc机
	save
  • 检查开发板与pc网络是否通畅,在uboot界面
	ping 192.168.0.100

正常时如图出现"is alive"说明网络通畅,若出现"is not alive"实名二者网络不同,需检查是否ip设置有误

  • 下载文件rootfs.yaffs2
	tftp 0x30000000 rootfs.yaffs2

如图:
下载成功如图由图可看出下载大小为8783808 byte

  • 擦除对应分区
	nand erase root
	或如下格式:
	nand erase $offset $size //指定分区偏移offset和分区大小size
  • 烧录
	nand write.yaffs 0x30000000 0x00260000 0x8607c0
	//在此注意区分write.jffs2和write.yaffs针对不同格式文件系统

烧录如上图表示烧写成功

  • 启动
	boot
	或:
	reset

至此,通过tftp烧写文件按系统已完成。但如此烧写太过麻烦,每次文件系统稍有修改便要烧写一次,占用太多时间。为解决该问题,可以使用网络文件系统。

扫描二维码关注公众号,回复: 9424951 查看本文章

网络文件系统

网络文件系统即是处于同一网络的开发板通过网络挂载pc机上指定目录下的文件系统,该文件系统并未烧到开发板flash,而是存在于pc上,开发板只是在启动文件系统时通过设置的参数到pc指定位置去挂载。

环境搭建

  • pc端
    安装nfs服务
	sudo apt install nfs-kernel-server
	sudo apt install nfs-common

配置

	sudo vi /etc/exports
	在该文件最后加入以下内容:
	/home/jiang/workspace/zj2440/nfs_root/rootfs *(rw,sync,no_root_squash) //指定开发板与pc机nfs共享目录

重启nfs服务

	sudo /etc/init.d/nfs-kernel-server restart
  • 开发板端
    在此有两种挂载方式:
    1.开发板启动后挂载flash中文件系统,进入系统后再手动挂载nfs文件系统;
    启动后串口进入开发板,执行挂载命令
	mount -t nfs -o nolock 192.168.0.101:/home/jiang/workspace/zj2440/nfs_root/rootfs /mnt
	//192.168.0.101为pc机ip
	///home/jiang/workspace/zj2440/nfs_root/rootfs为设置的nfs共享目录
	//mnt为开发板上的目录,指定为文件系统的挂载点

2.开发板启动文件系统时直接从nfs网络文件系统启动;
该方式需设置bootargs参数

	set bootargs noinitrd root=/dev/nfs nfsroot=192.168.0.101:/home/jiang/workspace/zj2440/nfs_root/rootfs ip=192.168.0.100:192.168.0.101:192.168.0.1:255.255.255.0::eth0:off init=/linuxrc console=ttySAC0
	//root=:指定文件系统为位置
	//192.168.0.100为开发板ip地址
	//192.168.0.1为网关
	save

如此设置,开发板启动时会直接加载网络文件系统,避免繁琐的烧录过程。

发布了4 篇原创文章 · 获赞 2 · 访问量 196

猜你喜欢

转载自blog.csdn.net/user_jiang/article/details/102643059