Jump to content

    

novartis

Свой
  • Content Count

    423
  • Joined

  • Last visited

Community Reputation

0 Обычный

About novartis

  • Rank
    Местный

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

6112 profile views
  1. 17.1 Standard Спасибо за подсказку, надо глянуть, что в pro выдает (Quartus 19.4 Pro такой у меня установлен)
  2. atman скорей всего предлагает такую же плату, как в объявлении на авито, но за 35 тыс. руб.
  3. У Интела (Альтеры) есть готовые ip корки для вещественной арифметики. Мне понадобилось сложение. Если выбрать Single формат, то задержка на расчет будет 3 такта на частоте 250МГц и будут задействованы 2 аппаратных блока Аррии 10. А вот если выбрать Double формат, то задержка на расчет будет 11 тактов на частоте 250МГц, и почему то без аппаратных блоков. Это в интеле (алтере) инженеры ленивые и не захотели на аппаратных блоках реализацию писать, или для double есть какие то существенные отличия, сложности? Single: Double:
  4. можно поэкспериментировать с logic lock регионами, создать одинаковые регионы по размеру и по расположению и там, и там, и запретить размещение других модулей в этом регионе.
  5. Нужно сделать: 1). запись в регистр root_conf_space флагов Memory Space Enable, Bus Master Enable (X"00000006") TX TLP пакет: 00000006 00000004 0000000F 44000001 В ответ придет RX TLP пакет: 00000000 00000000 00000004 0A000000 2). запись в регистр root_conf_space номера шины Endpoint устройства (X"00" & PCIE_SECONDARY_BUS_NUM & PCIE_SECONDARY_BUS_NUM & X"00") TX TLP пакет: 00000000 00000018 0000010F 44000001 00000000 00000000 00000000 00010100 В ответ придет RX TLP пакет: 00000000 00000100 00000004 0A000000 3). Можно читать регистры root_conf_space Запрос: 00000000 00000000 0000020F 04000001 Ответ: 00000000 00000200 00000004 4A000001 00000000 00000000 00000000 00014987
  6. Купил эту плату на ebay в декабре, вместе с доставкой вышло чуть больше 5 тысяч рублей. Включил, лампочки мигают, на большее пока руки не дошли, купил именно из-за низкой цены и на предыдущей работе с ней много работал, нормальная плата. Помню у продавца их много было (>10 шт), сейчас нет, еще и в описании было написано с ошибкой, что это просто Arria GX, а не Arria V GX.
  7. Я в 2013 году разбирался с Bar Expansion Если Bar Expansion у Pcie устройства разрешен, то bios прочитает первые 4 байта этого бара, если там 0x55aa (вот сейчас уже не помню, может и 0xaa55), bios поймёт, что у вас действительно option rom, и bios его прочитает весь. Если же в памяти будут другие начальные байты, то bios все вычитывать не будет. Нужно убедиться, что процесс чтения Бара происходит корректно. Это вопрос к вашим разработчикам проекта для ПЛИС, пусть добавят signal tap и покажут, какие запросы приходят по pcie (должен прийти запрос на чтение Bar Expansion) и как они отвечают на эти запросы. "посмотреть в соответствующей области ОЗУ ПЭВМ" - это не то, это уже результат, а как пришли к этому результату можно понять только через signal tap. Вполне возможно, что старые процессоры читают по 32 бита за раз, а новые процессоры по 256 бит, а на такой вариант запроса у ваших разработчиков проекта для ПЛИС не корректно формируется ответ с данными. Если тут все будет в порядке, то надо читать документацию на AMD Ryzen и Intel Сascade Lake, смотреть как там устроена работа с option rom.
  8. А еще вопрос. Сейчас удаленно из квартуса могу залить прошивку. В консоле jtag удаленный видится. А залить из консоли прошивку удаленно не получается C:\altera\17.1\quartus\bin64>jtagconfig.exe 1) DE5 on 193.169.11.115 [3-2] 02E660DD 10AX115H1(.|E2|ES)/10AX115H2/.. C:\altera\17.1\quartus\bin64>quartus_pgm.exe -m jtag -c 1 -o "p;E:\Work\User\projects\pr.sof" Error (213013): Programming hardware cable not detected Что не так?
  9. Полное отключение фаервола на линукс машине помогло: systemctl stop firewalld Теперь буду думать какое правило надо прописать для jtadg
  10. машина с Linux Centos, графического рабочего стола нет, надо иногда сигналтап смотреть, поэтому пытаюсь поднять удаленный jtag, поставил квартус программатор 17.1. Запускаю ./jtagd && ./jtagconfig --enableremote pass4 netstat -l -t -p говорит: tcp 0 0 0.0.0.0:jtag-server 0.0.0.0:* LISTEN - lsof -i :1309 ничего не говорит (хотя должен сказать, что порт 1309 открыл jtagd) ./jtagconfig --enum 1) DE5 [3-9] 02E060DD 10AT115S1 Команда hostname возвращает имя машины PC1 На другой машине в этой же сети открываю программатор, Hardware Setup -> Jtag Settings -> Add Server. В появившемся окне нужно ввести Server Name и Server Password. Какое Server Name вводить? PC1?
  11. так в user space через mmap() я hugapage 1G выделил. Вообще первым шагом добавил в grub строку "hugepagesz=1g hugepages=64 default_hugepagesz=1g". После этого dmegs стал сообщать: HugeTLB: allocating 64 of page size 1 GB failed. Only allocated 13 hugepages. И в /proc/meminfo тоже написано, что HugePages есть: HugePages_Total: 13 HugePages_Free: 13 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 1048576 kB DirectMap4k: 125296 kB DirectMap2M: 2881536 kB DirectMap1G: 13631488 kB Когда запускаю свою user программу, которая выделяет восемь hugapage 1G (физический адрес каждой страницы передается в fpga и fpga начинает по pcie последовательно записывать эти страницы данными), то в /proc/meminfo уже написано: HugePages_Total: 13 HugePages_Free: 5 HugePages_Rsvd: 0 HugePages_Surp: 0 Hugepagesize: 1048576 kB DirectMap4k: 125296 kB DirectMap2M: 2881536 kB DirectMap1G: 13631488 kB Раз в user space через mmap() я hugapage 1G выделил, то должна же быть возможность сделать тоже самое в кернел модуле...
  12. u32 skp = 0x10000000; u32* kp0 = (u32*)kmalloc(skp, GFP_KERNEL | __GFP_COMP); u32* kp1 = (u32*)kmalloc(skp, GFP_KERNEL | __GFP_COMP); printk(KERN_INFO "skp = %d (0x%016llx)\n", skp, skp); printk(KERN_INFO "kp0 = %d (0x%016llx)\n", kp0, kp0); printk(KERN_INFO "kp1 = %d (0x%016llx)\n", kp1, kp1); u32 svp = 0x10000000; u32* vp0 = (u32*)vmalloc(svp); u32* vp1 = (u32*)vmalloc(svp); printk(KERN_INFO "svp = %d (0x%016llx)\n", svp, svp); printk(KERN_INFO "vp0 = %d (0x%016llx)\n", vp0, vp0); printk(KERN_INFO "vp1 = %d (0x%016llx)\n", vp1, vp1); Ага, тоже нашел этот ответ, попробовал, выдает следующее: [ 1266.791973] skp = 268435456 (0x0000000010000000) [ 1266.791975] kp0 = 0 (0x0000000000000000) [ 1266.791976] kp1 = 0 (0x0000000000000000) [ 1266.791976] svp = 268435456 (0x0000000010000000) [ 1266.798007] vp0 = 1073762304 (0xffffa4f540005000) [ 1266.830376] vp1 = 1342201856 (0xffffa4f550006000) kmalloc() вернул нул, не смог выделить 256 МБ буферы. vmalloc() смог выделить. Задействованы ли при этом hugepage в 2 МБ не знаю. Hugepage 1G не задействованы, по-прежнему свободных 13 штук. Если уменьшить размер запрашиваемого буфера, то kmalloc() и vmalloc() успешно возвращают указатели на память. Если задать размер в гигабайт (0x40000000), то система падает, уходит в ребут (из-за vmalloc(0x40000000) ) Ну продолжаю дальше искать решение
  13. С CMA и dma_alloc_coherent я разобрался 4 года назад (была OpenSuse 13.2, версия ядра 3.16), и не проблема сделать это и сейчас. Но нужно задействовать именно hugepages. Это повысит эффективность работы с памятью (будет меньше обращений к TLB).
  14. dma_alloc_coherent вернёт указатель на непрерывную физическую память, состоящую из восьми hugepage?