Jump to content

    

novartis

Свой
  • Content Count

    416
  • Joined

  • Last visited

Community Reputation

0 Обычный

About novartis

  • Rank
    Местный

Контакты

  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

5946 profile views
  1. А еще вопрос. Сейчас удаленно из квартуса могу залить прошивку. В консоле 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 Что не так?
  2. Полное отключение фаервола на линукс машине помогло: systemctl stop firewalld Теперь буду думать какое правило надо прописать для jtadg
  3. машина с 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?
  4. так в 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 выделил, то должна же быть возможность сделать тоже самое в кернел модуле...
  5. 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) ) Ну продолжаю дальше искать решение
  6. С CMA и dma_alloc_coherent я разобрался 4 года назад (была OpenSuse 13.2, версия ядра 3.16), и не проблема сделать это и сейчас. Но нужно задействовать именно hugepages. Это повысит эффективность работы с памятью (будет меньше обращений к TLB).
  7. dma_alloc_coherent вернёт указатель на непрерывную физическую память, состоящую из восьми hugepage?
  8. На машине установлен CentOS (версия ядра 3.10.0-1127.el7.x86_64). Есть необходимость выделить огромные физически непрерывные куски памяти (несколько буферов по гигабайту к примеру). В user space программе я выделил 8 hugepage 1G с помощью mmap(), код подсмотрел здесь https://github.com/max0x7ba/atomic_queue/tree/master/src До запуска программы /proc/meminfo показывает, что доступно 13 Hugepage страниц, свободно 13 Hugepage страниц. При работающей программе количество свободных страниц = 5. Записываю, читаю данные в этих страницах. Ну как бы в user space задача решена. Но руководитель проекта говорит надо в кернел модуле восемь Hugepage 1G страниц выделить, а юзерские программы уже будут обращаться к этому кернел модулю и мапить себе эти буферы. Перерыл интернет, не могу найти как выделить Hugepage 1G в кернел модуле. Пните в нужную сторону.
  9. года два назад на алиэкспресс покупал, самые обычные. В один рейзер x16 вставлена плата с FPGA, в другой рейзер x16 вставлена сетевая карта. Эти два рейзера соединены между собой usb кабелем. К одному из этих рейзеров припаял витую пару к pcie refclk, другой конец витой пары припаял к рейзеру x1 - этот рейзер x1 вставляю в материнскую плату компа, от него и беру опорный клок для pcie. Ниоса нет. Сначала простую стейт машину набросал, потом реализовал простенький логический блок, который берет команды из памяти (чтобы команды мог без перепрошивки менять). Вместо сетевой карты цеплял NVME SSD диск, прочитал endpoint config space, запустил nvme контроллер (CC.EN = 1), посмотрел, что взводится ответный сигнал CSTS.RDY. Пока на этом остановился. Мне думается, что этот PCIe switch все у вас и портит.
  10. Да, все получилось. Соединил плату Стратикс 5 и плату сетевой карты через рейзер x8. Пробовал запитать в плис pcie корку от другой опорной тактовой частоты с платы, ничего не получалось (опорная частота должна быть с дедикейтед клок пин, должна находиться в том же регионе, что и пины линков и т.п.), поэтому в итоге припаял к райзеру витую пару (одна пара из обычного эзернет кабеля) и подал опорный клок с материнской платы. Root Complex завёлся. Прочитал root config space. Прочитал endpoint config space.
  11. тогда так делать не надо У вас есть данные - адресные входы для внешней мс sdram, и есть тактирующий эти данные клок ck. С фазой ck ничего специально придумывать не надо. Нужно оценить длину дорожек от пинов плис до микросхемы SDRAM. Подставить в констрейны и квартус там сам все разрулит. Как оценить длину дорожек и в какие констрейны подставлять - надо почитать мануалы от интела. Вот в том документе есть Board Delay (Data) и Board Delay (Clock) = 0.8ns. Надо подобные констрейны наколдовать.
  12. а оно так по даташиту требуется, чтобы PCK был с фазой 270 относительно данных?
  13. вместо всех этих команд, описывающих клоки pll, можно написать одну derive_pll_clocks Но у вас тут вроде еще имена clk и PCK привязываются к выходам pll. если PCK идет прям на выходную ножку, и не участвует в тактировании другой логики плис, то нет смысла в этой команде. Если это так, то не понятно, почему таймквест выдает ту диаграмму из первого вашего поста. Но можно прописать так: set_clock_groups -exclusive -group {clk PCK} -group {clk} Вы точно кварутсу об этом не сообщили другими констрейнами? В Assignment Editor'е нет записей на эти ножки?