码迷,mamicode.com
首页 > 其他好文 > 详细

使用U-Boot的TFTP(远程/网络内核)

时间:2018-09-03 15:03:19      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:电源   dtb   soc   中断   应该   保存   测试   conf   sudo   

前提条件

假设您的主机PC运行的是Ubuntu 14.04.1 LTS或更高版本,并且与您的开发平台在同一个本地网络上;为了简单起见,我们假设网络上也有DHCP服务器。
如果使用Juno,请确保使用的是前端以太网端口。

设置TFTP服务器

在您的主机PC上安装以下软件包:

$ sudo apt-get update && sudo apt-get install xinetd tftpd tftp

 创建文件/etc/xinetd.d/tftp,内容如下:

service tftp
{
     protocol = udp
     port = 69
     socket_type = dgram
     wait = yes
     user = nobody
     server = /usr/sbin/in.tftpd
     server_args = /tftpboot
     disable = no
}

 创建目录‘/tftpboot/‘(与上面的‘ server-args‘匹配)并设置其权限:

$ sudo mkdir /tftpboot/
$ sudo chmod -R 777 /tftpboot/
$ sudo chown -R nobody /tftpboot/

 重新启动xinetd的服务:

$ sudo service xinetd restart

 通过在‘/tftpboot/‘中创建一个简单的‘ test ‘文件来测试服务器:

$ cd /tftpboot/
$ echo "this is a test" > test
$ cat test
this is a test

 通过‘ ifconfig‘获取主机的IP地址,然后从另一个系统:

$ tftp <host_pc_ip_address>
tftp> get test
Sent 159 bytes in 0.0 seconds
tftp> quit
$ cat test
this is a test

 确认TFTP服务器工作正常后,将内核映像、设备树blob和ramdisk(如果合适的话)复制到‘ /tftpboot/‘。本例期望路径如下:

  • Kernel image: `/tftpboot/Image‘
  • Device tree blob:`/tftpboot/juno/juno.dtb‘

U-Boot TFTP

打开Juno板并中断U-Boot的默认启动选择:

The default boot selection will start in   3 seconds

 将主机PC的IP地址保存到“serverip”环境变量:

VExpress64# set serverip <host_pc_ip_address>
VExpress64# saveenv

 下一步修改U-Boot的引导命令,通过TFTP引导:

VExpress64# set origbootcmd "$bootcmd"
VExpress64# set bootcmd "dhcp: tftp ${kernel_addr} ${serverip}:Image; tftp ${fdt_addr} ${serverip}:juno/juno.dtb; booti ${kernel_addr} - ${fdt_addr}"
VExpress64# saveenv

 重新启动juno板,现在应该通过TFTP引导。
 这是一个永久的更改,即Juno将通过TFTP在每次电源启动时启动。恢复到默认启动行为:

VExpress64# set bootcmd "$origbootcmd"

 

使用U-Boot的TFTP(远程/网络内核)

标签:电源   dtb   soc   中断   应该   保存   测试   conf   sudo   

原文地址:https://www.cnblogs.com/wanglouxiaozi/p/9578166.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!