реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Closed TopicStart new topic
> Xilinx linux + SDK + dma driver
sheynmanyu
сообщение Apr 25 2018, 14:28
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Здравствуйте!
Можно ли в 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?

Сообщение отредактировал sheynmanyu - Apr 25 2018, 14:45
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение Apr 27 2018, 06:29
Сообщение #2


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



Вообще я на своей плате смотрел dmesg и драйвер дма в петалинуксе вроде как присутствует
Вроде в TRM был описан пример как можно с дма работать

Насчет вопросов - скорей всего линкеру не хватает файлов - добавить нужные папки, я бы попробовал скормить ему путь к ядру

Очень интересен результат! Юлия, отпишитесь, пожалуйста, как это все поднимите


--------------------
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 3 2018, 15:48
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(_Ivan_33 @ Apr 27 2018, 09:29) *
Вообще я на своей плате смотрел dmesg и драйвер дма в петалинуксе вроде как присутствует
Вроде в TRM был описан пример как можно с дма работать

Очень интересен результат! Юлия, отпишитесь, пожалуйста, как это все поднимите

C Petalinux 2018 у меня возникли сложности: в SDK изменился компилятор для 32-разрядных arm. Дождалась, когда выйдет petalinux 2018.1, изменила в настройках ядра префикс для компилятора на arm-linux-gnueabihf-... В качестве префикса для кросс-компилятора указала его же: export CROSS_COMPILE=arm-linux-gnueabihf- и все собралось! smile3046.gif

Сообщение отредактировал sheynmanyu - May 4 2018, 12:57
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 7 2018, 16:36
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(_Ivan_33 @ Apr 27 2018, 09:29) *
Вообще я на своей плате смотрел 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!!
Как устранить ошибку?
Go to the top of the page
 
+Quote Post
Jury093
сообщение May 7 2018, 21:02
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(sheynmanyu @ May 7 2018, 19:36) *
Пока столкнулась вот с такой проблемой:
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 попадается..

Сообщение отредактировал Jury093 - May 8 2018, 06:34
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 8 2018, 11:19
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(Jury093 @ May 8 2018, 00:02) *
попробуйте переписать с таким синтаксисом:
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 должен быть включен? Есть у кого-нибудь под рукой ссылка на рабочий дизайн?

Сообщение отредактировал sheynmanyu - May 8 2018, 13:54
Go to the top of the page
 
+Quote Post
Jury093
сообщение May 8 2018, 21:44
Сообщение #7


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(sheynmanyu @ May 8 2018, 14:19) *
Эмм, а в каком файле мне это переписать? Просто у меня сейчас 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 и обновить сборку, желательно без полной пересборки..
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 10 2018, 07:38
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(Jury093 @ May 9 2018, 00:44) *
откуда берет? скорее всего в недрах пакета есть архив или ветка с шаблонами, оттуда и генерятся исходные 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 блока??? Подскажите, плиз!

Сообщение отредактировал sheynmanyu - May 10 2018, 13:36
Go to the top of the page
 
+Quote Post
Jury093
сообщение May 10 2018, 21:09
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 959
Регистрация: 11-01-06
Из: Санкт-Петербург
Пользователь №: 13 050



Цитата(sheynmanyu @ May 10 2018, 10:38) *
я пробовала обновлять: не помогло. Банально не собралось. но когда я в дизайне разрешила 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"."

Сообщение отредактировал Jury093 - May 10 2018, 21:14
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 14 2018, 11:58
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Как указать petalinux 2018.1, где лежат необходимые библиотеки?
Вот здесь предлагается приложение создавать с помощью Xilinx SDK, но необходимо прописать путь к sysroots/что-то там. Беда в том, что у меня эта папка в проекте пуста, даже после вызова команды petalinux-build -c rootfs. Как прописать пути к linux/delay.h и прочим include? где их вообще искать? 1111493779.gif crying.gif

Сообщение отредактировал sheynmanyu - May 14 2018, 12:00
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 15 2018, 10:40
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Если сюда еще хоть кто-то заглядывает?..
Нашла в описании команду по созданию папки для 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.

Сообщение отредактировал sheynmanyu - May 15 2018, 10:42
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение May 15 2018, 10:46
Сообщение #12


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



Еще подкрутить параметры виртуалки в сторону увеличения производительности или наконец поставить линукс на нормальный комп


--------------------
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 15 2018, 10:50
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(_Ivan_33 @ May 15 2018, 13:46) *
Еще подкрутить параметры виртуалки в сторону увеличения производительности или наконец поставить линукс на нормальный комп

Эмм... А можно ли не снося убунту подкрутить виртуалку? Оперативка выделена почти вся. Вчера ругалась на нехватку места, но с тех пор я удалила около 6 ГБ...
Go to the top of the page
 
+Quote Post
_Ivan_33
сообщение May 15 2018, 11:43
Сообщение #14


fpga designer
****

Группа: Свой
Сообщений: 613
Регистрация: 20-04-08
Из: Зеленоград
Пользователь №: 36 928



мне кажется что в таких процессах важен процессор
а можешь огласить характеристики своего компа?

и характиристики виртуальки - сколько там выделено ресурсов


--------------------
Go to the top of the page
 
+Quote Post
sheynmanyu
сообщение May 15 2018, 11:53
Сообщение #15


Участник
*

Группа: Участник
Сообщений: 66
Регистрация: 5-07-17
Пользователь №: 97 975



Цитата(_Ivan_33 @ May 15 2018, 14:43) *
мне кажется что в таких процессах важен процессор
а можешь огласить характеристики своего компа?

и характиристики виртуальки - сколько там выделено ресурсов

Она ругается на оставшееся место на диске. Всего 100 ГБ, до запуска build --sdk оставалось около 30 ГБ. Перед выдачей ошибок система ругнулась на оставшиеся 700 МБ на жестком диске maniac.gif
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/

Что из этого всего можно удалить, но не тратить при этом кучу времени на повторное скачивание при редактировании проекта?

Сообщение отредактировал sheynmanyu - May 15 2018, 13:41
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 21:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01525 секунд с 7
ELECTRONIX ©2004-2016