This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的 TI:
我想在 MCU1_0上加载一个定制的 FreeRTOS 应用程序、同时加载 Linux。 我将 PSDK v08.02用于 Linux 和 RTOS、并使用标准 TI 开发板。 我一直关注这个线程(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/915474/faq-tda4vm-different-ways-to-load-an-rtos-or-baremetal-application-along-with-linux) 、以测试通过 R5 SPL 的负载和通过 U-Boot 的负载。
由于通过 R5 SPL 加载具有以下限制:
我想切换到通过 U-Boot 加载。 我的假设是 ,不再保留至少1MB SRAM (0x41C0 0000)(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/latest/exports/docs/psdk_rtos/docs/user_guide/developer_notes_mcu1_0_sysfw.html ,第8.3.2.3节)。
问题1:此假设是否正确? TCMA 呢? 它是否可用于自定义应用?
前面提到的常见问题解答提到"无法从 R5F SPL 跳过 MCU1_0负载、然后从 u-boot 加载"。 这与 SDK v07.01的架构变化有关、其中 MCU1_0现在是引导过程的一部分。
问题2:我仍然不确定如何解释这句话。 通常不能通过 U-Boot 从 SDK v07.01及更高版本将定制应用程序加载到 MCU1_0?
假设可以通过 U-Boot 加载 MCU1_0应用程序、"部分"MCU1_0应用程序仍需要通过 R5 SPL 加载、以满足引导要求并能够引导至 U-Boot。 我将我的自定义应用程序放置在 NFS 目录中、位于/lib/firmware/j7-mcu-r5f0_0-fw、并引导至 U-Boot。 要加载应用程序、 我执行了 Vision Apps 用户指南提供的所有更改、以通过 NFS 引导加载应用程序(https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/08_02_00_05/exports/docs/vision_apps/docs/user_guide/RUN_INSTRUCTIONS.html#run_steps_linux_nfs)。 我还将 rproc_fw_binaries 修改为
rproc_fw_binaries=0 /lib/firmware/j7-mcu-r5f0_0-fw
以便仅加载并启动 MCU1_0。 我要加载的图像与 R5 SPL 加载的图像相同。 这是我通过 U-Boot 执行我之前提到的步骤获得的日志:
link up on port 1, speed 1000, full duplex BOOTP broadcast 1 DHCP client bound to address 172.16.1.158 (4 ms) link up on port 1, speed 1000, full duplex BOOTP broadcast 1 DHCP client bound to address 172.16.1.158 (3 ms) link up on port 1, speed 1000, full duplex Using ethernet@46000000 device File transfer via NFS from server 172.16.1.147; our IP address is 172.16.1.158 Filename '/home/felix/ti-processor-sdk-linux-j7-evm-08_00_00_08/targetNFS-test//lib/firmware/j7-mcu-r5f0_0-fw'. Load address: 0x82000000 Loading: ########################################### done Bytes transferred = 217356 (3510c hex) Invalid op: Trying to load/start on already running core 1
因此、似乎 MCU1_1已在运行。 可以解释这一点、因为 MCU1_0和 MCU1_1是在锁步模式下启动的。 我尝试通过以下 U-Boot 命令手动停止 MCU1_0和 MCU1_1来避免此错误:
=> rproc init => rproc stop 0 => rproc stop 1 Invalid op: Trying to stop secondary core in lockstep mode Operation Failed with error (-22) =>
启动电路板后、我将获得以下输出:
=> boot switch to partitions #0, OK mmc1 is current device SD/MMC found on device 1 0 bytes read in 0 ms Loaded env from uEnv.txt Importing environment from mmc1 ... link up on port 1, speed 1000, full duplex BOOTP broadcast 1 DHCP client bound to address 172.16.1.158 (4 ms) link up on port 1, speed 1000, full duplex BOOTP broadcast 1 DHCP client bound to address 172.16.1.158 (3 ms) Remote Processors are already initialized link up on port 1, speed 1000, full duplex Using ethernet@46000000 device File transfer via NFS from server 172.16.1.147; our IP address is 172.16.1.158 Filename '/home/felix/ti-processor-sdk-linux-j7-evm-08_00_00_08/targetNFS-test//lib/firmware/j7-mcu-r5f0_0-fw'. Load address: 0x82000000 Loading: ########################################### done Bytes transferred = 217356 (3510c hex) ti_sci_get_response: Message receive failed. ret = -110 Mbox send fail -110 ti-sci processor set_config failed: -110 ti_sci_get_response: Message receive failed. ret = -110 Mbox send fail -110 ti-sci processor release failed: -110 ti_sci_get_response: Message receive failed. ret = -110 Mbox send fail -110 ti-sci processor release failed: -110 Load Remote Processor 0 with data@addr=0x82000000 217356 bytes: Failed!
因此、Sciserver 无法正确启动。
Q3:由于我希望通过 U-Boot 加载的应用程序与我之前通过 R5 SPL 加载的应用程序相同、因此我不理解为什么会出现此错误。 您能解释一下这个 bevavour 吗?
Q4:是否建议在拆分模式下启动 MCU1_0和 MCU1_1? 我找到了以下主题(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1003532/tda4vm-tda4vm---enable-mcu_r5f-lockstep-or-split-using-u-boot) 、但提供的解决方案似乎不是非常"正式"?
感谢您的帮助和致以最诚挚的问候、
Felix
你(们)好、Fel
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot"]关于 TCMA、什么?不支持从 u-boot 加载 MCU1_0、因为由于 SDK7.1 (请参阅 此文档)、MCU1_0现在正在运行 DM (设备管理器)、因此需要 MCU1_0固件来引导其他内核。
如果 MCU1_0未启动、您将能够自行实现 u-boot。
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-avial-r5-spl-and-or-u-boot"]问题1:此假设是否正确? TCMA 呢? 它是否可用于自定义应用?
前面提到的常见问题解答提到"无法从 R5F SPL 跳过 MCU1_0负载、然后从 u-boot 加载"。 这与 SDK v07.01的架构变化有关、其中 MCU1_0现在是引导过程的一部分。
[/报价]没错。 这里是否需要任何问题/说明?
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-avial-r5-spl-and-or-u-boot"]问题2:我仍然不确定如何解释这句话。 通常不能通过 U-Boot 从 SDK v07.01及更高版本将定制应用程序加载到 MCU1_0?
假设可以通过 U-Boot 加载 MCU1_0应用程序、"部分"MCU1_0应用程序仍需要通过 R5 SPL 加载、以满足引导要求并能够引导至 U-Boot。
[/报价]我理解您要做的事情、让我尝试解释一下我认为问题会是什么。
当您尝试引导任何内核时、您需要运行 Sciserver 或 DM。 (因为这需要区经理提供客户经理和 PM 服务)
此时执行"rproc stop 0"时、会中止 DM、因此将无法再引导其他内核。
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-via-r5-spl-SPL-OR-u-boot"]Q3:由于我想通过 U-Boot 加载应用程序、我为什么不会通过 R5加载此错误。 您能解释一下这个 bevavour 吗?以上答案。
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot"]Q4:是否建议在 SPLIT 模式下启动 MCU1_0和 MCU1_1? 我找到了以下主题(https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1003532/tda4vm-tda4vm---enable-mcu_r5f-lockstep-or-split-using-u-boot) 、但提供的解决方案似乎不是非常"正式"?这是正确的、未在 SDK 中进行正式测试。
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot"]关于 TCMA、什么?如果您只需要使用 TCM-A、则可以在 R5 SPL 中添加一段代码来执行此操作。 但是,这一点也没有得到官方的支持。
asm(" MRC p15, #0, r0, c9, c1, #1 "); asm(" BFC r0, #12, #20 "); asm(" ORR r0, r0, #0x1 "); asm(" MCR p15, #0, r0, c9, c1, #1 ");
此致
Karan
您好、Karan、
感谢您的详细回答。
[引用 userid="380126" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-when 加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot/4135265#4135265"]我想让我解释一下您想尝试解决的问题。]这只是避免错误消息的一种天真的方法。 总结:MCU1_0的自定义应用 只能 由 R5 SPL 加载(使用 SDK v07.001及更高版本)。 无法通过 U-Boot 或 Linux remoteproc 加载它,因为我必须停止并重新启动 Sciserver、DM、PM、Rm...,这是不可能的。 是这样吗?
我仍然对通过您建议的汇编器代码激活 TCMA 感到有点困惑、因为我在上一篇文章中提到的常见问题解答还指出 、我必须"不能覆盖 R5 SPL 使用的 MPU 条目"。 在 R5 SPL 的应用 MPU 配置中是否已经正确设置了 TCMA、或者我是否也必须在此处进行更改?
再次感谢您的帮助和致以最诚挚的问候
Felix
你(们)好、Fel
[引用 userid="463380" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-when 加载时-custom-mcu1_0-app-via R5-spl-SPL-or-u-boot/4136038#4136038"]MCU1_v01 以上版本、仅可使用自定义应用程序进行加载、并使用自定义应用程序进行汇总。 无法通过 U-Boot 或 Linux remoteproc 加载它,因为我必须停止并重新启动 Sciserver、DM、PM、Rm...,这是不可能的。 这是正确的吗?我会以稍微不同的方式进行设置。
MCU1_0需要在 TDA4系统中始终提供 DM (设备管理器)功能。 当 MCU1_0运行 R5 SPL 时、该值由 R5 SPL 提供、然后一旦 R5 SPL 跳转到 MCU1_0自定义应用程序、则它是在提供该功能的自定义应用程序上运行的 Sciserver。
如果您没有从 R5 SPL 加载 MCU1_0自定义应用、则当 MCU1_0上没有运行任何内容时、系统中将有一段持续时间。 此持续时间将从 R5 SPL 结束(在这里加载 A72 SPL)到 u-boot 加载 MCU1_0定制应用。
这就是不支持从 u-boot 加载 MCU1_0应用的原因。 即使我们修改 R5 SPL 以提供 DM 功能、直到 u-boot 加载自定义应用、 因此、也可能无法实现、因为即使在这种情况下、我们也必须停止 R5 SPL、然后重新加载 MCU1_0 SciServer、而在没有 DM 的情况下也无法进行加载。
[引用 userid="463380" URL"~/support/processors/group/processors/f/processors-forum/1114878/tda4vm-restrictions-when 加载时-custom-mcu1_0-app-vy-R5-spl-SPL-or-u-boot/4136038#413TC6038"]由于我 还不能通过汇编器在前面提到的代码中覆盖先前的小条目、因此我不能通过 MPU 来更改这些条目。 在 R5 SPL 的应用 MPU 配置中是否已经正确设置了 TCMA、或者我是否也必须在此处进行更改?我们不应覆盖 R5 SPL 使用的 MPU 条目、因为我们假设 MCU R5提供的存储器与 R5 SPL 在自定义应用中启用的存储器相同。 在这种情况下、您应该能够重新配置 MPU。 但我没有尝试过、所以如果您发现问题、请告诉我。
此致
Karan
您好、Karan、
我是 Felix 的同事。
[引用 userid="380126" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-when 加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot/4138586#4138586"]MCU1_0不支持引导的原因。 即使我们修改 R5 SPL 以提供 DM 功能、直到 u-boot 加载自定义应用、 因此、也可能无法实现、因为即使在这种情况下、我们也必须停止 R5 SPL、然后重新加载 MCU1_0 SciServer、而在没有 DM 的情况下也无法加载。非常感谢-现在我在这里看到了更大的画面。 这就是 R5 SPL 在不进行任何复位的情况下执行"切换到自定义固件"的原因。 U-Boot 和 Linux 正在使用 Remoteproc 驱动程序/模块、该驱动程序/模块要求运行 Sciserver、并且无法像 R5 SPL 那样进行"切换"。
[引用 userid="380126" URL"~/support/processors-group/processors/f/processors-forum/1114878/tda4vm-restrictions-when 加载时-custom-mcu1_0-app-vy-r5-spl-and-or-u-boot/4138586#4138586"]在这种情况下、您应该能够重新配置 MPU。 但我没有尝试过、因此如果您发现问题、请告知我。我们建议、由于合作应用的要求、不可能/不安全:
关于1:我们希望在拆分模式下运行 MCU_R5SS。 为此、我们得到了一个 R5 SPL 补丁、看起来是有效的。
关于2:我们希望为 MCU_R5SS 使用尽可能多的快速存储器。 这包括 R5的 ATCM (针对 R5 SPL 禁用)和 MCU_MSRAM_1MB0_RAM、前者的前半部分保留用于 R5 SPL。
关于3:要使用 ATCM、我们需要在切换到自定义固件后更改 MPU 配置。 您是说这应该能够在固件开关期间/之后执行、还是事先针对 R5 SPL 执行?
此致、
Thomas