sheynmanyu 0 25 апреля, 2018 Опубликовано 25 апреля, 2018 (изменено) · Жалоба Здравствуйте! Можно ли в Xilinx SDK (v2018.1) написать приложение для работы с AXI-DMA для ОС Linux? Как настроить SDK, чтобы не появлялось вопросов рядом с #include<something.h>? И как прописать пути для того, чтобы суметь подключить linux/dmaengine.h (при компиляции приложения пишет, что нет такого файла)? Собрала для zedboard linux_xlnx с Xilinx git, запустила, все работает. В SDK указала репозитории для device-tree-xlnx и linux_xlnx. Хочу написать приложение, которое позволяло бы инициировать прием данных через AXI-DMA. В моем device-tree прописан блок DMA и указаны драйверы в файле pl.dtsi: / { amba_pl: amba_pl { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges; axi_dma_0: dma@40400000 { #dma-cells = <1>; clock-names = "s_axi_lite_aclk m_axi_sg_aclk m_axi_s2mm_aclk"; clocks = <&clkc 15>, <&clkc 15>; compatible = "xlnx,axi-dma-1.00.a"; interrupt-names = "s2mm_introut"; interrupt-parent = <&intc>; interrupts = <0 30 4>; reg = <0x40400000 0x10000>; xlnx,addrwidth = <0x20>; dma-channel@40400030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0 30 4>; xlnx,datawidth = <0x20>; xlnx,device-id = <0x0>; }; }; }; }; В system-top.dts файл pl.dtsi подключен. SDK выдает вот такую ошибку (см картинку). И смущает еще одно - вопросы рядом с include. 1. Можно ли вообще написать в SDK приложение, работающее с axi-dma драйвером? Или надо как-то отдельно писать свой драйвер, который будет обращаться к axi-dma драйверу, и к которому сможет обращаться мое приложение? 2. Как убрать вопросы рядом с #include? Изменено 25 апреля, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 27 апреля, 2018 Опубликовано 27 апреля, 2018 · Жалоба Вообще я на своей плате смотрел dmesg и драйвер дма в петалинуксе вроде как присутствует Вроде в TRM был описан пример как можно с дма работать Насчет вопросов - скорей всего линкеру не хватает файлов - добавить нужные папки, я бы попробовал скормить ему путь к ядру Очень интересен результат! Юлия, отпишитесь, пожалуйста, как это все поднимите Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 3 мая, 2018 Опубликовано 3 мая, 2018 (изменено) · Жалоба Вообще я на своей плате смотрел dmesg и драйвер дма в петалинуксе вроде как присутствует Вроде в TRM был описан пример как можно с дма работать Очень интересен результат! Юлия, отпишитесь, пожалуйста, как это все поднимите C Petalinux 2018 у меня возникли сложности: в SDK изменился компилятор для 32-разрядных arm. Дождалась, когда выйдет petalinux 2018.1, изменила в настройках ядра префикс для компилятора на arm-linux-gnueabihf-... В качестве префикса для кросс-компилятора указала его же: export CROSS_COMPILE=arm-linux-gnueabihf- и все собралось! :smile3046: Изменено 4 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 7 мая, 2018 Опубликовано 7 мая, 2018 · Жалоба Вообще я на своей плате смотрел dmesg и драйвер дма в петалинуксе вроде как присутствует Пока столкнулась вот с такой проблемой: root@zedboard_dma_linux:~# dmesg | grep dma dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 ERROR: could not get clock /amba_pl/dma@40400000:m_axi_s2mm_aclk(2) xilinx-vdma 40400000.dma: Xilinx AXI DMA Engine Driver Probed!! Как устранить ошибку? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 7 мая, 2018 Опубликовано 7 мая, 2018 (изменено) · Жалоба Пока столкнулась вот с такой проблемой: ERROR: could not get clock /amba_pl/dma@40400000:m_axi_s2mm_aclk(2) попробуйте переписать с таким синтаксисом: clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk"; еще можно гуглю скормить строку ошибки или чуть проще "xilinx dma 40400000", там куча solved попадается.. Изменено 8 мая, 2018 пользователем Jury093 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 8 мая, 2018 Опубликовано 8 мая, 2018 (изменено) · Жалоба попробуйте переписать с таким синтаксисом: clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk"; еще можно гуглю скормить строку ошибки или чуть проще "xilinx dma 40400000", там куча solved попадается.. Эмм, а в каком файле мне это переписать? Просто у меня сейчас petalinux, и я абсолютно без понятия, откуда он берет файлы, на основе которых потом генерирует systеm.dtb. Более того, в приведенном выше pl.dtsi меня смущает число каналов и число clk. Канала указано 3, а clk всего два. Во всех примерах, которые мне встречались, эти числа совпадают: каналов 3 и clk три. Более того, в дизайне режим SG вообще не включен. Откуда он его взял в pl.dtsi? Да, сейчас pl.dtsi выглядит так: / { amba_pl: amba_pl { #address-cells = <1>; #size-cells = <1>; compatible = "simple-bus"; ranges; axi_dma_0: dma@40400000 { #dma-cells = <1>; clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_s2mm_aclk"; clocks = <&clkc 15>, <&clkc 15>; compatible = "xlnx,axi-dma-1.00.a"; interrupt-names = "s2mm_introut"; interrupt-parent = <&intc>; interrupts = <0 30 4>; reg = <0x40400000 0x10000>; xlnx,addrwidth = <0x20>; dma-channel@40400030 { compatible = "xlnx,axi-dma-s2mm-channel"; dma-channels = <0x1>; interrupts = <0 30 4>; xlnx,datawidth = <0x20>; xlnx,device-id = <0x0>; }; }; }; }; Интересный вопрос: а для нормальной работы dmaengine SG должен быть включен? Есть у кого-нибудь под рукой ссылка на рабочий дизайн? Изменено 8 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 8 мая, 2018 Опубликовано 8 мая, 2018 · Жалоба Эмм, а в каком файле мне это переписать? Просто у меня сейчас petalinux, и я абсолютно без понятия, откуда он берет файлы, на основе которых потом генерирует systеm.dtb. Более того, в приведенном выше pl.dtsi меня смущает число каналов и число clk. Канала указано 3, а clk всего два. Во всех примерах, которые мне встречались, эти числа совпадают: каналов 3 и clk три. Более того, в дизайне режим SG вообще не включен. Откуда он его взял в pl.dtsi? Да, сейчас pl.dtsi выглядит так: понятно, просто в вашем исходном сообщение был фрагмент dts, собственно правка к нему и относилась.. судя по тому же инету вам надо поправить на 3, типа clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>; и пересобрать либо отдельно dtb, либо (как у вас там устроено не знаю) ядро в комплекте с dtb запросто может быть, что для вашего ядра этот драйвер broken, тут либо локальную доку шерстить, или в инете искать инфу/патчи откуда берет? скорее всего в недрах пакета есть архив или ветка с шаблонами, оттуда и генерятся исходные dtsi, второй вариант - тянется стандартное ядро и на него накладывают патчи и создаются dtsi попробуйте все же изменить pl.dtsi и обновить сборку, желательно без полной пересборки.. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 10 мая, 2018 Опубликовано 10 мая, 2018 (изменено) · Жалоба откуда берет? скорее всего в недрах пакета есть архив или ветка с шаблонами, оттуда и генерятся исходные dtsi, второй вариант - тянется стандартное ядро и на него накладывают патчи и создаются dtsi попробуйте все же изменить pl.dtsi и обновить сборку, желательно без полной пересборки.. я пробовала обновлять: не помогло. Банально не собралось. но когда я в дизайне разрешила scatter-gather (он, в общем-то, мне не очень нужен. Но раз драйвер просит...) - все собралось и заработало. И правильно сгенерировались файлы dtsi, и ошибок в dmesg не стало! Но: не удается запустить на выполнение dmatest. Правильно ли я понимаю? После ввода команды root@simple_loop_dma:/sys/module# ls /sys/class/dma dma0chan0 dma0chan2 dma0chan4 dma0chan6 dma1chan0 dma0chan1 dma0chan3 dma0chan5 dma0chan7 dma1chan1 появляется список dma-каналов. При этом каналы dma0chan* - это DMA PL330, то есть DMA из PS части, а dma1chan* - это AXI-DMA? В /sys/module/ у меня есть и axidmatest и dmatest. При этом, в соответствии с https://www.kernel.org/doc/html/v4.15/drive...ne/dmatest.html мне удалось запустить на выполнение dmatest с каналом dma0chan*. Но для dma1chan* ничего не выходит. Тест не запускается. В ответ на команду root@simple_loop_dma:/# dmesg | grep dma выводится dma-pl330 f8003000.dmac: Loaded driver for PL330 DMAC-241330 dma-pl330 f8003000.dmac: DBUFF-128x8bytes Num_Chans-8 Num_Peri-4 Num_Events-16 xilinx-vdma 40400000.dma: Xilinx AXI DMA Engine Driver Probed! Как проверить работоспособность моего axi dma блока??? Подскажите, плиз! Изменено 10 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jury093 2 10 мая, 2018 Опубликовано 10 мая, 2018 (изменено) · Жалоба я пробовала обновлять: не помогло. Банально не собралось. но когда я в дизайне разрешила scatter-gather (он, в общем-то, мне не очень нужен. Но раз драйвер просит...) - все собралось и заработало. И правильно сгенерировались файлы dtsi, и ошибок в dmesg не стало! так что в результате помогло - коррекция dts или разрешение "scatter-gather"? api/dmaengine/dmatest.html"]https://www.kernel.org/doc/html/v4.15/drive...ne/dmatest.html[/url] мне удалось запустить на выполнение dmatest с каналом dma0chan*. Но для dma1chan* ничего не выходит. Тест не запускается. а как не запускается? система виснет? в консоль что-нить пишет? натолкайте отладочных printf("я тут step1\n"); в исходник dmatest и попробуйте отловить, где валится софтина в момент работы с dma1chan Как проверить работоспособность моего axi dma блока??? у меня такой системы нет, т.ч. только общие советы: - проверьте, что необходимые ресурсы и права для dmaXchan присутствуют и одинаковые - валидность прерываний, адресов блоков регистров прерывания: cat /proc/interrupts блоки регистров cat /proc/iomem возможно тут: http://www.wiki.xilinx.com/DMA+Drivers+-+Soft+IPs есть что полезное как наиболее вероятное, раз для канала0 работает, то не прописано или прописано неправильно все тоже для канала1 как версия - там тред с solved: https://forums.xilinx.com/t5/Embedded-Linux...p/522755/page/6 "Ok, finally I have done it, by copying axi_dma_0 entry to system_user.dtsi changing xlnx,device-id of its second channel to <0x1> and changing "misc_clk_0" in it to "clkc 15"." Изменено 10 мая, 2018 пользователем Jury093 Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 14 мая, 2018 Опубликовано 14 мая, 2018 (изменено) · Жалоба Как указать petalinux 2018.1, где лежат необходимые библиотеки? Вот здесь предлагается приложение создавать с помощью Xilinx SDK, но необходимо прописать путь к sysroots/что-то там. Беда в том, что у меня эта папка в проекте пуста, даже после вызова команды petalinux-build -c rootfs. Как прописать пути к linux/delay.h и прочим include? где их вообще искать? :1111493779: :crying: Изменено 14 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 15 мая, 2018 Опубликовано 15 мая, 2018 (изменено) · Жалоба Если сюда еще хоть кто-то заглядывает?.. Нашла в описании команду по созданию папки для SDK: petalinux-build --sdk и потом petalinux-package --sysroot -s|--sdk <custom sdk path> -d|--dir <custom directory path Есть надежда, что это то, что мне нужно. Но: на выполнение команды petalinux-build --sdk ушло больше 2-х часов! Это ведь что-то ненормальное? Как сократить время??? ОС - Ubuntu 16.04 LTS на виртуальной машине. Свободного места на диске около 47 ГБ из 100. Petalinux 2018.1. Изменено 15 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 15 мая, 2018 Опубликовано 15 мая, 2018 · Жалоба Еще подкрутить параметры виртуалки в сторону увеличения производительности или наконец поставить линукс на нормальный комп Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 15 мая, 2018 Опубликовано 15 мая, 2018 · Жалоба Еще подкрутить параметры виртуалки в сторону увеличения производительности или наконец поставить линукс на нормальный комп Эмм... А можно ли не снося убунту подкрутить виртуалку? Оперативка выделена почти вся. Вчера ругалась на нехватку места, но с тех пор я удалила около 6 ГБ... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Ivan_ 0 15 мая, 2018 Опубликовано 15 мая, 2018 · Жалоба мне кажется что в таких процессах важен процессор а можешь огласить характеристики своего компа? и характиристики виртуальки - сколько там выделено ресурсов Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sheynmanyu 0 15 мая, 2018 Опубликовано 15 мая, 2018 (изменено) · Жалоба мне кажется что в таких процессах важен процессор а можешь огласить характеристики своего компа? и характиристики виртуальки - сколько там выделено ресурсов Она ругается на оставшееся место на диске. Всего 100 ГБ, до запуска build --sdk оставалось около 30 ГБ. Перед выдачей ошибок система ругнулась на оставшиеся 700 МБ на жестком диске :maniac: yulia@yulia-U:~/ZYNQ/xilinx_linux/my_projects/simple_loop/simple_loop_dma$ df -k -T Filesystem Type 1K-blocks Used Available Use% Mounted on udev devtmpfs 9734880 0 9734880 0% /dev tmpfs tmpfs 1952248 9308 1942940 1% /run /dev/sda1 ext4 80056152 73746076 2220376 98% / tmpfs tmpfs 9761224 216 9761008 1% /dev/shm tmpfs tmpfs 5120 4 5116 1% /run/lock tmpfs tmpfs 9761224 0 9761224 0% /sys/fs/cgroup VM_Shared_Folder vboxsf 567159508 50101244 517058264 9% /media/sf_VM_Shared_Folder tmpfs tmpfs 1952248 56 1952192 1% /run/user/1000 И информация о директории с проектом petalinux yulia@yulia-U:~/ZYNQ/xilinx_linux/my_projects/simple_loop/simple_loop_dma$ du ./build/ -h --max-depth=1 2,6M ./build/cache 1,1G ./build/sstate-cache 192K ./build/conf 4,5G ./build/downloads 740K ./build/misc 16G ./build/tmp 22G ./build/ Что из этого всего можно удалить, но не тратить при этом кучу времени на повторное скачивание при редактировании проекта? Изменено 15 мая, 2018 пользователем sheynmanyu Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться