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

doom13

Свой
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о doom13

  • Звание
    Профессионал
    Профессионал
  • День рождения 09.02.1982

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Посетители профиля

8 861 просмотр профиля
  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), чтоб стартануть свой скрипт из папки проекта?
×
×
  • Создать...