<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: I.MX8MP boot CM7 via linux kernel remoteproc in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/I-MX8MP-boot-CM7-via-linux-kernel-remoteproc/m-p/1524595#M195339</link>
    <description>&lt;P&gt;I tried to understand how u-boot boot up cm7.&lt;/P&gt;&lt;P&gt;Following is the uboot code of bootaux.&lt;/P&gt;&lt;P&gt;&lt;A href="https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/mach-imx/imx_bootaux.c?h=imx_v2020.04_5.4.24_2.1.0" target="_blank" rel="noopener"&gt;https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/mach-imx/imx_bootaux.c?h=imx_v2020.04_5.4.24_2.1.0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Actually, it just copy stack and pc address to&amp;nbsp;&lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR(0x7e0000) and call SMCC API. Then i try to do the same things in driver.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;__iomem&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;io_tcm_addr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;= &lt;/SPAN&gt;&lt;SPAN&gt;ioremap&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;SPAN class=""&gt;0x7e0000&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;8&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;writel&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stack&lt;/SPAN&gt;&lt;SPAN&gt;, io_tcm_addr&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;writel&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;pc&lt;/SPAN&gt;&lt;SPAN&gt;, io_tcm_addr&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;+ &lt;/SPAN&gt;&lt;SPAN&gt;4&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;However, it didn't bring any lucky, system hang happened when writting the stack addr to tcm addr, it looks like the same result as loading fw failed with TCM build since they both do the write operation to the address 0x7e0000.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;There're more reason to belive that A core can not access the TCM area at the time.&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Since&amp;nbsp;uboot has the permisson to access TCM, i did test below:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I tried to boot cm7 with uboot, and stop it via below commands when kernel boot up.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo stop &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;/DIV&gt;&lt;DIV&gt;and then start it via&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo hello_world.elf &amp;gt; /sys/class/remoteproc/remoteproc0/firmware&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo start &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;As as result, CM7 is booted up successfully and running.&lt;/DIV&gt;&lt;DIV&gt;i belive that the kick command works because the stack and pc are already written to 0x7e0000 on uboot phase.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Booting up cm7 is not my purpose,&amp;nbsp;&lt;/SPAN&gt;i'm going to move forward with this workaround. However, if anyone of you know the detail, pls help comment.&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;#ifndef CONFIG_IMX8&lt;/SPAN&gt;
&lt;SPAN class=""&gt;int&lt;/SPAN&gt; &lt;SPAN class=""&gt;arch_auxiliary_core_up&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;core_id&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;ulong&lt;/SPAN&gt; &lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;-&lt;/SPAN&gt;&lt;SPAN class=""&gt;EINVAL&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;#ifdef CONFIG_IMX8M&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#else&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;/*&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 * handling ELF64 binaries&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 * isn't supported yet.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 */&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;valid_elf_image&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;))&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;0x0&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;load_elf_image_phdr&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
			&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;CMD_RET_FAILURE&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;}&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;/*&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * Assume binary file with vector table at the beginning.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * Cortex-M4 vector tables start with the stack pointer (SP)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * and reset vector (initial PC).&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 */&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#endif&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;printf&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"## Starting auxiliary core stack = 0x%08X, pc = 0x%08X...&lt;/SPAN&gt;&lt;SPAN class=""&gt;\n&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
	       &lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;/* Set the stack and pc to MCU bootROM */&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;writel&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;writel&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;flush_dcache_all&lt;/SPAN&gt;&lt;SPAN class=""&gt;();&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;/* Enable MCU */&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#ifdef CONFIG_IMX8M&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;call_imx_sip&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;IMX_SIP_SRC&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;IMX_SIP_SRC_MCU_START&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#else&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;clrsetbits_le32&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;SRC_BASE_ADDR&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;SRC_M4_REG_OFFSET&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
			&lt;SPAN class=""&gt;SRC_M4C_NON_SCLR_RST_MASK&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;SRC_M4_ENABLE_MASK&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#endif&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 20 Sep 2022 02:51:53 GMT</pubDate>
    <dc:creator>LihuaLiu123</dc:creator>
    <dc:date>2022-09-20T02:51:53Z</dc:date>
    <item>
      <title>I.MX8MP boot CM7 via linux kernel remoteproc</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-MX8MP-boot-CM7-via-linux-kernel-remoteproc/m-p/1523833#M195278</link>
      <description>&lt;P&gt;&lt;FONT color="#000000"&gt;hi all,&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000"&gt;i'm trying to boot cm7 via remoteproc driver "imx_rproc" but failed with both TCM and ddr_debug build.&lt;/FONT&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;OL&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;boot with TCM build:&lt;/FONT&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;i disabled the imx_rpmsg driver and enable imx_rproc driver from devices tree.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;system hang happen when loading the first fw segment to the TCM area.&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;echo start &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;BR /&gt;[ 38.348966] remoteproc remoteproc0: powering up imx-rproc&lt;BR /&gt;[ 38.357736] remoteproc remoteproc0: Firmware is an elf32 file&lt;BR /&gt;[ 38.363508] remoteproc remoteproc0: Booting fw image&lt;FONT color="#0000FF"&gt; rpmsg_lite_pingpong_rtos_linux_remote.elf, size 164408&lt;/FONT&gt;&lt;BR /&gt;[ 38.373276] imx-rproc imx8mp-cm7: lihual2,iommu not present&lt;BR /&gt;[ 38.378875] remoteproc remoteproc0: lihual, rproc_fw_boot,&lt;FONT color="#0000FF"&gt; fw boot entry 51d&lt;/FONT&gt;&lt;BR /&gt;[ 38.385958] imx-rproc imx8mp-cm7: lihual, add carveout m7, base 0x80000000 da 0x80000000, size 0x1000000&lt;BR /&gt;[ 38.395482] imx-rproc imx8mp-cm7: lihual, add carveout vdev0vring0, base 0x55000000 da 0x55000000, size 0x8000&lt;BR /&gt;[ 38.405501] imx-rproc imx8mp-cm7: lihual, add carveout vdev0vring1, base 0x55008000 da 0x55008000, size 0x8000&lt;BR /&gt;[ 38.415525] imx-rproc imx8mp-cm7: lihual, add carveout vdevbuffer, base 0x55400000 da 0x55400000, size 0x100000&lt;BR /&gt;[ 38.425640] lihual, imx_rproc_parse_fw, before set 0xa8&lt;BR /&gt;[ 38.430885] lihual, imx_rproc_parse_fw, after set 0xaa&lt;BR /&gt;[ 38.436071] remoteproc remoteproc0: lihual, rproc_handle_resources, enter&lt;BR /&gt;[ 38.442888] remoteproc remoteproc0: rsc: type 3&lt;BR /&gt;[ 38.447443] remoteproc remoteproc0: vdev rsc: id 7, dfeatures 0x1, cfg len 0, 2 vrings&lt;BR /&gt;[ 38.455437] remoteproc remoteproc0: vdev rsc: vring0: da 0x55000000, qsz 256, align 4096&lt;BR /&gt;[ 38.463567] remoteproc remoteproc0: vdev rsc: vring1: da 0x55008000, qsz 256, align 4096&lt;BR /&gt;[ 38.471696] imx-rproc imx8mp-cm7: map memory: 00000000b1f29fcf+1000000&lt;BR /&gt;[ 38.478327] imx-rproc imx8mp-cm7: map memory: 0000000063fce603+8000&lt;BR /&gt;[ 38.484646] imx-rproc imx8mp-cm7: map memory: 00000000616f1cee+8000&lt;BR /&gt;[ 38.490952] imx-rproc imx8mp-cm7: map memory: 00000000e585adc7+100000&lt;BR /&gt;[ 38.497448] remoteproc remoteproc0: imx_rproc_elf_load_segments, phdr: type 1 da 0x0 memsz 0x2a8 filesz 0x2a8&lt;BR /&gt;[ 38.507392] remoteproc remoteproc0: &lt;FONT color="#0000FF"&gt;da = 0x0 sys_addr: 0x7e0000 len = 0x2a8 va = 0x00000000ed360d72&amp;nbsp; &amp;nbsp;// va is maped via&amp;nbsp;&lt;SPAN&gt;devm_ioremap&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#000000"&gt;I doubt there are some issues from TCM acess as i am not sure if&amp;nbsp; A core can acess TCM directly or protected by some module, so i tried ddr build:&lt;/FONT&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;From the log, it seems that fw segments have loaded to ddr 0x80000000 sucessfully and everything looks fine.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;But no "hello world" print to cm7 uart port and seems cm7 isn't started.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;By default, cm7 is booted from uboot via "bootaux" command, and i can boot cm7 with it.&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;&lt;FONT color="#000000"&gt;Are there any guides or docs for booting cm7 via remoteproc?&lt;/FONT&gt;&lt;/LI&gt;&lt;LI&gt;software i run:&amp;nbsp;&lt;SPAN&gt;linux-imx branch lf-5.10.y&lt;/SPAN&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;logs:&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000FF"&gt;&lt;FONT color="#000000"&gt;root@imx8mpevk:~# echo start &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.015820] remoteproc remoteproc0: powering up imx-rproc&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.021502] remoteproc remoteproc0: Firmware is an elf32 file&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.027310] remoteproc remoteproc0: Booting fw image rpmsg_lite_pingpong_rtos_linux_remote.elf, size 164408&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.037080] imx-rproc imx8mp-cm7: lihual2,iommu not present&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.042679] remoteproc remoteproc0: lihual, rproc_fw_boot, &lt;FONT color="#0000FF"&gt;fw boot entry 8000051d&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.050194] imx-rproc imx8mp-cm7: lihual, add carveout m7, base 0x80000000 da 0x80000000, size 0x1000000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.059743] imx-rproc imx8mp-cm7: lihual, add carveout vdev0vring0, base 0x55000000 da 0x55000000, size 0x8000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.069783] imx-rproc imx8mp-cm7: lihual, add carveout vdev0vring1, base 0x55008000 da 0x55008000, size 0x8000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.079823] imx-rproc imx8mp-cm7: lihual, add carveout vdevbuffer, base 0x55400000 da 0x55400000, size 0x100000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.089954] remoteproc remoteproc0: lihual, rproc_handle_resources, enter&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.096769] remoteproc remoteproc0: rsc: type 3&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.101329] remoteproc remoteproc0: vdev rsc: id 7, dfeatures 0x1, cfg len 0, 2 vrings&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.109325] remoteproc remoteproc0: vdev rsc: vring0: da 0x55000000, qsz 256, align 4096&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.117439] remoteproc remoteproc0: vdev rsc: vring1: da 0x55008000, qsz 256, align 4096&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.125563] imx-rproc imx8mp-cm7: map memory: 00000000b2faa939+1000000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.132130] imx-rproc imx8mp-cm7: map memory: 000000006cc4dfc6+8000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.138440] imx-rproc imx8mp-cm7: map memory: 000000005e49fc1d+8000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.144755] imx-rproc imx8mp-cm7: map memory: 000000001ec5a9c7+100000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.151269] remoteproc remoteproc0: phdr: type 1 &lt;FONT color="#0000FF"&gt;da 0x80000000 memsz 0x2a8 filesz 0x2a8&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.159295] remoteproc remoteproc0: da = 0x80000000 len = 0x2a8 va = 0x000000006c96a30c&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.167322] remoteproc remoteproc0: phdr: type 1 da 0x80000400 memsz 0x460c filesz 0x460c&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.175527] remoteproc remoteproc0: da = 0x80000400 len = 0x460c va = 0x00000000317ae83d&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.183677] remoteproc remoteproc0: phdr: type 1 da 0x80004a0c memsz 0xab00 filesz 0x68&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.191716] remoteproc remoteproc0: da = 0x80004a0c len = 0xab00 va = 0x0000000031885095&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.199883] remoteproc remoteproc0: da = 0x80000400 len = 0x58 va = 0x00000000317ae83d&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.207821] imx-rproc imx8mp-cm7: lihual, imx_rproc_start, method 0&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.214120] lihual, imx_rproc_ready, wait for remote ready&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.269630] lihual, imx_rproc_ready, timerout for remote ready&amp;nbsp; &amp;nbsp;&lt;FONT color="#0000FF"&gt;// rxdb irq timerout for cm7 ready,fw may not started.&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.275477] remoteproc0#vdev0buffer: lihual, rproc_add_virtio_dev, try to find vdev0buffer from carveout!&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.285170] virtio virtio0: reset !&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.288697] virtio virtio0: status: 1&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.292560] virtio_rpmsg_bus virtio0: status: 3&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.297147] remoteproc remoteproc0: vring0: va 0000000095de817d qsz 256 notifyid 0 ring_size 10246&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.306146] remoteproc remoteproc0: vring1: va 00000000fb2ff26e qsz 256 notifyid 1 ring_size 10246&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.315128] virtio_rpmsg_bus virtio0: lihual, rpmsg_probe buf[512, 512]&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.323636] virtio_rpmsg_bus virtio0: buffers: va 0000000013568248, dma 0x00000000d49c0000&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.332195] (null): lihual, rpmsg_ctrldev_probe&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.337996] virtio_rpmsg_bus virtio0: lihual, rpmsg_probe, has feature VIRTIO_RPMSG_F_NS&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.338805] imx6q-pcie 33800000.pcie: supply epdev_on not found, using dummy regulator&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.346295] rpmsg_ns virtio0.rpmsg_ns.53.53: lihual, rpmsg_ns_probe&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.557637] virtio_rpmsg_bus virtio0: status: 7&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.562246] remoteproc remoteproc0: kicking vq index: 0&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.679572] imx-rproc imx8mp-cm7: imx_rproc_kick: failed (0, err:-62) &lt;FONT color="#0000FF"&gt;//mailbox is not available&lt;/FONT&gt;&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.686034] virtio_rpmsg_bus virtio0: rpmsg host is online&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.692799] remoteproc0#vdev0buffer: lihual,registered virtio0 (type 7)&lt;/FONT&gt;&lt;BR /&gt;&lt;FONT color="#000000"&gt;[ 761.699546] remoteproc remoteproc0&lt;FONT color="#0000FF"&gt;: remote processor imx-rproc is now up&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Sep 2022 09:43:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-MX8MP-boot-CM7-via-linux-kernel-remoteproc/m-p/1523833#M195278</guid>
      <dc:creator>LihuaLiu123</dc:creator>
      <dc:date>2022-09-17T09:43:04Z</dc:date>
    </item>
    <item>
      <title>Re: I.MX8MP boot CM7 via linux kernel remoteproc</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/I-MX8MP-boot-CM7-via-linux-kernel-remoteproc/m-p/1524595#M195339</link>
      <description>&lt;P&gt;I tried to understand how u-boot boot up cm7.&lt;/P&gt;&lt;P&gt;Following is the uboot code of bootaux.&lt;/P&gt;&lt;P&gt;&lt;A href="https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/mach-imx/imx_bootaux.c?h=imx_v2020.04_5.4.24_2.1.0" target="_blank" rel="noopener"&gt;https://source.codeaurora.org/external/imx/uboot-imx/tree/arch/arm/mach-imx/imx_bootaux.c?h=imx_v2020.04_5.4.24_2.1.0&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Actually, it just copy stack and pc address to&amp;nbsp;&lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR(0x7e0000) and call SMCC API. Then i try to do the same things in driver.&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;void&lt;/SPAN&gt; &lt;SPAN&gt;__iomem&lt;/SPAN&gt;&lt;SPAN&gt; *&lt;/SPAN&gt;&lt;SPAN&gt;io_tcm_addr&lt;/SPAN&gt;&lt;SPAN&gt;&amp;nbsp;= &lt;/SPAN&gt;&lt;SPAN&gt;ioremap&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;SPAN class=""&gt;0x7e0000&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN&gt;, &lt;/SPAN&gt;&lt;SPAN&gt;8&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;writel&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;stack&lt;/SPAN&gt;&lt;SPAN&gt;, io_tcm_addr&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;writel&lt;/SPAN&gt;&lt;SPAN&gt;(&lt;/SPAN&gt;&lt;SPAN&gt;pc&lt;/SPAN&gt;&lt;SPAN&gt;, io_tcm_addr&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN&gt;+ &lt;/SPAN&gt;&lt;SPAN&gt;4&lt;/SPAN&gt;&lt;SPAN&gt;);&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;However, it didn't bring any lucky, system hang happened when writting the stack addr to tcm addr, it looks like the same result as loading fw failed with TCM build since they both do the write operation to the address 0x7e0000.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;There're more reason to belive that A core can not access the TCM area at the time.&amp;nbsp;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Since&amp;nbsp;uboot has the permisson to access TCM, i did test below:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;I tried to boot cm7 with uboot, and stop it via below commands when kernel boot up.&lt;/SPAN&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo stop &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;/DIV&gt;&lt;DIV&gt;and then start it via&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo hello_world.elf &amp;gt; /sys/class/remoteproc/remoteproc0/firmware&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;echo start &amp;gt; /sys/class/remoteproc/remoteproc0/state&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;As as result, CM7 is booted up successfully and running.&lt;/DIV&gt;&lt;DIV&gt;i belive that the kick command works because the stack and pc are already written to 0x7e0000 on uboot phase.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;SPAN&gt;Booting up cm7 is not my purpose,&amp;nbsp;&lt;/SPAN&gt;i'm going to move forward with this workaround. However, if anyone of you know the detail, pls help comment.&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;SPAN class=""&gt;#ifndef CONFIG_IMX8&lt;/SPAN&gt;
&lt;SPAN class=""&gt;int&lt;/SPAN&gt; &lt;SPAN class=""&gt;arch_auxiliary_core_up&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;core_id&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;ulong&lt;/SPAN&gt; &lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;{&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;-&lt;/SPAN&gt;&lt;SPAN class=""&gt;EINVAL&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

&lt;SPAN class=""&gt;#ifdef CONFIG_IMX8M&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#else&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;/*&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 * handling ELF64 binaries&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 * isn't supported yet.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;	 */&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;valid_elf_image&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;))&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;0x0&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;load_elf_image_phdr&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;if&lt;/SPAN&gt; &lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;!&lt;/SPAN&gt;&lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;
			&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;CMD_RET_FAILURE&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;}&lt;/SPAN&gt; &lt;SPAN class=""&gt;else&lt;/SPAN&gt; &lt;SPAN class=""&gt;{&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;/*&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * Assume binary file with vector table at the beginning.&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * Cortex-M4 vector tables start with the stack pointer (SP)&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 * and reset vector (initial PC).&lt;/SPAN&gt;
&lt;SPAN class=""&gt;		 */&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;stack&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
		&lt;SPAN class=""&gt;pc&lt;/SPAN&gt; &lt;SPAN class=""&gt;=&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;u32&lt;/SPAN&gt; &lt;SPAN class=""&gt;*&lt;/SPAN&gt;&lt;SPAN class=""&gt;)(&lt;/SPAN&gt;&lt;SPAN class=""&gt;addr&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;}&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#endif&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;printf&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;"## Starting auxiliary core stack = 0x%08X, pc = 0x%08X...&lt;/SPAN&gt;&lt;SPAN class=""&gt;\n&lt;/SPAN&gt;&lt;SPAN class=""&gt;"&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
	       &lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;/* Set the stack and pc to MCU bootROM */&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;writel&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;stack&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;writel&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;pc&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;MCU_BOOTROM_BASE_ADDR&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;4&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;flush_dcache_all&lt;/SPAN&gt;&lt;SPAN class=""&gt;();&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;/* Enable MCU */&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#ifdef CONFIG_IMX8M&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;call_imx_sip&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;IMX_SIP_SRC&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;IMX_SIP_SRC_MCU_START&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#else&lt;/SPAN&gt;
	&lt;SPAN class=""&gt;clrsetbits_le32&lt;/SPAN&gt;&lt;SPAN class=""&gt;(&lt;/SPAN&gt;&lt;SPAN class=""&gt;SRC_BASE_ADDR&lt;/SPAN&gt; &lt;SPAN class=""&gt;+&lt;/SPAN&gt; &lt;SPAN class=""&gt;SRC_M4_REG_OFFSET&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt;
			&lt;SPAN class=""&gt;SRC_M4C_NON_SCLR_RST_MASK&lt;/SPAN&gt;&lt;SPAN class=""&gt;,&lt;/SPAN&gt; &lt;SPAN class=""&gt;SRC_M4_ENABLE_MASK&lt;/SPAN&gt;&lt;SPAN class=""&gt;);&lt;/SPAN&gt;
&lt;SPAN class=""&gt;#endif&lt;/SPAN&gt;

	&lt;SPAN class=""&gt;return&lt;/SPAN&gt; &lt;SPAN class=""&gt;0&lt;/SPAN&gt;&lt;SPAN class=""&gt;;&lt;/SPAN&gt;
&lt;SPAN class=""&gt;}&lt;/SPAN&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 20 Sep 2022 02:51:53 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/I-MX8MP-boot-CM7-via-linux-kernel-remoteproc/m-p/1524595#M195339</guid>
      <dc:creator>LihuaLiu123</dc:creator>
      <dc:date>2022-09-20T02:51:53Z</dc:date>
    </item>
  </channel>
</rss>

