环境:ubuntu 20.04
开发板:FS4412(Cortex-A9)
根文件系统:rootfs
资料包:Linux内核移植,u-boot引导程序,根文件系统-嵌入式文档类资源-CSDN下载Linux内核移植,u-boot引导程序,跟文件系统更多下载资源、学习资料请访问CSDN下载频道./download/daizhichaoaa/84056813
一、TFTP文件传输
环境搭建:
sudo apt-get install tftpd-hpa
配置服务器: 设置共享的路径位置
sudo vim /etc/default/tftpd-hpa
对应修改即可
重启服务 配置生效
sudo /etc/init.d/tftpd-hpa restart
测试查看服务进程是否配置成功
ps -aux | grep tftp
在这里顺便把NFS服务也安装下,后面移植系统的根文件系统是基于nfs
sudo apt-get install nfs-kernel-server
修改共享路径:
sudo vim /etc/exports
重启让配置生效:
sudo /etc/init.d/nfs-kernel-server restart
挂载nfs
解除挂载
sudo umount nfs
测试:
1.打开超级终端进入uboot交互模式
端口配置
set ipaddr 192.168.3.200 //开发板ipset serverip 192.168.3.163//服务器ipset gatewayip 192.168.3.1//网关save
然后分别进行如上配置
下载文件
tftp 40008000 xxx(文件名)
go 40008000
之后就可以在开发板上看到效果了
注:1.烧写的文件要放到tftp共享的路径里面
2.要保证电脑连着网线和开发板也要连着网线,如果不能同时连两根网线文章末尾有解决方法
二、移植Linux操作系统步骤(tftp)
1.把内核镜像 UImage 复制到tftp服务器共享目录
2.设备树 exynos4412-fs4412.dtb 复制到tftp服务器共享目录
3.根文件系统rootfs.tar.xz 复制 到 nfs共享目录下进行解压
sudo tar -xvf rootfs.tar.xz
4.修改权限
sudo chmod 777 -R rootfs
5.pwd获取文件路径 (共享文件路径)
/home/dzc/nfshome/rootfs
接下来打开超级终端操作
1)启动uboot进入交互模式
2)使用nfs网络文件系统作为根文件系统 配置模板
set bootargs root=/dev/nfs nfsroot=192.168.3.163:/home/dzc/nfshome/rootfs rw console=ttySAC2,115200 init=linuxrc ip=192.168.3.202
#set bootargs root=根属性 nfsroot=nfs服务器IP:nfs服务器根路径 rw console=ttySAC2,115200 init=linuxrc ip=开发板的IP
3)设置UBoot环境变量
set ipaddr 192.168.3.202
set serverip 192.168.3.163
set gatewayip 192.168.3.1//网关
set netmask 255.255.255.0
save
4)下载内核镜像到内存 41000000
tftp 41000000 uImage
5)下载设备树到 内存 42000000
tftp 42000000 exynos4412-fs4412.dtb
6)引导操作系统 Linux内核
bootm 41000000 - 42000000
之后就可以在终端上看到开发板的Linux系统了
问题解决:
1、关闭网线托管(解决电脑不能同时连两根网线问题,ip地址只能保留半小时左右)
sudo /etc/init.d/network-manager stop //暂时关闭网络,保留ipsudo /etc/init.d/network-manager start //重启网络
2、开发板挂载时提示协议不支持,具体错误如下:
mount: mounting 192.168.31.75:/home/why/SSD202_Project on /mnt failed: Protocol not supported
解决方法:由于ubuntu 20.04 nfs默认支持协议3和协议4,但是开发板uboot默认启动的是协议2,若想要求 nfs 支持协议2。需要在ubuntu系统
打开文件
vim /etc/default/nfs-kernel-server
在文件中末尾增加内容
RPCNFSDOPTS="--nfs-version 2,3,4 --debug --syslog"
保存重启下nfs,重启指令
sudo /etc/init.d/nfs-kernel-server restart
3、开发板挂载时提示超时:
rpcbind: server localhost not responding, timed out
解决办法:加上“-o nolock”参数
mount -t nfs -o nolock 192.168.3.163:/home/dzc/nfshome
4、Ubuntu NFS下载文件时出现卡顿并打印出T T T
解决办法
在Ubuntu终端输入如下命令