Jump to content

    
Aleksei_Rostov

u-boot xlnx + custom Zynq board

Recommended Posts

Есть вопрос к специалистам:

собираю u boot для Arty Z7-20 платы на Zynq'е средствами кросс - компиляции по вики Xilinx:

https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841973/Build+U-Boot

Потом собираю BOOT.BIN добавив fsbl.elf, .bit файл прошивки и u-boot.elf скомпилированный с исходников из гита Xilinx.

Запускаюсь, предварительно разрешив дебаг в FSBL, вот лог:


Xilinx First Stage Boot Loader
Release 2019.1  May 24 2020-00:58:05
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: 3
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: 0x000075D0
Partition Attr: 0x00000020
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xFFD13B7E
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: 0x00008A30
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: 0x00021F48
Data Word Len: 0x00021F48
Partition Word Len:0x00021F48
Load Addr: 0x04000000
Exec Addr: 0x04000000
Partition Start: 0x000FE490
Partition Attr: 0x00000011
Partition Checksum Offset: 0x00000000
Section Count: 0x00000001
Checksum: 0xF7E9BB25
Application
Handoff Address: 0x04000000
In FsblHookBeforeHandoff function
SUCCESSFUL_HANDOFF
FSBL Status = 0x1

U-boot не грузится. Беру u-boot из проекта petalinux, созданного для этой же платы, собираю boot.bin, загрузка u-boot проходит нормально.

Не могу понять, почему не работает u-boot, полученный из исходников Xilinx.

Команды для компиляции использую следующие:

 

export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm
make distclean
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zynq_zc702_defconfig
make ARCH=arm

Пробовал компилировать и с arm-none-eabi- компилятором. При загрузке с U-boot из петалинукса в логе упоминается zynq_zc702_defconfig конфиг.

Может необходимо какие либо настройки в zynq_zc702_defconfig поменять до компиляции?

 

Share this post


Link to post
Share on other sites
24 minutes ago, gosha-z said:

1. Откуда брался fsbl?

2. А если "вручную" запустить U-Boot с инициализацией скриптами - он запускается?

1. FSBL сгенерерованный в Xilinx SDK.

2. Не вижу смысла в ином способе запуска: BOOT.BIN читается из микроСД карты, с uboot из петалинукса грузится, c uboot из исходников -- нет. пытаюсь понять в чем разница. 

Share this post


Link to post
Share on other sites
1 minute ago, Alexey_Rostov said:

FSBL сгенерерованный в Xilinx SDK.

После того. как вы точно воспроизвели конфигурацию PCW Arty7?

1 minute ago, Alexey_Rostov said:

пытаюсь понять в чем разница. 

Device Tree разный, например. 

Share this post


Link to post
Share on other sites
3 minutes ago, gosha-z said:

После того. как вы точно воспроизвели конфигурацию PCW Arty7?

Device Tree разный, например. 

Спасибо. тогда может найти на какой device tree указывает конфиг zynq_zc702_defconfig, подредактировать под мой DT с платы и запуститься. То есть проблема в разных DT, которые описывают периферию без PL части?

Share this post


Link to post
Share on other sites

Это всего лишь предположение. Поэтому я и предложил запустить сначала U-Boot на инициализации скриптами. Тогда у вас есть возможность вывести дебаг в DCC.

Share this post


Link to post
Share on other sites
1 hour ago, Alexey_Rostov said:

Спасибо. тогда может найти на какой device tree указывает конфиг zynq_zc702_defconfig, подредактировать под мой DT с платы и запуститься. То есть проблема в разных DT, которые описывают периферию без PL части?

Действительно, получилось. Создал свой arty_defconfig файл, добавил папку с названием arty в u-boot-xlnx/board/xilinx/zynq с файлами ps7_init_gpl.c, ps7_init_gpl.h, ps7_init.c, ps7_init.h, в папку dts arty.dts и добавил в Makefile в папке dts arty.dtb.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.