Xilinx zynq zynqmp u-boot配置和使用

作者

QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118

参考

ZYNQ平台在SDK下引导启动UBOOT
Executing application from u-boot on ZCU102
【分享】U-Boot中使用UBIFS文件系统的测试命令示例

Jtag引导u-boot

connect arm hw
cd D:/project_1/project_1.sdk/hw_platform_0
fpga -f fpga.bit #使用PL部分
source ps7_init.tcl
ps7_init
dow u-boot.elf
con

Xilinx petalinux menuconfig配置

  • local version:1.0.0
  • env in flash:spi nor flash
  • debug uart:uart0 uart1
    在这里插入图片描述
    在这里插入图片描述

uboot单独编译

uboot menuconfig,声称自己的自定义config。
这里写图片描述
新建并,修改自己的头文件,
这里写图片描述
看下petalinux的meta-generated,

FILESEXTRAPATHS_prepend := "${THISDIR}/configs:"
SRC_URI += "file://config.cfg file://platform-auto.h"
UBOOT_MAKE_TARGET_append = " EXT_DTB=${DEPLOY_DIR_IMAGE}/${MACHINE}-system.dtb"

do_configure_append () {
	install ${WORKDIR}/platform-auto.h ${S}/include/configs/
	install ${WORKDIR}/platform-top.h ${S}/include/configs/
}

uboot也使用设备树了,比如串口,比如zynqMP的串口用的是0还是1,现在由设备树决定了,配置宏不起作用的,

static const struct dm_serial_ops zynq_serial_ops = {
	.putc = zynq_serial_putc,
	.pending = zynq_serial_pending,
	.getc = zynq_serial_getc,
	.setbrg = zynq_serial_setbrg,
};

static const struct udevice_id zynq_serial_ids[] = {
	{ .compatible = "xlnx,xuartps" },
	{ .compatible = "cdns,uart-r1p8" },
	{ .compatible = "cdns,uart-r1p12" },
	{ }
};

U_BOOT_DRIVER(serial_zynq) = {
	.name	= "serial_zynq",
	.id	= UCLASS_SERIAL,
	.of_match = zynq_serial_ids,
	.ofdata_to_platdata = zynq_serial_ofdata_to_platdata,
	.priv_auto_alloc_size = sizeof(struct zynq_uart_priv),
	.probe = zynq_serial_probe,
	.ops	= &zynq_serial_ops,
	.flags = DM_FLAG_PRE_RELOC,
};

menuconfig与设备树相关的,
这里写图片描述
参考博客ZYNQ之uboot,kernel,设备树,文件系统生成。uboot中的设备树影响到了linux内核。uboot源码中主要是宏CONFIG_OF_CONTROL在起作用,使其不受config或头文件中的宏影响。。。
zcu102-revB设备树在arch文件夹,
这里写图片描述
从dts的makefile看出了一些门道,petalinux的yocto的使用了EXT_DTB来重定位了设备树。
这里写图片描述

asm/arch/clk.h: no such file or directory

重新menuconfig,然后save

uboot配置要点

  1. 配置phy
  2. 配置autoboot,重试时间,stop字符串等
  3. 配置常用命令mii,ext4等
  4. 配置备份环境变量分区
  5. 配置默认环境变量

增加ramdisk

petalinux上说增加CONFIG_SYS_BOOTM_LEN,注释掉CONFIG_SYS_BOOTMAPSZ,我没有测试。

#define CONFIG_SYS_BOOTMAPSZ 0x10000000
#ifdef CONFIG_SYS_BOOTM_LEN
#undef CONFIG_SYS_BOOTM_LEN
#endif
#define CONFIG_SYS_BOOTM_LEN 0x10000000
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
u-boot是用于启动和管理嵌入式系统的开源引导加载程序。而Zynq MPZynq UltraScale+ MPSoC)是Xilinx公司推出的一款高性能多核处理器系统级芯片,结合了处理器和可编程逻辑资源,常被用于嵌入式系统的开发。 u-bootZynq MP的结合是为了更好地管理和启动基于Zynq MP的嵌入式系统。通过u-boot,我们可以加载和启动操作系统(如Linux)以及其他应用程序,同时还能提供一些硬件控制和配置的功能。 具体来说,u-bootZynq MP中的主要功能如下: 1. 引导加载:u-boot可以从不同的存储介质(如SD卡、NAND闪存)中加载启动镜像,并将控制权交给操作系统。 2. 配置管理:u-boot提供了一系列命令和结构来配置和管理Zynq MP的各种外设、时钟和内存设置等。 3. bootargs设置:u-boot可以设置操作系统启动参数,如内核命令行参数、设备树等,以便操作系统正确地初始化硬件和驱动。 4. 安全性支持:u-boot还支持一些安全性功能,如Secure Boot、认证和加密等,以保护系统免受恶意代码和未经授权的访问。 5. 调试和故障排除:u-boot可以提供一些调试和故障排除的功能,如使用调试器进行硬件/软件的调试,显示系统状态信息等。 总之,u-bootZynq MP提供了一个灵活可定制的引导加载程序,使得开发者可以更好地管理和控制嵌入式系统的启动和初始化过程。同时,通过u-boot的功能,我们可以更方便地进行系统调试、配置和故障排除。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值