vladimirD 0 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба Добрый день, подскажите, пожалуйста, если кто сталкивался. Задача: Я пытаюсь запустить libmetal demo из Xilinx UG1186 одновременно в двух процессорах R5_0 и R5_1. Настройки libmetal demo создают один /sys/class/remoteproc/remoteproc0 Соответственно, я могу запустить один экземпляр demo на процессоре R5_0 и не имею возможности запустить второй экземпляр на втором процессоре R5_1. Что я пытался сделать: Обновил Device Tree, добавив элементы для второго ядра R5_1 Пример взял из: https://github.com/Xilinx/meta-openamp/blob/rel-v2017.4/recipes-bsp/device-tree/files/zynqmp/openamp-overlay-split.dtsi Проблема: Petalinux запускает только один remoteproc0. Второй remoteproc1 отсутствует. Что я пропустил? Спасибо. Environment: Zynq UltraScale++, ядра: 4x A53 и 2x R5, Petalinux 2017.4, Vivado/SDK 2018.1, своя плата, детали в system-user.dtsi Мой system-user.dtsi прицеплен к посту. Вот выдержка, относящаяся к libmetal: reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; rproc_0_reserved: rproc@3ed000000 { no-map; reg = <0x0 0x3ed00000 0x0 0x2000000>; }; }; amba { /* Shared memory */ shm0: shm@0 { compatible = "shm_uio"; reg = <0x0 0x3ed80000 0x0 0x1000000>; }; /* IPI device */ ipi_amp: ipi@ff340000 { compatible = "ipi_uio"; reg = <0x0 0xff340000 0x0 0x1000>; interrupt-parent = <&gic>; interrupts = <0 29 4>; }; /* firmware memory nodes */ r5_0_tcm_a: tcm@ffe00000 { compatible = "mmio-sram"; reg = <0x0 0xFFE00000 0x0 0x10000>; pd-handle = <&pd_tcm_0_a>; }; r5_0_tcm_b: tcm@ffe20000 { compatible = "mmio-sram"; reg = <0x0 0xFFE20000 0x0 0x10000>; pd-handle = <&pd_tcm_0_b>; }; r5_1_tcm_a: tcm@ffe90000 { compatible = "mmio-sram"; reg = <0 0xFFE90000 0x0 0x10000>; pd-handle = <&pd_tcm_1_a>; }; r5_1_tcm_b: tcm@ffe92000 { compatible = "mmio-sram"; reg = <0 0xFFEB0000 0x0 0x10000>; pd-handle = <&pd_tcm_1_b>; }; elf_ddr_0: ddr@3ed00000 { compatible = "mmio-sram"; reg = <0x0 0x3ed00000 0x0 0x100000>; }; elf_ddr_1: ddr@3ed40000 { compatible = "mmio-sram"; reg = <0 0x3ed40000 0x0 0x40000>; }; test_r5_0: zynqmp_r5_rproc@0 { compatible = "xlnx,zynqmp-r5-remoteproc-1.0"; reg = <0x0 0xff9a0100 0 0x100>, <0x0 0xff340000 0 0x100>, <0x0 0xff9a0000 0 0x100>; reg-names = "rpu_base", "ipi", "rpu_glbl_base"; dma-ranges; core_conf = "split0"; srams = <&r5_0_tcm_a &r5_0_tcm_b &elf_ddr_0>; pd-handle = <&pd_r5_0>; interrupt-parent = <&gic>; interrupts = <0 29 4>; }; test_r5_1: zynqmp_r5_rproc@1 { compatible = "xlnx,zynqmp-r5-remoteproc-1.0"; reg =<0x0 0xff9a0200 0 0x100>, <0x0 0xff340000 0 0x100>, <0x0 0xff9a0000 0 0x100>; reg-names = "rpu_base", "ipi", "rpu_glbl_base"; dma-ranges; core_conf = "split1"; srams = <&r5_1_tcm_a &r5_1_tcm_b &elf_ddr_1>; pd-handle = <&pd_r5_1>; interrupt-parent = <&gic>; interrupts = <0 29 4>; } ; }; power-domains { pd_r5_0: pd_r5_0 { #power-domain-cells = <0x0>; pd-id = <0x7>; pd_r5_1: pd_r5_1 { #power-domain-cells = <0x0>; pd-id = <0x8>; }; pd_tcm_0_a: pd_tcm_0_a { #power-domain-cells = <0x0>; pd-id = <0xf>; }; pd_tcm_0_b: pd_tcm_0_b { #power-domain-cells = <0x0>; pd-id = <0x10>; }; pd_tcm_1_a: pd_tcm_1_a { #power-domain-cells = <0x0>; pd-id = <0x11>; }; pd_tcm_1_b: pd_tcm_1_b { #power-domain-cells = <0x0>; pd-id = <0x12>; }; }; system-user.dtsi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба dmesg бы еще приложить... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба Пока не могу выложить, так как плата с другой прошивкой пока тестируется. Но точно были messages по запуску remoteproc0 и точно вообще не было ничего насчет remoteproc1 Выложу, как только получу доступ к плате Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба Получил доступ к плате. Я прицепил файл с сообщениями dmesg. Посмотрите, пожалуйста, надеюсь эта информация будет полезна для диагностики. boot.log.txt Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба Вот эта фраза: [ 4.152172] remoteproc remoteproc0: Note: remoteproc is still under development and considered experimental. вызывает желание выкинуть 4.9.0 и попробовать грузануть 4.14.0 отсюда Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 13 февраля, 2019 Опубликовано 13 февраля, 2019 · Жалоба У меня это выглядит вот так: [ 2.403579] zynqmp_r5_remoteproc ff9a0100.zynqmp_r5_rproc: RPU core_conf: split0 [ 2.410644] remoteproc remoteproc0: ff9a0100.zynqmp_r5_rproc is available [ 2.417232] zynqmp_r5_remoteproc ff9a0200.zynqmp_r5_rproc: RPU core_conf: split1 [ 2.424631] remoteproc remoteproc1: ff9a0200.zynqmp_r5_rproc is available Так что меняйте ядро Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Спасибо большое за идею! Я в-основном занимался обычными FPGA, поэтому в embedded Linux еще новичок. Можно попросить Вас набросать в общих деталях, как я могу заменить ядро в Petalinux? Спасибо. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Кстати, что у Вас прописано в system-user.dtsi для test_r5_0 ? Я взял пример из libmetal demo и уменя так: reg = <0x0 0xff9a0100 0 0x100>, <0x0 0xff9a0000 0 0x100>; reg-names = "rpu_base", "rpu_glbl_base"; А в примере для OpenAmp (https://github.com/Xilinx/meta-openamp/blob/rel-v2017.4/recipes-bsp/device-tree/files/zynqmp/openamp-overlay-split.dtsi) так: reg = <0x0 0xff9a0100 0 0x100>, <0x0 0xff340000 0 0x100>, <0x0 0xff9a0000 0 0x100>; reg-names = "rpu_base", "ipi", "rpu_glbl_base"; Спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Ровно так, как написано тут . Правда пока есть некоторое непонимание, как правильно писать раздел power-domains Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Отличная ссылка, спасибо! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Нашел причину проблемы. Регионы DDR для R5_0 и R5_1 пересекались в system-user.dtsi Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 14 февраля, 2019 Опубликовано 14 февраля, 2019 · Жалоба Если кому интересно, я приложил исправленный system-user.dtsi system-user.zip Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба Мне ответили в Xilinx и предложили хороший пример system-user.dtsi для моего случая. Когда закончу с ними общение, выложу сюда результаты. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosha-z 3 18 февраля, 2019 Опубликовано 18 февраля, 2019 · Жалоба А кто ответил, кто-то на форуме или "внутри"? Можно в личку... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vladimirD 0 19 февраля, 2019 Опубликовано 19 февраля, 2019 · Жалоба Я спрашивал на их форуме, ответил их модератор. Я как все проверю, выложу сюда детали с комментариями Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться