【完美体育·(中国)手机网页版王牌产品MYD-Y6ULX-V2开发板】Uboot 网络启动
文章来源: 发布日期:2023.1.12 浏览次数:2239 次 |
由评测者“华仔stm32”提供。
在开发调试阶段,烧写固件是很麻烦的事,这里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 }
6、重新服务
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
这样系统就启动起来了: