编程和配置U-boot

时间:2018-02-01 11:07:00

标签: linux-kernel embedded-linux hardware u-boot device-tree

首先,这个问题与嵌入式操作系统的创建有关,确切地说,与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不是正确的地方请问这类问题,建议我在哪里可以做到这一点,我将转移到另一个论坛。 感谢您抽出宝贵时间阅读该问题。

1 个答案:

答案 0 :(得分:1)

请参阅link,如果您的pynq板使用了zynq_artyz7_defconfig,请查看makefile,具体取决于您为构建提供的命令,还需要查看include / configs / zynq-common中的CONFIG_SPL_FS_LOAD_PAYLOAD_NAME .H