Jump to content

    
Sign in to follow this  
vladimirD

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

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

boot.log.txt

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

[    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

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

Share this post


Link to post
Share on other sites

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

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

Спасибо.

Share this post


Link to post
Share on other sites

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

 

Спасибо

 

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this