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

doom13

Свой
  • Постов

    1 575
  • Зарегистрирован

  • Посещение

Весь контент doom13


  1. Это событие как часто происходит? Размер данных для отправки на ПК какой? Ещё можете в сторону AXI DataMover посмотреть.
  2. Для случая DMA всё уже сделано за вас. Вам остаётся разобраться с работой DMA со стороны процессорной системы и сформировать из ваших "отчёты по 64бита" AXI4-Stream (разбить ваши данные на пакеты определённого размера, сформировать TLAST).
  3. Там нет ничего сложного, интерфейс с пятью портами реализовать: m_axis_aclk, m_axis_tvalid, m_axis_tready, m_axis_tlast, m_axis_tdata[n-1:0]. Можно и без tready, поставите фифо между вашим ядром и AXI DMA, которое будет буферизировать данные на время перезарядки DMA.
  4. Пока проблему вижу в Xilinx SDK (может быть можно как-то настроить?). В настройках проекта в дефолтном состоянии установлены флаги для компилятора -ffunction-sections -fdata-sections и линкера --gc-sections (Enable garbage collector), которые и приводят к данной проблеме. Для кода int TestFunction(int x1, int x2); int main() { while(1) { } return 0; } int TestFunction(int x1, int x2) { return x1 + x2; } c установленными в опциях проекта галками Enable garbage collector получаем следующее в elf-файле Disassembly of section .vectors.reset: 00000000 <_start>: } return 0; } int TestFunction(int x1, int x2) { 0: b0000000 imm 0 4: b8080050 brai 80 // 50 <_start1> Disassembly of section .vectors.sw_exception: 00000008 <_vector_sw_exception>: 8: b0000000 imm 0 c: b808095c brai 2396 // 95c <_exception_handler> Disassembly of section .vectors.interrupt: 00000010 <_vector_interrupt>: 10: b0000000 imm 0 return x1 + x2; 14: b80809d0 brai 2512 // 9d0 <__interrupt_handler> Disassembly of section .vectors.hw_exception: 00000020 <_vector_hw_exception>: } 20: b0000000 imm 0 24: b80802f0 brai 752 // 2f0 <_hw_exception_handler> Disassembly of section .text: если убрать разрешение Enable garbage collector, то всё сразу круто (за исключением размера бинарника) Disassembly of section .vectors.reset: 00000000 <_start>: 0: b0000000 imm 0 4: b8080050 brai 80 // 50 <_start1> Disassembly of section .vectors.sw_exception: 00000008 <_vector_sw_exception>: 8: b0000000 imm 0 c: b808099c brai 2460 // 99c <_exception_handler> Disassembly of section .vectors.interrupt: 00000010 <_vector_interrupt>: 10: b0000000 imm 0 14: b8080a00 brai 2560 // a00 <__interrupt_handler> Disassembly of section .vectors.hw_exception: 00000020 <_vector_hw_exception>: 20: b0000000 imm 0 24: b8080330 brai 816 // 330 <_hw_exception_handler> Disassembly of section .text: Криво сформированный elf-файл и приводит к тому, что SDK (если в Debug Configurations поставить галку Stop at program entry) отображает выполнение кода, который не должен был выполняться (реально выполняется startup sequence crt0.S). Как исправить - вопрос открытый.
  5. Нашёл такую особенность, если в настройках компилятора установить Debug Level -> None (-g0), то картинка меняется. Баг SDK???
  6. Приветствую. При старте программы MicroBlaze и остановке на main() наблюдаю непонятное содержимое в стеке вызовов. Может кто сталкивался с подобным поведением и с чем оно связано? Думал это связано с С++ проектом, но нашёл аналогичную проблему и для проекта на С тут. Использую Vivado/SDK 2018.2, думал ситуация изменится при использовании Vitis 2020.1, но не помогло.
  7. Приветствую. Не могу найти в какой доке можно почитать про атрибуты для памяти, которые устанавливает: void Xil_SetTlbAttributes(UINTPTR Addr, u64 attrib); 1. Хочу выделить некэшируемую область памяти. 2. Хочу ограничить возможность записи в определённые области памяти.
  8. Так для анализа состояния пина много кода и не потребуется.
  9. Спасибо, попробую. По старту синтеза наверное будет правильнее чем по открытию проекта.
  10. для hook_open_project добавил cd $prj_dir, дальше получилось стартануть скрипт спасибо
  11. Можно пример, как стартануть скрипт из папки проекта по нажатию кнопки синтеза Такое set_property STEPS.SYNTH_DESIGN.TCL.PRE {C:/Data/report.tcl} [get_runs synth_1] не предлагать, спасибо.
  12. Попробовал так set_property STEPS.SYNTH_DESIGN.TCL.PRE "version/pre_synth.tcl" [get_runs synth_1] синтез погнал, реакции ноль, если явно указать полный путь через гуи - работает.
  13. Как из настроек проекта теперь достучаться к ::env(PWD), чтоб стартануть свой скрипт из папки проекта?
  14. Так он же целых пять минут сочинялся) set_param xicom.use_bitstream_version_check false puts "Script is processing" ### proc hook_proc {name hook_name} { if {[llength [namespace which {${name}_}]]==0} { rename ::${name} ::${name}_ rename ${hook_name} ::${name} } } ### proc hook_open_project args { puts "Hook of open_project" # processing input options for {set i 0} {$i < [llength $args]} {incr i} { set option [string trim [lindex $args $i]] switch -regexp -- $option { "-part" { incr i } "-read_only" { } "-quiet" { } "-verbose" { } default { # is incorrect switch specified? if { [regexp {^-} $option] } { send_msg_id Vivado-projutils-001 ERROR "Unknown option '$option', please type 'open_project -help' for usage info.\n" return } set prj_file [file normalize $option] } } } set prj_dir [file dirname $prj_file] set ::env(PWD) $prj_dir uplevel 1 ::open_project_ $args puts "Script is done!!!" } hook_proc "open_project" "hook_open_project" Пытаюсь разобраться, как оно работает, получаю лог *** Running vivado with args -log xczu9eg.vds -m64 -product Vivado -mode batch -messageDb vivado.pb -notrace -source xczu9eg.tcl ****** Vivado v2018.2 (64-bit) **** SW Build 2258646 on Thu Jun 14 20:02:38 MDT 2018 **** IP Build 2256618 on Thu Jun 14 22:10:49 MDT 2018 ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved. Sourcing tcl script '/home/andrei/Programs/Xilinx/Vivado/2018.2/scripts/Vivado_init.tcl' Script is processing source xczu9eg.tcl -notrace WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {11} -id {[BD 41-1271]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {10} -id {[BD 41-1306]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {3} -id {[BD 41-1271]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {4} -id {[BD 41-1306]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {5} -id {[BD 41-1271]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {7} -id {[BD 41-1271]} -suppress '. The existing rule will be replaced. WARNING: [Common 17-1361] You have specified a new message control rule that is equivalent to an existing rule with attributes ' -ruleid {6} -id {[BD 41-1306]} -suppress '. The existing rule will be replaced. add_files: Time (s): cpu = 00:00:07 ; elapsed = 00:00:07 . Memory (MB): peak = 2551.223 ; gain = 920.449 ; free physical = 1915 ; free virtual = 11697 Command: synth_design -top xczu9eg -part xczu9eg-ffvb1156-2-i Starting synth_design Attempting to get a license for feature 'Synthesis' and/or device 'xczu9eg' INFO: [Common 17-349] Got license for feature 'Synthesis' and/or device 'xczu9eg' INFO: Launching helper process for spawning children vivado processes INFO: Helper process launched with PID 1454 Что-то не так? hook_proc не вызывался Да, есть такое, спасибо.
  15. Форматирование какое-то видно было неправильное, ещё раз скопировал - не ругается. Но значение pwd не изменилось, на дефолтную директорию ссылается.
  16. Перед стартом синтеза, скрипт должен сгенерить константы для контроля версии. Я попробовал добавить, но всё не так просто) cd [get_property directory [current_project]]
  17. Вопрос в скриптах. Нужно опцию tcl.pre с относительным путём прописать.
  18. Приветствую. Возможно ли при открытии проекта в Vivado запустить TCL скрипт. Хочу, чтоб при при открытии проекта переменная PWD указывала на директорию проекта (без привязки к конкретной директории и ПК).
  19. Сделал аналогично. Не сразу нашёл эту доку, больше смотрел по ZynqMP, а там предлагают из FSBL делать переброс на рабочую прошивку, работает, но не понял зачем такие сложности, если можно просто поменять их местами. В моём случае самая обидная ситуация - залить прошивку с нерабочим Ethernet. Используется FreeRTOS и при обновлении hdf-файла настройки bsp всё время сбрасываются. Если не проконтролировать, высока вероятность получить нерабочее устройство. Хороший вариант со счётчиком загрузок, вообще думали в новой версии железа вытащить порт процессора, по которому загрузчик определял бы рабочий или аварийный режим запуска.
  20. LwIP link up/down

    Спасибо, с этим понятно. Думал так делать, но пока пытаюсь понять. есть ли стандартная опция/возможность. Если кабель дёргать то сообщения в stdout кидает (если не ошибаюсь), поэтому решил, что оно само мониторит состояние сети и возможно есть какая-то возможность привязаться к данному событию. //netif.h #if LWIP_NETIF_LINK_CALLBACK /** This function is called when the netif link is set to up or down */ netif_status_callback_fn link_callback; #endif /* LWIP_NETIF_LINK_CALLBACK */ #if LWIP_NETIF_LINK_CALLBACK void netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback); #endif /* LWIP_NETIF_LINK_CALLBACK */ Такое вот нахожу
  21. LwIP link up/down

    Приветствую. Есть ли какое-то событие/семафор/др. при срабатывании link up/down? Хочу сделать, чтобы задача спала, пока нет линка или засыпала, когда пропал.
  22. Что-то не могу повторить полученный ранее результат. Вопрос где хранится timestamp образа и как его туда поместить? Для формирования boot.bin используется bif-файл с содержимым: //arch = zynqmp; split = false; format = BIN the_ROM_image: { [pskfile]/home/user/workspace/xczu9eg/boot/psk0.pem [sskfile]/home/user/workspace/xczu9eg/boot/ssk0.pem [auth_params]spk_id = 0x00000000; ppk_select = 0 [fsbl_config]a53_x64, bh_auth_enable [bootloader, authentication = rsa]/home/user/workspace/xczu9eg/xczu9eg.sdk/fsbl/Debug/fsbl.elf [pmufw_image]/home/user/workspace/xczu9eg/xczu9eg.sdk/pmufw/Debug/pmufw.elf [authentication = rsa, destination_device = pl]/home/user/workspace/xczu9eg/xczu9eg.runs/impl_1/xczu9eg.bit [authentication = rsa, destination_cpu = a53-0, exception_level = el-3]/home/user/workspace/xczu9eg/xczu9eg.sdk/app_a53_0/Debug/app_a53_0.elf [authentication = rsa, destination_cpu = a53-1, exception_level = el-3]/home/user/workspace/xczu9eg/xczu9eg.sdk/app_a53_1/Debug/app_a53_1.elf }
×
×
  • Создать...