Перейти к содержанию
    

libmetal demo одновременно в R5_0 и R5_1: сложности

Добрый день, подскажите, пожалуйста, если кто сталкивался.

Задача: Я пытаюсь запустить 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пока не могу выложить, так как плата с другой прошивкой пока тестируется. Но точно были messages по запуску remoteproc0 и точно вообще не было ничего насчет remoteproc1

Выложу, как только получу доступ к плате

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Получил доступ к плате. Я прицепил файл с сообщениями dmesg.

Посмотрите, пожалуйста, надеюсь эта информация будет полезна для диагностики.

boot.log.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот эта фраза:

[    4.152172] remoteproc remoteproc0: Note: remoteproc is still under development and considered experimental.

вызывает желание выкинуть 4.9.0 и попробовать грузануть 4.14.0 отсюда

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня это выглядит вот так:

[    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

Так что меняйте ядро

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое за идею!

Я в-основном занимался обычными FPGA, поэтому в embedded Linux еще новичок. Можно попросить Вас набросать в общих деталях, как я могу заменить ядро в Petalinux?

Спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, что у Вас прописано в 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";

 

Спасибо

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ровно так, как написано тут . Правда пока есть некоторое непонимание, как правильно писать раздел power-domains

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел причину проблемы. Регионы DDR для R5_0 и R5_1 пересекались в system-user.dtsi

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если кому интересно, я приложил исправленный system-user.dtsi

system-user.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне ответили в Xilinx и предложили хороший пример system-user.dtsi для моего случая.

Когда закончу с ними общение, выложу сюда результаты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я спрашивал на их форуме, ответил их модератор. Я как все проверю, выложу сюда детали с комментариями

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...