尊敬的 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 加载具有以下限制:
- TCMA 被禁用
- 不能使用 MCU 互连(从地址0x41C0 0000开始)处的1MB SRAM
我想切换到通过 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