Jump to content

    

Volkov

Свой
  • Content Count

    356
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Volkov

  • Rank
    Местный
  • Birthday 02/20/1977

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

3683 profile views
  1. 100 Кинтексов 410-ых. Да, понимаю, это не тысяча, но хотелось хоть какую то скидку.
  2. Я смотрю цены Avnet -11к. Это при какой же партии настолько падает цена? Сколько я не пытался у меня ни разу не получилось договориться с дистрибутором о проектной цене.
  3. Посмотрел я цены на Версали... В общем за 2000 долларов(VM1102) 464 умножителя. И все это с ддр4, и вряд ли оно там на гигагерце будет работать. Так что я похоже пересаживаюсь на GPU. На версали АИ совсем фантастические цены, я не понимаю, где применяют чипы за 20 - 30 т долларов. Для меня потолок 1000 - 2000, дальше просто включать их стремаюсь.
  4. У меня LTC3636 кз делает по выходу со входом. Как я понял, некоторые дисюхи линеара очень чувствительны к статике. по началу я палил их блоком питания, и пару раз просто статикой. Хотя, точно понять что же их палило я так и не смог.
  5. Жду Версаль:) - долго жду. Там 600 должно еще лучше пойти.
  6. Раньше, щелкнув правой кнопкой мыши у пина, автоматически к пину подключалась нет, и рисовалась. Теперь, появляется меню, вместо цепи. может это из за виндовс 10, или я давно проекты не создавал с нуля. Но это бесит, постоянно жать кнопку n, что бы рисовать цепь.
  7. 256 МБ, по умолчанию в настройках ядра стоит. Я увеличивал до 512, но это ничего не меняло. А есть простой пример, как по этой дороге пройти? Я не подниму это все, кажется.
  8. Эх, нужно было раньше попробовать без записи запустить В общем это не дма - это запись на диск, в какой то момент больше 10 мс. Тогда - один вариант писать большим буфером. То есть, один наполняется - memcpy(args0.data_buf0[row_counter], rx_proxy_interface_p->buffer, row_length*sizeof(unsigned char)); другой в этот момент, в созданном потоке пишется pthread_create(&tid, NULL, file_save_thread, (void*) &args0); Но как я понимаю - скоростей, используя memcopy не достичь. Но как по другому - я не нашел нормального примера. Да и те, что у ксалинкса - вот пишут они что нужно добавить дерево устройств &sata { dma-coherent; } Но после этого у меня SATA диск не распознается. xilinx-psgtr fd400000.zynqmp_phy: Lane:0 type:2 protocol:2 pll_locked:yes [ 2.624206] ahci-ceva fd0c0000.ahci: AHCI 0001.0301 32 slots 2 ports 6 Gbps 0x3 impl platform mode [ 2.633162] ahci-ceva fd0c0000.ahci: flags: 64bit ncq sntf pm clo only pmp fbs pio slum part ccc sds apst [ 2.643471] scsi host0: ahci-ceva [ 2.647084] zynqmp_pll_disable() clock disable failed for dpll_int, ret = -13 [ 2.654258] scsi host1: ahci-ceva [ 2.657710] ata1: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x100 irq 37 [ 2.665622] ata2: SATA max UDMA/133 mmio [mem 0xfd0c0000-0xfd0c1fff] port 0x180 irq 37 2.983884] ata2: SATA link down (SStatus 0 SControl 330) 12.673522] ata1: softreset failed (1st FIS failed) [ 13.138302] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 330) [ 18.514306] ata1.00: qc timeout (cmd 0xec) [ 18.518401] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4) [ 18.986302] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 330) [ 29.266301] ata1.00: qc timeout (cmd 0xec) [ 29.270394] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4) [ 29.276486] ata1: limiting SATA link speed to 3.0 Gbps [ 29.746302] ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 320) [ 59.986302] ata1.00: qc timeout (cmd 0xec) [ 59.990399] ata1.00: failed to IDENTIFY (I/O error, err_mask=0x4) [ 69.996715] ata1: softreset failed (1st FIS failed) [ 80.001475] ata1: softreset failed (1st FIS failed) [ 115.006649] ata1: softreset failed (1st FIS failed) [ 115.011520] ata1: limiting SATA link speed to 1.5 Gbps [ 120.016630] ata1: softreset failed (1st FIS failed) [ 120.021503] ata1: reset failed, giving up И вроде бы все делаешь по AR#71584, как бы должно было работать. И ДМА, так же, где то у них в вики, может использовать когерентную память, но если добавить dma_proxy { dma-coherent; compatible ="xlnx,dma_proxy"; dmas = <&axi_dma_0 0 &axi_dma_0 1>; dma-names = "dma_proxy_tx", "dma_proxy_rx"; }; Буфер возвращает какую то кашу, из различных посылок. Видно, что данные содержат данные предидущих посылок, в каком то хаотичном порядке.
  9. Пытаюсь понять причину, и уже долго с эти сам подвис. Задача - передавать с PL в PS по DMA 262656 байт, с периодичностью 6.4 мс, и записывать их на SSD. Но передача, временами останавливается на время большее чем 10 мс. Я использую драйвер dma-proxy, прерывания через AXI GPIO. В прикладном приложении, я ожидаю прерывания, завершения передачи по ДМА, и записываю буфер в файл. while (file_number < max_files) { rx_proxy_interface_p->length = test_size; u_int32_t info = 1; /* unmask */ ssize_t nb = write(fd, &info, sizeof(info)); if (nb < sizeof(info)) { perror("write"); close(fd); exit(EXIT_FAILURE); } t0 = clock(); int ret = poll(&fds, 1, -1); if (ret >= 1) { nb = read(fd, &info, sizeof(info)); if (nb == sizeof(info)) { *((volatile unsigned *)(gpio_ptr + GPIO_IP_ISR)) = 0x1; ioctl(rx_proxy_fd, 0, &dummy); if (rx_proxy_interface_p->status != PROXY_NO_ERROR) printf("Proxy rx transfer error %d\n",row_counter); fwrite(rx_proxy_interface_p->buffer, 1, row_length, fp); t1 = clock(); } } else { printf("ret is not >= 1\n"); perror("poll()"); close(fd); exit(EXIT_FAILURE); } time_in_seconds = (double)(t1 - t0) / CLOCKS_PER_SEC; printf("max_time : %12.9f row : %d \n", time_in_seconds,row_counter); } И как бы оно все работает, время выполнения, которое я меряю не больше 2.5 мс. Но это не так. В плисе я вижу что время передачи по ДМА больше 8 мс. Изначально я писал в два буфера - один писал другой записывал в отдельном потоке. Но там, так же были большие задержки, да и memcpy - отбирало 2 мс, а когда запускался второй поток, то это время удваивалось. Поэтому я и решил писать по 200 КБ сразу в файл. Но и тут беда - непонятно почему ДМА простаивает. dma-p-test.c
  10. Это не у ТС проблема - это петялинукс косячил. Создал новый проект, но в этот раз я изначально, перед petalinux-build ввел все адреса и размеры партов. И все заработало!!!!! Три дня я боролся фиг знает с чем.
  11. Это конфиг петалинукса. Я поменял и в у-буте - не помогло. Так это и есть - plaform-top.h, я туда скопировал всю эту ерунду.
  12. Я указал и адрес и размер, на скрине видно. И в system-conf.dtsi появились разделы с правильными адресами. partition@0x00000000 { label = "boot"; reg = <0x00000000 0x01000000>; }; partition@0x01000000 { label = "bootenv"; reg = <0x01000000 0x00040000>; }; partition@0x01040000 { label = "kernel"; reg = <0x01040000 0x02000000>; }; partition@0x03040000 { label = "jffs2"; reg = <0x03040000 0x02000000>; }; Я их еще и в system-user.dtsi прописал partition@boot { /* for testing purpose */ label = "boot"; reg = <0x0 0x01000000>; }; partition@bootenv { /* for testing purpose */ label = "bootenv"; reg = <0x1000000 0x00040000>; }; partition@kernel { /* for testing purpose */ label = "kernel"; reg = <0x01040000 0x02000000>; }; partition@jffs2 { /* for testing purpose */ label = "jffs2"; reg = <0x03040000 0x02000000>; }; И в #define CONFIG_EXTRA_ENV_SETTINGS они есть. Но в u-boot попадают левые адреса, и размеры. Warning - bad CRC, using default environment Возможно default environment это не переменные из CONFIG_EXTRA_ENV_SETTINGS . Но я не знаю где эти default environment прописать.
  13. Мыши жрут то, на что у них есть хоть какие то примеры. Вот то, что я делаю. petalinux-config --get-hw-description=/home/user/petalinux/2019.2 petalinux-build petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga /home/user/petalinux/2019.2/zynqus/Zynq_TOP.bit --force И задав партишины и и их размеры, я ведь указываю с какого адреса, кто где живет. Видимо я что то упустил изначально.