Перейти к содержанию
    

Не стартует программа на Ultrascale

Здравствуйте. Такая проблема. Заказали 4 платы у одной не слишком порядочной конторы. оплатили стоимость комплектующих, изготовление плат и монтаж.

Из 4-х плат работает только одна. В остальных 3-х проблема одинаковая - заливаю HelloWorld  из шаблона SDK Vitis, прошивка в ПЛИС грузится успешно (появляется сигнал Done), заливается FSBL и все, тишина.

Питания все и клоки проверил, сравнил с референсной рабочей платой - все хорошо.

В чем может быть проблема ? Может сталкивались с таким поведением. Привожу лог из SDK

   

Info: tcfchan#4 closed
xsct% 
initializing
  0%    0MB   0.0MB/s  ??:?? ETA
  5%    1MB   2.2MB/s  ??:?? ETA
 10%    1MB   1.9MB/s  ??:?? ETA
 15%    2MB   1.8MB/s  ??:?? ETA
 20%    3MB   1.8MB/s  ??:?? ETA
 24%    4MB   1.7MB/s  ??:?? ETA
 29%    5MB   1.7MB/s  00:07 ETA
 35%    6MB   1.7MB/s  00:06 ETA
 39%    7MB   1.7MB/s  00:06 ETA
 44%    8MB   1.7MB/s  00:06 ETA
 50%    9MB   1.7MB/s  00:05 ETA
 55%   10MB   1.7MB/s  00:04 ETA
 60%   11MB   1.7MB/s  00:04 ETA
 66%   12MB   1.7MB/s  00:03 ETA
 71%   13MB   1.7MB/s  00:03 ETA
 75%   13MB   1.7MB/s  00:02 ETA
 81%   14MB   1.7MB/s  00:02 ETA
 86%   15MB   1.7MB/s  00:01 ETA
 90%   16MB   1.7MB/s  00:01 ETA
 95%   17MB   1.7MB/s  00:00 ETA
100%   18MB   1.7MB/s  00:10    

Downloading Program -- D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/sw/vcu/boot/fsbl.elf
	section, .text: 0xfffc0000 - 0xfffd071f
	section, .init: 0xfffd0740 - 0xfffd0773
	section, .fini: 0xfffd0780 - 0xfffd07b3
	section, .note.gnu.build-id: 0xfffd07b4 - 0xfffd07d7
	section, .rodata: 0xfffd0800 - 0xfffd1fb7
	section, .sys_cfg_data: 0xfffd1fc0 - 0xfffd2837
	section, .mmu_tbl0: 0xfffd3000 - 0xfffd300f
	section, .mmu_tbl1: 0xfffd4000 - 0xfffd5fff
	section, .mmu_tbl2: 0xfffd6000 - 0xfffd9fff
	section, .data: 0xfffda000 - 0xfffdb3d7
	section, .sbss: 0xfffdb3d8 - 0xfffdb3ff
	section, .bss: 0xfffdb400 - 0xfffdd73f
	section, .heap: 0xfffdd740 - 0xfffddb3f
	section, .stack: 0xfffddb40 - 0xfffdfb3f
	section, .dup_data: 0xfffdfb40 - 0xfffe0f17
	section, .handoff_params: 0xfffe9e00 - 0xfffe9e87
	section, .bitstream_buffer: 0xffff0040 - 0xfffffc3f

  0%    0MB   0.0MB/s  ??:?? ETA
 88%    0MB   0.2MB/s  ??:?? ETA
100%    0MB   0.2MB/s  00:00    

Setting PC to Program Start Address 0xfffc0000
Successfully downloaded D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/sw/vcu/boot/fsbl.elf
Info: Cortex-A53 #0 (target 9) Stopped at 0xffff0000 (Reset Catch)
_vector_table() at asm_vectors.S: 206
206: 	b	_boot
xsct% Info: Breakpoint 8 status:
   target 9: {Address: 0xfffcd6d0 Type: Hardware}
xsct% Info: Cortex-A53 #0 (target 9) Running
11:08:19 INFO	: Disconnected from the channel tcfchan#4.
11:08:21 INFO	: Connected to target on host '127.0.0.1' and port '3121'.
11:08:21 INFO	: Processor 'psu_cortexa53_0' will be used for running fsbl 'D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/sw/vcu/boot/fsbl.elf'
11:08:21 INFO	: Jtag cable 'JTAG-ONB4 251633007191A' is selected.
11:08:21 INFO	: 'jtag frequency' command is executed.
11:08:21 INFO	: Sourcing of 'C:/Xilinx/Vitis/2019.2/scripts/vitis/util/zynqmp_utils.tcl' is done.
11:08:21 INFO	: Context for 'APU' is selected.
11:08:22 INFO	: System reset is completed.
11:08:25 INFO	: 'after 3000' command is executed.
11:08:25 INFO	: 'targets -set -filter {jtag_cable_name =~ "JTAG-ONB4 251633007191A" && level==0} -index 0' command is executed.
11:08:36 INFO	: FPGA configured successfully with bitstream "D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/hello/_ide/bitstream/MyBlockDesign_wrapper.bit"
11:08:36 INFO	: Context for 'APU' is selected.
11:08:47 INFO	: Hardware design information is loaded from 'D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/hw/MyBlockDesign_wrapper.xsa'.
11:08:47 INFO	: 'configparams force-mem-access 1' command is executed.
11:08:47 INFO	: Context for 'APU' is selected.
11:08:47 INFO	: Boot mode is read from the target.
11:08:47 INFO	: Context for processor 'psu_cortexa53_0' is selected.
11:08:47 INFO	: Processor reset is completed for 'psu_cortexa53_0'.
11:08:48 INFO	: The application 'D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/sw/vcu/boot/fsbl.elf' is downloaded to processor 'psu_cortexa53_0'.
11:08:48 INFO	: 'set bp_8_48_fsbl_bp [bpadd -addr &XFsbl_Exit]' command is executed.
11:09:48 WARN	: Exit breakpoint of FSBL (XFsbl_Exit) is not hit within allocated wait time of '60' seconds.
Note: To wait for a fixed amount of time specify the FSBL function as empty in launch configuration. Use 'IDE_FSBL_BP_HIT_WAIT_TIME' environment variable in launch configuration to modify the wait time (seconds).
Reason: timeout: target has not halted
11:09:48 INFO	: 'bpremove $bp_8_48_fsbl_bp' command is executed.
11:09:53 INFO	: ----------------XSDB Script----------------
connect -url tcp:127.0.0.1:3121
source C:/Xilinx/Vitis/2019.2/scripts/vitis/util/zynqmp_utils.tcl
targets -set -nocase -filter {name =~"APU*"}
rst -system
after 3000
targets -set -filter {jtag_cable_name =~ "JTAG-ONB4 251633007191A" && level==0} -index 0
fpga -file D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/hello/_ide/bitstream/MyBlockDesign_wrapper.bit
targets -set -nocase -filter {name =~"APU*"}
loadhw -hw D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/hw/MyBlockDesign_wrapper.xsa -mem-ranges [list {0x80000000 0xbfffffff} {0x400000000 0x5ffffffff} {0x1000000000 0x7fffffffff}]
configparams force-mem-access 1
targets -set -nocase -filter {name =~"APU*"}
set mode [expr [mrd -value 0xFF5E0200] & 0xf]
targets -set -nocase -filter {name =~ "*A53*#0"}
rst -processor
dow D:/Vivado_Projects/MyProject_2/MyProject/MyProject.sdk/vcu/export/vcu/sw/vcu/boot/fsbl.elf
set bp_8_48_fsbl_bp [bpadd -addr &XFsbl_Exit]
con -block -timeout 60
bpremove $bp_8_48_fsbl_bp
----------------End of Script----------------

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оказалось, что зависает в функции psu_ddr_phybringup_data. Если закомментировать инициализацию DDR, то дальше все работает

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если одна все-таки работает, то я бы первым делом на рентгене посмотрел, все ли пропаяно в части DDR-FPGA. Ну и плата то по уму сделана? Все эти волновые сопротивления дорожек на внутренних, внешних слоях, опорные плейны, выравнивание - с этим все ок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, alexPec said:

Если одна все-таки работает, то я бы первым делом на рентгене посмотрел, все ли пропаяно в части DDR-FPGA. Ну и плата то по уму сделана? Все эти волновые сопротивления дорожек на внутренних, внешних слоях, опорные плейны, выравнивание - с этим все ок?

Плата сделана хорошо. Предыдущая партия вся рабочая. В этой версии заменили чип питания. 

Но одна плата с ним прекрасно работает.

Дальнейшие поиски показали, что FSBL виснет на проверке содержимого регистра PGSR0 (DDR_PHY). 

В регистре 0х80С000FF. Т.е установлены биты ошибок QSGERR и WLAERR.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие чипы памяти, ширина шины и как в PS прописана. Насчет обратной совместимости надо аккуратнее быть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 hours ago, gosha-z said:

Какие чипы памяти, ширина шины и как в PS прописана. Насчет обратной совместимости надо аккуратнее быть.

я не занимался трассировкой, но общался с конструктором. Была проблема с препрегами, в итоге, заменили на другой и переразвели плату. соответственно некоторые дорожки сделали шире. Конструктор грамотный, знает, что делает. Смущает, что одна плата из 4-х завелась без лишних танцев

Изменено пользователем карамболь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 06.04.2023 в 15:10, карамболь сказал:

Заказали 4 платы у одной не слишком порядочной конторы. оплатили стоимость комплектующих, изготовление плат и монтаж.

Сравнить надписи и внешний вид ПЛИС и ddr, они все должны быть из одной серии. Если всё ок, то сделать тестовую прошивку и выявить не рабочий модуль или пин.

По хорошему надо осциллографом пройти по всем  доступным дорожкам(между ПЛИС и ddr) на плате и сравнит рабочий и нерабочий.

Как вариант - выпаять ddr на рабочей и не рабочей платах, потыкать осциллографом и сравнить

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, HardEgor said:

Сравнить надписи и внешний вид ПЛИС и ddr, они все должны быть из одной серии. Если всё ок, то сделать тестовую прошивку и выявить не рабочий модуль или пин.

По хорошему надо осциллографом пройти по всем  доступным дорожкам(между ПЛИС и ddr) на плате и сравнит рабочий и нерабочий.

Как вариант - выпаять ddr на рабочей и не рабочей платах, потыкать осциллографом и сравнить

а можно как-нибудь программно локализовать проблему ? Я пробовал читать регистры DDR_PHY_DXхGSR0, но у них у всех 6-й бит = 0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

59 minutes ago, карамболь said:

я не занимался трассировкой, но общался с конструктором

Я не о трассировке платы, а об используемых чипах памяти и настройках DDR контроллера для них. Не все Speed Bins поддерживаются более быстрыми чипами.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, gosha-z said:

Я не о трассировке платы, а об используемых чипах памяти и настройках DDR контроллера для них. Не все Speed Bins поддерживаются более быстрыми чипами.

дело в том, что чипы не менялись. Этих плат уже много и все запустились без проблем. Конфигурация контроллера памяти тоже не менялась. И в последней партии одна плата из 4-х работает

Изменено пользователем карамболь

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вот, что на форуме откопал 

Quote

We have noticed that the On FPGA PS Side DQ9 ball was missing.

 

Steps followed:

  • Bypassed DDR Calibration steps of Data and VREF Training in psinit.c file
  • By bypassing training steps, Directly write and read back of memory address and observed that DQ9 bit is not changing
  • On observing through microscope, DQ9 ball was missing

получается, что можно читать и писать в память, если закомментировать в FSBL калибровку DDR ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.04.2023 в 17:02, карамболь сказал:

вот, что на форуме откопал 

получается, что можно читать и писать в память, если закомментировать в FSBL калибровку DDR ?

Как-то это неправильно. Может в качестве эксперимента, но оставлять-то так все равно нельзя. Я бы первым делом все таки рентген сделал. Если нет доступа к рентгену, то попробовал бы пропаять еще раз чипы. У меня были такие случаи, что какая-нибудь нога (в моем случае альтера с 673 ногами) была не пропаяна, несмотря на то, что все платы устанавливались на одном установщике, м/с были из одной партии, паялось все на конвейерной печи подряд.  Я хорошенько наталкивал под BGA какой-нибудь ядреный флюс, типа AMTECH NC-559, и ставил на прогрев под конвекционной головкой (около 280 градусов) с нижним подогревом. После такой процедуры большинство подобных проблем лечилось. При последующем прогоне на климатике от -35 до +70 проблемы не возникало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

19 minutes ago, alexPec said:

Как-то это неправильно. Может в качестве эксперимента, но оставлять-то так все равно нельзя. Я бы первым делом все таки рентген сделал. Если нет доступа к рентгену, то попробовал бы пропаять еще раз чипы. У меня были такие случаи, что какая-нибудь нога (в моем случае альтера с 673 ногами) была не пропаяна, несмотря на то, что все платы устанавливались на одном установщике, м/с были из одной партии, паялось все на конвейерной печи подряд.  Я хорошенько наталкивал под BGA какой-нибудь ядреный флюс, типа AMTECH NC-559, и ставил на прогрев под конвекционной головкой (около 280 градусов) с нижним подогревом. После такой процедуры большинство подобных проблем лечилось. При последующем прогоне на климатике от -35 до +70 проблемы не возникало.

сначала попробую читать/писать... может удастся локализовать проблемный чип или трассу. Потом на рентген 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

  • Bypassed DDR Calibration steps of Data and VREF Training in psinit.c file
  • By bypassing training steps, Directly write and read back of memory address and observed that DQ9 bit is not changing

у меня вызывает исключение, попытка записи в DDR 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

прочитал регистры и обнаружил, что DX6RSR2 = 1 и DX7RSR2 = 1

т.е. проблема с последним чипом. Пересобрал проект на 32 бита DDR, но FSBL никак не изменился, также виснет.

Т.е. независимо от битности DDR, контроллер все равно проверяет калибровку, как для 64 бит ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...