硬件环境:E9卡片fressscal的i.mx6q,天嵌开发板
软件环境:ubuntu12.04


目的:
1.实现E9卡片i.mx6q的tftp下载uImage,从下载的uImage中加载内核,然后nfs挂载到虚拟机
2.实现E9卡骗i.mx6q从mmc中读取uImage,启动内核,然后nfs挂载到虚拟机。




两种方式提高嵌入式开发效率,一种方式是内核和文件经常修改时使用
另一种方式是当内核不改,文件系统经常修改时使用,也可以内核下载,文件系统不挂载




一.ubuntu12.04安装tftp客户端,tftpd服务端用于下载uImage
1.安装
apt-install tftp tftpd openbsd-inetd


2.建立tftp下载的目录tftpboot
mkdir /tftpboot
拷贝uImage到/tftpboot下
chmod 777 /tftpboot/* -R
3.修改tftpd服务器配置文件
vi /etc/inetd.conf
添加如下内容
tftp dgram udp wait nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot


4.重启改服务
/etc/init.d/openbsd-inetd restart
in.tftpd -l /tftpboot


5.测试是否成功
echo 'ad' >/tftpboot/hello
tftp 127.0.0.1
tftp>get hello


到此tftpd服务器配置完毕




二.安装nfs服务
1.安装
apt-get install nfs-kernel-server


2.创建开发板挂载目录
mkdir -m 777 /opt/
3.将文件系统放在/opt/下即挂载目录为/opt/rootfs


4.设置nfs配置文件
vi /etc/exports
添加如下内容
/opt/rootfs *(subtree_check,rw,no_root_squash,async)


5.重启服务
/etc/init.d/nfs-kernel-server restart


6.测试是否成功
mkdir /mnt/nfs
mount 127.0.0.1:/opt/rootfs/  /mnt/nfs -t nfs
查看nfs的内容是否和rootfs一样
然后卸载nfs
umount /mnt/nfs




三.开发板E9设置
本质上都是uboot,不同的开发板使用uboot都差不多,都是那套,虽然E9没有教材告诉你怎么使用nfs,tftp,设置参数什么的,其实都差不多,只是天嵌封装了一下,是uboot更友善些
开发板信息
#####    Boot for IMX6 Main Menu        #####
[1]boot from emmc
[2]boot from sdcard
[3]boot from tftp
[5]download from sdcard
[0]setting boot args
[q]exit to command mode
Enter your selection: q
MX6Q SABRESD U-Boot > pri


将信息打印出来,大概了解下天嵌开发人员设置的uboot流程,不难发现规律。
设置如下


方式一实现uImage下载,文件系统挂载:
只需要按照提供的序号逐步实现就可以了


方式二实现uImage从mmc读取加载,文件系统挂载:
需要自己设置参数
在“MX6Q SABRESD U-Boot >”下执行如下命令(ubuntu的ip为117,开发板为58)
1.设置启动参数
setenv bootargs console=ttySAC0,115200 ${displayArgs} root=/dev/nfs ip=192.168.1.58 fec_mac=12:32:43:34:21:40 nfsroot=192.168.1.117:/opt/rootfs,v3,tcp


2.设置启动流程
setenv myargs mmc dev 3\; mmc read ${loadaddr} 0x800 0x3000\; bootm


3.set bootcmd run myargs

4.save

5.run myargs


6.将文件系统中/etc/init.d/rcS中的“net_set &”
修改为“#net_set &”这句是设置开发板ip用的,会出问题


至此tftp和nfs的开发环境搭建完成
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐