首先,这个问题与嵌入式操作系统的创建有关,确切地说,与Linux Kernel + u-boot + FSBL +设备树+ FS编译为在A9臂上运行。
上下文
在Zynq设备(特别是Pynq Board)上启动此(刚创建)操作系统后,Uart会发出以下消息:
No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
initcall sequence 04061cc0 failed at call 04045e9c (err=-1)
### ERROR ### Please RESET the board ###
问题:
很明显,错误在于u-boot.elf的生成:它尝试使用无法找到的设备树,但是在BOOT文件夹中,设备树的名称为{ {1}}。什么可能导致这个问题?我可以尝试修改哪个配置文件以指向正确的设备树?有什么建议吗?
一些细节:
只是为了添加更多信息,
1)第一阶段引导加载程序似乎工作正常并打印:
devicetree.dtb
2)我从原始U-boot存储库修改的唯一文件是Xilinx First Stage Boot Loader
Release 2017.1 Jan 25 2018-18:26:02
Devcfg driver initialized
Silicon Version 3.1
Boot mode is SD
SD: rc= 0
SD Init Done
Flash Base Address: 0xE0100000
Reboot status register: 0x60600000
Multiboot Register: 0x0000C000
Image Start Address: 0x00000000
Partition Header Offset:0x00000C80
Partition Count: 4
Partition Number: 1
Header Dump
Image Word Len: 0x000F6EC0
Data Word Len: 0x000F6EC0
Partition Word Len:0x000F6EC0
Load Addr: 0x00000000
Exec Addr: 0x00000000
Partition Start: 0x000065D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD14B7E
Bitstream
In FsblHookBeforeBitstreamDload function
PCAP:StatusReg = 0x40000A30
PCAP:device ready
PCAP:Clear done
Level Shifter Value = 0xA
Devcfg Status register = 0x40000A30
PCAP:Fabric is Initialized done
PCAP register dump:
PCAP CTRL 0xF8007000: 0x4C00E07F
PCAP LOCK 0xF8007004: 0x0000001A
PCAP CONFIG 0xF8007008: 0x00000508
PCAP ISR 0xF800700C: 0x0802000B
PCAP IMR 0xF8007010: 0xFFFFFFFF
PCAP STATUS 0xF8007014: 0x00000A30
PCAP DMA SRC ADDR 0xF8007018: 0x00100001
PCAP DMA DEST ADDR 0xF800701C: 0xFFFFFFFF
PCAP DMA SRC LEN 0xF8007020: 0x000F6EC0
PCAP DMA DEST LEN 0xF8007024: 0x000F6EC0
PCAP ROM SHADOW CTRL 0xF8007028: 0xFFFFFFFF
PCAP MBOOT 0xF800702C: 0x0000C000
PCAP SW ID 0xF8007030: 0x00000000
PCAP UNLOCK 0xF8007034: 0x757BDF0D
PCAP MCTRL 0xF8007080: 0x30800100
DMA Done !
FPGA Done !
In FsblHookAfterBitstreamDload function
Partition Number: 2
Header Dump
Image Word Len: 0x0001BB09
Data Word Len: 0x0001BB09
Partition Word Len:0x0001BB09
Load Addr: 0x04000000
Exec Addr: 0x04000000
Partition Start: 0x000FD490
Partition Attr: 0x00000010
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xF7EAF7E3
Application
Partition Number: 3
Header Dump
Image Word Len: 0x00000A05
Data Word Len: 0x00000A05
Partition Word Len:0x00000A05
Load Addr: 0x02A00000
Exec Addr: 0x00000000
Partition Start: 0x00118FA0
Partition Attr: 0x00000012
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFD4E4FCD
Application
Handoff Address: 0x04000000
In FsblHookBeforeHandoff function
SUCCESSFUL_HANDOFF
FSBL Status = 0x1
No valid device tree binary found - please append one to U-Boot binary, use u-boot-dtb.bin or define CONFIG_OF_EMBED. For sandbox, use -d <file.dtb>
initcall sequence 04061cc0 failed at call 04045e9c (err=-1)
### ERROR ### Please RESET the board ###
。我这样做是因为我必须使用Linaro FS而不是默认的zynq-common.h
。这里修改了文件的部分(你可以理解,我正在使用SD卡,修改是为initfsram
完成的):
sdboot
此外,如果需要,我可以共享其他配置文件。
如果您认为stackoverflow不是正确的地方请问这类问题,建议我在哪里可以做到这一点,我将转移到另一个论坛。 感谢您抽出宝贵时间阅读该问题。
答案 0 :(得分:1)
请参阅link,如果您的pynq板使用了zynq_artyz7_defconfig
,请查看makefile,具体取决于您为构建提供的命令,还需要查看include / configs / zynq-common中的CONFIG_SPL_FS_LOAD_PAYLOAD_NAME .H