Jump to content

    

Volkov

Свой
  • Content Count

    351
  • Joined

  • Last visited

Community Reputation

0 Обычный

About Volkov

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

Контакты

  • Сайт
    Array
  • ICQ
    Array

Recent Profile Visitors

3423 profile views
  1. Раньше, щелкнув правой кнопкой мыши у пина, автоматически к пину подключалась нет, и рисовалась. Теперь, появляется меню, вместо цепи. может это из за виндовс 10, или я давно проекты не создавал с нуля. Но это бесит, постоянно жать кнопку n, что бы рисовать цепь.
  2. 256 МБ, по умолчанию в настройках ядра стоит. Я увеличивал до 512, но это ничего не меняло. А есть простой пример, как по этой дороге пройти? Я не подниму это все, кажется.
  3. Эх, нужно было раньше попробовать без записи запустить В общем это не дма - это запись на диск, в какой то момент больше 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"; }; Буфер возвращает какую то кашу, из различных посылок. Видно, что данные содержат данные предидущих посылок, в каком то хаотичном порядке.
  4. Пытаюсь понять причину, и уже долго с эти сам подвис. Задача - передавать с 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
  5. Это не у ТС проблема - это петялинукс косячил. Создал новый проект, но в этот раз я изначально, перед petalinux-build ввел все адреса и размеры партов. И все заработало!!!!! Три дня я боролся фиг знает с чем.
  6. Это конфиг петалинукса. Я поменял и в у-буте - не помогло. Так это и есть - plaform-top.h, я туда скопировал всю эту ерунду.
  7. Я указал и адрес и размер, на скрине видно. И в 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 прописать.
  8. Мыши жрут то, на что у них есть хоть какие то примеры. Вот то, что я делаю. 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 И задав партишины и и их размеры, я ведь указываю с какого адреса, кто где живет. Видимо я что то упустил изначально.
  9. В petalinux-config устанавливаю размеры partition Затем из platform-auto.h копирую в plaform-top.h #define CONFIG_EXTRA_ENV_SETTINGS \ SERIAL_MULTI \ CONSOLE_ARG \ DFU_ALT_INFO_RAM \ PSSERIAL0 \ "nc=setenv stdout nc;setenv stdin nc;\0" \ "ethaddr=00:0a:35:00:22:01\0" \ "autoload=no\0" \ "sdbootdev=0\0" \ "clobstart=0x10000000\0" \ "netstart=0x10000000\0" \ "dtbnetstart=0x23fff000\0" \ "loadaddr=0x10000000\0" \ "bootsize=0x1000000\0" \ "bootstart=0x0\0" \ "boot_img=BOOT.BIN\0" \ "load_boot=tftpboot ${clobstart} ${boot_img}\0" \ "update_boot=setenv img boot; setenv psize ${bootsize}; setenv installcmd \"install_boot\"; run load_boot test_img; setenv img; setenv psize; setenv installcmd\0" \ "install_boot=sf probe 0 && sf erase ${bootstart} ${bootsize} && " \ "sf write ${clobstart} ${bootstart} ${filesize}\0" \ "bootenvsize=0x40000\0" \ "bootenvstart=0x1000000\0" \ "eraseenv=sf probe 0 && sf erase ${bootenvstart} ${bootenvsize}\0" \ "jffs2size=0x2000000\0" \ "jffs2start=0x3040000\0" \ "jffs2_img=rootfs.jffs2\0" \ "load_jffs2=tftpboot ${clobstart} ${jffs2_img}\0" \ "update_jffs2=setenv img jffs2; setenv psize ${jffs2size}; setenv installcmd \"install_jffs2\"; run load_jffs2 test_img; setenv img; setenv psize; setenv installcmd\0" \ "install_jffs2=sf probe 0 && sf erase ${jffs2start} ${jffs2size} && " \ "sf write ${clobstart} ${jffs2start} ${filesize}\0" \ "kernelsize=0x2000000\0" \ "kernelstart=0x1040000\0" \ "kernel_img=image.ub\0" \ "load_kernel=tftpboot ${clobstart} ${kernel_img}\0" \ "update_kernel=setenv img kernel; setenv psize ${kernelsize}; setenv installcmd \"install_kernel\"; run load_kernel test_crc; setenv img; setenv psize; setenv installcmd\0" \ "install_kernel=sf probe 0 && sf erase ${kernelstart} ${kernelsize} && " \ "sf write ${clobstart} ${kernelstart} ${filesize}\0" \ "cp_kernel2ram=sf probe 0 && sf read ${netstart} ${kernelstart} ${kernelsize}\0" \ "dtb_img=system.dtb\0" \ "load_dtb=tftpboot ${clobstart} ${dtb_img}\0" \ "update_dtb=setenv img dtb; setenv psize ${dtbsize}; setenv installcmd \"install_dtb\"; run load_dtb test_img; setenv img; setenv psize; setenv installcmd\0" \ "fault=echo ${img} image size is greater than allocated place - partition ${img} is NOT UPDATED\0" \ "test_crc=if imi ${clobstart}; then run test_img; else echo ${img} Bad CRC - ${img} is NOT UPDATED; fi\0" \ "test_img=setenv var \"if test ${filesize} -gt ${psize}\\; then run fault\\; else run ${installcmd}\\; fi\"; run var; setenv var\0" \ "netboot=tftpboot ${netstart} ${kernel_img} && bootm\0" \ "default_bootcmd=run cp_kernel2ram && bootm ${netstart}\0" \ "" Тут, в CONFIG_EXTRA_ENV_SETTINGS, все смещения и размеры правильные. bootsize=0x1000000 - 16 МБ, а boot.bin 6.6 MB. Дальше радел bootenv bootenvstart=0x1000000 bootenvsize=0x40000 После него идет kernel kernelstart=0x1040000 И я ожидал эти бутарги после загрузки увидеть в u-boot. Но когда я их вывожу, то вижу что они совсем другие bootenvstart=0x100000 kernelstart=0x140000 Я пробовал записать правильные смещения, для bootenvstart, но после этого u-boot не грузится. Проблема в том, что у меня грузятся дефолтные переменные, которые не соответствуют,тем что я установил в проекте. И я не знаю, откуда они берутся, я ожидал, что они будут браться из /project-spec/meta-user/recipes-bsp/u-boot/files/platform-top.h
  10. во время загрузки, получаю предупреждение Loading Environment from SPI Flash... SF: Detected n25q512a with page size 512 Bytes, erase size 128 KiB, total 128 MiB *** Warning - bad CRC, using default environment Это как бы понятно, бутарги не сохранялись. и грузятся те что по умолчанию Я установил в реталинукс-конфиг партишины, Скопировал CONFIG_EXTRA_ENV_SETTINGS в platform-top.h Но дефолтные бутарги не соответствуют тем что я установил. В итоге, kernel грузится не с того адреса, так как kernelstart не соответствует правильному смещению. И если я установлю правильное смещение и сохраню - u-boot после этого не грузится.
  11. "с угрозами обращения в суд, если ПО не будет куплено" - а могут и без предложений купить, сразу в суд подать.
  12. Analog Devices Files Patent Infringement Lawsuit Against Xilinx Dec 5 2019 - Norwood, MA Analog Devices, Inc. (NASDAQ: ADI), a leading global high-performance analog technology company, today announced that it has filed a patent infringement lawsuit against Xilinx, Inc. (Nasdaq: XLNX). The lawsuit focuses on the unauthorized use by Xilinx of several important ADI patents relating to converter technology in at least two of Xilinx’s High End Zynq UltraScale+ RFSoC products. “ADI is a market leader in analog, mixed-signal and power integrated circuit technologies and has one of the leading patent portfolios in the semiconductor industry. We have built this global leadership position through the diligent work of our employees throughout our company’s 55-year history, and our continued investment in research and development which totaled over $1 billion in the last fiscal year,” said Larry Weiss, Senior Vice President and General Counsel, Analog Devices. “We are committed to defending and protecting our intellectual property, which creates long-term value for all our stakeholders.” The lawsuit, filed in the United States District Court for the District of Delaware, seeks damages and an injunction that prevents Xilinx from selling any products that infringe ADI’s patents. The complaint can be viewed here. https://www.analog.com/en/about-adi/news-room/press-releases/2019/12-5-2019-adi-files-patent-infringement-lawsuit-against-xilinx.html
  13. Плата своя. Power loss при низкой нагрузке - два DC-DC по 0.6 Вт, и десять по 0.08 Вт. Это потребление под petalinux. Такое ощущение, что процессор не в простое, а загружен чем то.