uboot通过tftp的方式加载Linux内核文件

调试开发板的过程中,烧入了有问题的内核文件,设备启动后网络无法正常使用,设备本身无sd卡槽,此时可以通过uboot使用tftp的方式重新为开发板烧入内核;或者为了快速开发使用tftpboot的方式调试内核,加快开发速度,避免了每次烧写浪费时间。

 

  • 安装

sudo apt-get install tftpd-hpa #tftp server 
sudo apt-get install tftp-hpa #tftp client, for test

 

  • 配置TFTP Server

mkdir -p /home/xxx/tftpboot # xxx为你的用户名
chmod 777 /home/xxx/tftpboot
sudo vim /etc/default/tftpd-hpa

内容修改为下图所示,其中TFTP_DIRECTORY修改为你刚刚创建的文件夹即可


 

修改“TFTP_DIRECTORY”为TFTP_Server服务目录,该目录最好具有可读可写权限

修改“TFTP_ADDRESS”为0.0.0.0:69,表示所有IP源都可以访问

修改“TFTP_OPTIONS”为“-l -c -s”。其中:


-l:以standalone/listen模式启动TFTP服务,而不是从xinetd启动

-c:可创建新文件。默认情况下TFTP只允许覆盖原有文件而不能创建新文件

-s:改变TFTP启动的根目录,加了-s后,客户端使用TFTP时,不再需要输入指定目录,填写文件的文件路径,而是使用配置文件中写好的目录。
  • 重启TFTP _Server

sudo service tftpd-hpd restart 

在重启TFTP_Server之前需创建完服务目录,也就是上一步中那个指定的文件夹,否则重启可能失败。

  • 本机测试

输入:tftp 127.0.0.1 

如果TFTP_Server运行正常,将显示tftp >

可以使用get命令从服务器下载文件,如get 1.txt

也可使用put命令上传文件至服务器,如put 1.txt

输入q退出tftp。
 

  • Uboot参数设置

 

setenv ipaddr 192.168.1.20 #设置开发板的本地IP
setenv serverip 192.168.1.103 #设置tftp server的IP,也就是你存放kernel之类的文件的tftp服务器地址
  • Uboot启动或者刷写内核

tftpboot #其中img镜像为uboot指定的名字

或者

tftp c0008000 zImage
erase 0x680000 +0x120000
cp.b c0008000 0x680000 0x120000;

这里c0008000是下载开发板里内存起始地址,zImage是需要下载的文件名称,0x680000是kernel的起始位置,0x120000是kernel的分区大小;具体值为多少和设备有关。

 

参考文章:

  1. Ubuntu下TFTP_Server安装与配置
  2. 让U-Boot通过tftp的方式加载Linux内核文件
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值