米尔电子
直播中

华仔stm32

3年用户 2960经验值
擅长:嵌入式技术
私信 关注
[技术]

【米尔王牌产品MYD-Y6ULX-V2开发板试用体验】Uboot 网络启动

在开发调试阶段,烧写固件是很麻烦的事,这里linux的uboot提供了网络启动的功能,从网络服务器里把zImage、设备树.dtb读入到指定的内存地址,来实现不用频繁的烧写固件。
一、ubnutu服务器上创建tfptp服务
1、需要在 Ubuntu 上搭建 TFTP 服务器,需要安装 tftp-hpa 和 tftpd-hpa,命令如下:

sudo apt-get install tftp-hpa tftpd-hpa
sudo apt-get install xinetd

2、创建用于存文件的文件夹,我这里创在如下目录:
developer@EASY-EAI-Develop:~/linux/tftpboot$ pwd /home/developer/linux/tftpboot
3、给这个目录改写权限
chomd 777 /home/developer/linux/tftpboot
4、打开/etc/default/tftpd-hpa 文件,将其修改为如下所示内容:

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/developer/linux/tftpboot" #这里指定存放文件夹的绝对目录
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure -l -c -s"

5、新建文件/etc/xinetd.d/tftp,如果没有/etc/xinetd.d 目录的话自行创建,然后在里面输入如下内容:

developer@EASY-EAI-Develop:~/linux/tftpboot$ cat /etc/xinetd.d/tftp 
service tftp
{
  disable = no 138
  socket_type = dgram
  protocol = udp
  wait = yes
  user = root
  server = /usr/sbin/in.tftpd
  server_args = -s /tftpboot -c
  per_source = 11
  cps = 100 2
}

5、重新服务

sudo /etc/init.d/xinetd reload
sudo /etc/init.d/xinetd restart
sudo service tftp-hpa restart

这样tftp服务端就建好了,把需要下载的镜像与设备树拷到这里目录里,最好也给予读取的权限:

developer@EASY-EAI-Develop:~/linux/tftpboot$ ls
myd-y6ull-emmc.dtb  zImage```

二、配置uboot


1、开发板重启,按回军键,进入uboot:

U-Boot 2020.04-5.10.9-1.0.0+g25276d37 (Aug 23 2022 - 02:44:07 +0000)

CPU:   i.MX6ULL rev1.1 528 MHz (running at 396 MHz)
CPU:   Industrial temperature grade (-40C to 105C) at 39C
Reset cause: POR
Model: Freescale i.MX6 ULL 14x14 EVK Board
Board: MX6ULL 14x14 EVK
DRAM:  512 MiB
board_init ok
MMC:   FSL_SDHC: 0, FSL_SDHC: 1
Loading Environment from MMC... OK
Display: MYIR-LCD-7-800x480 (800x480)
Video: 800x480x16
In:    serial
Out:   serial
Err:   serial
switch to partitions #0, OK
mmc1(part 0) is current device
flash target is MMC:1
Net:
Warning: ethernet@02188000 (eth0) using random MAC address - fe:42:30:04:1b:ea
eth0: ethernet@02188000 [PRIME]
Fastboot: Normal
Normal Boot
Hit any key to stop autoboot:  0
=>

2、设置ip地址,服务端ip地址:

=> setenv ipaddr 192.168.3.182
=> setenv serverip 192.168.3.186
=> saveenv

注意,网络地址环境变量的设置要根据自己的实际情况,确保 Ubuntu 主机和开发板的 IP地址在同一个网段内,比如我现在的开发板和电脑都在 192.168.3.0 这个网段内,所以设置开发板的 IP 地址为 192.168.3.181,我的 Ubuntu 主机的地址为 192.168.3.186,因此 serverip 就是192.168.3.186。ethaddr 为网络 MAC 地址,是一个 48bit 的地址,如果在同一个网段内有多个开发板的话一定要保证每个开发板的 ethaddr 是不同的,否则通信会有问题!设置好网络相关的环境变量以后就可以使用网络相关命令了。(我这里的好象mac、gatewayip不用设也可以)

3、把网线插入ETH1。
4、下载zImage、myd-y6ull-emmc.dtb

=> tftp 80800000 zImage
ethernet@02188000 Waiting for PHY auto negotiation to complete.... done
Using ethernet@02188000 device
TFTP from server 192.168.3.186; our IP address is 192.168.3.182
Filename 'zImage'.
Load address: 0x80800000
Loading: #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##############################################
         1 MiB/s
done
Bytes transferred = 9249832 (8d2428 hex)
=> tftp 83000000 myd-y6ull-emmc.dtb
Using ethernet@02188000 device
TFTP from server 192.168.3.186; our IP address is 192.168.3.182
Filename 'myd-y6ull-emmc.dtb'.
Load address: 0x83000000
Loading: ###
         2.8 MiB/s
done
Bytes transferred = 35213 (898d hex)
=>

5、然后用bootz启动 (注意 两个地址之间要打一个空格键,我没有打,弄了好久才好)
=>bootz 80800000 - 83000000
这样系统就启动起来了:
image.png

更多回帖

发帖
×
20
完善资料,
赚取积分