

doom13
Свой-
Posts
1,575 -
Joined
-
Last visited
-
Это событие как часто происходит? Размер данных для отправки на ПК какой? Ещё можете в сторону AXI DataMover посмотреть.
-
Для случая DMA всё уже сделано за вас. Вам остаётся разобраться с работой DMA со стороны процессорной системы и сформировать из ваших "отчёты по 64бита" AXI4-Stream (разбить ваши данные на пакеты определённого размера, сформировать TLAST).
-
Там нет ничего сложного, интерфейс с пятью портами реализовать: m_axis_aclk, m_axis_tvalid, m_axis_tready, m_axis_tlast, m_axis_tdata[n-1:0]. Можно и без tready, поставите фифо между вашим ядром и AXI DMA, которое будет буферизировать данные на время перезарядки DMA.
-
Проблема с приёмом данных LTC2195
doom13 replied to Art55555's topic in Работаем с ПЛИС, области применения, выбор
Для Zynq UltraScale+ смотрите в сторону High Speed SelectIO. -
MicroBlaze (мусор в стеке вызовов)
doom13 replied to doom13's topic in Системы на ПЛИС - System on a Programmable Chip (SoPC)
Пока проблему вижу в 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). Как исправить - вопрос открытый. -
MicroBlaze (мусор в стеке вызовов)
doom13 replied to doom13's topic in Системы на ПЛИС - System on a Programmable Chip (SoPC)
Нашёл такую особенность, если в настройках компилятора установить Debug Level -> None (-g0), то картинка меняется. Баг SDK??? -
MicroBlaze (мусор в стеке вызовов)
doom13 replied to doom13's topic in Системы на ПЛИС - System on a Programmable Chip (SoPC)
Не меняется ничего. -
Приветствую. При старте программы MicroBlaze и остановке на main() наблюдаю непонятное содержимое в стеке вызовов. Может кто сталкивался с подобным поведением и с чем оно связано? Думал это связано с С++ проектом, но нашёл аналогичную проблему и для проекта на С тут. Использую Vivado/SDK 2018.2, думал ситуация изменится при использовании Vitis 2020.1, но не помогло.
-
Приветствую. Не могу найти в какой доке можно почитать про атрибуты для памяти, которые устанавливает: void Xil_SetTlbAttributes(UINTPTR Addr, u64 attrib); 1. Хочу выделить некэшируемую область памяти. 2. Хочу ограничить возможность записи в определённые области памяти.
-
MultiBoot UltraScale+
doom13 replied to doom13's topic in Системы на ПЛИС - System on a Programmable Chip (SoPC)
Так для анализа состояния пина много кода и не потребуется. -
Запустить TCL script в Vivado
doom13 replied to doom13's topic in Среды разработки - обсуждаем САПРы
Спасибо, попробую. По старту синтеза наверное будет правильнее чем по открытию проекта. -
Запустить TCL script в Vivado
doom13 replied to doom13's topic in Среды разработки - обсуждаем САПРы
для hook_open_project добавил cd $prj_dir, дальше получилось стартануть скрипт спасибо -
Запустить TCL script в Vivado
doom13 replied to doom13's topic in Среды разработки - обсуждаем САПРы
Можно пример, как стартануть скрипт из папки проекта по нажатию кнопки синтеза Такое set_property STEPS.SYNTH_DESIGN.TCL.PRE {C:/Data/report.tcl} [get_runs synth_1] не предлагать, спасибо. -
Запустить TCL script в Vivado
doom13 replied to doom13's topic in Среды разработки - обсуждаем САПРы
Попробовал так set_property STEPS.SYNTH_DESIGN.TCL.PRE "version/pre_synth.tcl" [get_runs synth_1] синтез погнал, реакции ноль, если явно указать полный путь через гуи - работает. -
Запустить TCL script в Vivado
doom13 replied to doom13's topic in Среды разработки - обсуждаем САПРы
Как из настроек проекта теперь достучаться к ::env(PWD), чтоб стартануть свой скрипт из папки проекта?