你好。
我最近已迁移到 SDK_08_05。 使用"make sbl_mmcsd_img_HLOS"创建的 SBL 会生成一个 SBL、该 SBL 无法在 MC1_0和 A72的 Arago 中使用 FreeRTOS 映像运行多映像。
使用在 SDK_08_04中编译的解决方案启动了同一个应用、我之前使用过该解决方案。
我检测到每个 SDK 版本的 TIFS 二进制文件中的更改、因此我也会尝试更改它、但问题仍然存在。
您能否说明如何在08_05版本中解决此问题?
谢谢
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.
你好。
我最近已迁移到 SDK_08_05。 使用"make sbl_mmcsd_img_HLOS"创建的 SBL 会生成一个 SBL、该 SBL 无法在 MC1_0和 A72的 Arago 中使用 FreeRTOS 映像运行多映像。
使用在 SDK_08_04中编译的解决方案启动了同一个应用、我之前使用过该解决方案。
我检测到每个 SDK 版本的 TIFS 二进制文件中的更改、因此我也会尝试更改它、但问题仍然存在。
您能否说明如何在08_05版本中解决此问题?
谢谢
您好、Parh。
使用 combined_img make 选项创建的应用、包括 MCUSW 包中 MCU1_0的 CAN_profile 演示(对 UART 消息和循环迭代进行了微小的更改)以及在 A72中启动 Arago 所需的所有内容。
情况 是、使用从 SDK 8.4中构建的 SBL HLOS 启动应用(UART_MCU 和 UART_MAIN0显示预期流执行、但不适用于使用相同应用从8.5中生成的应用。 SD 卡的内容始终相同、仅使用 SDK8.4或 SDK8.5中的 SBL 切换 tiboot3.bin
此处为从8.5生成的 SBL 的日志(使用 log_level 3编译);
以下是8.4中的一个(使用 log_level 3编译的 SBL):
MCU 中的应用正在运行:
谢谢
你好。
我已经做了建议、所以所有使用的二进制文件都从8.5 SDK 中获得。
然后、我编译了 MCUSW CAN 概要文件、并在8.5 SDK 中完成了 combined_image (将 img1链接到该 CANprofile)。 Tifs 还用于8.5字符之间、
肯定的、 CAN Sciclient 故障在 MCU1_0中消失 ,但 A72运行不好。 看起来像 uboot-SPL 中发生了一些问题 。 我创建了两个不同的应用、指向 config.mk 中用于 make combined_application 的不同 uboot-SPL:
1) SPL_IMG ?= LOAD_ONLY,/home/fn5pva0/ti-processor-sdk-linux-j7-evm-08_05_00_08/board-support/u-boot_build/a72/spl u-boot-spl.bin ,0x80080000,0x80080000
此二进制文件是 在 构建 uboot 后创建的(生成 u-boot)
2) SPL_IMG ?= LOAD_ONLY,$(HLOS_BIN_PATH )/ u-boot-spl.bin ,0x80080000,0x80080000
为此、我将 ti-processor-sdk-linux-j7-evm-08_05_00_08/board-support/prebuilt-images/u-boot-spl.bin-j7-evm 重命名为 ti-processor-sdk-linux-j7-evm-08_05_00_08/board-support/prebuilt-images/u-boot-spl.bin ( 是这样吗? )
在这两种情况下、我观察到相同的问题(生成日期不同)
U-Boot SPL 2021.01-g7996ed51F1 (2022年12月18日- 07:46:35 +0000)
型号:德州仪器 K3 J721E SoC
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
电路板:版本
SYSFW ABI:3.1 (固件版本0x0008 '8.5.2--v08.05.02 (Chill Capybar')
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
TI_i2c_eeprom_am6_get:忽略记录 ID 255
尝试从 MMC2引导
U-Boot 2021.01-Dirty (Feb 24 2023 - 16:21:41 +0100)
SoC:J721E SR1.1 GP
型号:德州仪器 K3 J721E SoC
电路板:版本
DRAM:4 GiB
闪存:
错误:在 EL2发出的0x80000000上接收到未处理的外部中止
错误:异常原因=0综合征=0xbf000002
EL2未处理的异常
x0 = 0x00000000fdecc2d0
X1 = 0x000000000000
x2 = 0x0000000000000019
X3 = 0x0000000500000000
x4 = 0x00000000fff1227c
X5 = 0x000000000000
x6 = 0x000000000008
x7 = 0x000000000002
X8 = 0x00000000fdecc350
x9 = 0x000000000008
x10 = 0x000000000004
X11 = 0x000000000002
x12 = 0x0000000000000b38
X13 = 0x00000000fdeaf4cc
x14 = 0x00000000fdeaf730
X15 = 0x000000000002
x16 = 0x00000000fff2d798
x17 = 0x000000000000
x18 = 0x00000000fdec4df0
x19 = 0x00000000fdec6740
x20 = 0x000000000000
x21 = 0x00000000fdecc2d0
x22 = 0x0000800bc738
x23 = 0x0000800b455e
x24 = 0x0000800b4546
x25 = 0x0000DEADBEAST
X26 = 0x000000000005
x27 = 0x000000000000
x28 = 0x000000000000
x29 = 0x00000000fdeaf5c0
x30 = 0x00000000fff1b220
SCR_EL3 = 0x000000000000073d
sctlr_EL3 = 0x000030cd183f
CPTR_EL3 = 0x000000000000
TCR_EL3 = 0x0000803520
DAIF = 0x00000000000002c0
MAIN_EL3 = 0x00000000x30 = 0x00000000fff1b220
SCR_EL3 = 0x000000000000073d
sctlr_EL3 = 0x000030cd183f
CPTR_EL3 = 0x000000000000
TCR_EL3 = 0x0000803520
DAIF = 0x00000000000002c0
MAIR_EL3 = 0x00000000004404ff
spsr_EL3 = 0x00000000200002c9
ELR_EL3 = 0x00000000fff1b284
ttbr0_EL3 = 0x000070011cc0
ESR_EL3 = 0x00000000bf000002
FAR_EL3 = 0x000000000000
spsr_el1 = 0x000000000000
elr_el1 = 0x000000000000004404ff
spsr_EL3 = 0x00000000200002c9
ELR_EL3 = 0x00000000fff1b284
ttbr0_EL3 = 0x000070011cc0
ESR_EL3 = 0x00000000bf000002
FAR_EL3 = 0x000000000000
spsr_el1 = 0x000000000000
eLR_el1 = 0x000000000000
因此、未加载内核、并且也不提供 uboot 命令外壳程序。
如何解决该问题?
非常感谢
您好、Pablo、
请查找运行 can_profileapp 以及附加了组合引导应用程序的 Linux 所需的更改。
此致、
帕尔特
使用 HLOS_BOOT=已优化功能部分解决问题、如您建议的调试调用所示。 CAN 配置文件(有段时间)和 Arago 正在运行。
我们希望有 Uboot 和 SPL、因此、使用 HLOS =开发解决方案时、这尚不起作用。
但 Vision 应用程序无法运行、因为 uboot 不会加载内核的图像。 我想应该在 conf.mk 文件中引用所有固件映像(R5F、DSP 等)、以创建正确的组合映像。 那么 SBL 将负责将映像加载到正确的地址、不会?我也想这些映像是 elf。
是否有任何文档描述如何链接视觉应用在组合图像中所需的所有固件?
另一个问题是当 HLOS_BOOT =已优化时、是否也应在 rootfs/boot/k3-j721e-common-board.dTB 中更新它?
谢谢。
您好、Pablo、
但是 Vision 应用程序未运行、因为 uboot 未加载内核的映像。 我想应该在 conf.mk 文件中引用所有固件映像(R5F、DSP 等)、以创建正确的组合映像。 那么 SBL 将负责将图像加载到正确的地址、不会?我也想这些图像将是 elf[/quot]如果进行优化、是的、则必须在 config.mk 文件中指向 VISION_APPS_BINARIES。
是否有任何文档说明如何链接视觉应用所需的所有固件组合图像请参考以下附加的 config.mk 文件。 请相应地更新路径。
/cfs-file/__key/communityserver-discussions-components-files/791/0211.config.mk
中对 DTB 进行更新另一个问题是当 HLOS_BOOT =已优化时,是否也应在 rootfs/boot/k3-j721e-common-board.dtb这一点不需要完成、因为组合生成的应用程序应该考虑到这一点。
此致、
[/quote]
尼基尔
尊敬的 Nikhil:
感谢你的帮助。 我们今天将在 conf.mk 中添加图像并返回给您。 但是、在按照您的指示操作时、我们发现了一个问题:
1) 1)将 SBL HLOS 置于优化模式(应用补丁后)并更改 DTS:
可以对应用和 Arago 运行一段时间进行分析、然后可以对应用报告进行分析 CAN DEM 和 STOP。 (每次都会发生)。 Pablo 稍后可以提供日志、您可以告诉我们如何解决问题。
2) 2)我们需要一种运行 SBL HLOS 开发的方法、因为我们需要针对我们的应用尽早实现 CAN。 您能告诉我们需要做哪些更改吗?
提前感谢、
Mònica
你好,Nikhil。
Monica 说、CAN DEM 每次都会发生、但事实并非如此。 有时会发生、但我没有 记录它的日志。 一旦发生这种情况,我会连接到帖子。
此外、Arago 的大多数尝试都会卡在远程 proc 中(不清楚是否发生时序或 因为 内核负载上的特定操作而发生)。 我们已 尝试 3种不同的设置、在每次设置中创建了所有需要的二进制文件(SBL、修补、CAN 配置文件、dtb、多映像、 等等)、我们在所有这些示例中都观察到了相同的行为。 我们没有明确的统计数据,但我们 假设在大约90%的 power-power-on 测试中,A72卡在 Remoteproc 操作中(在没有卡滞时,在远程 proc 操作中观察到停机点故障"-22"而不是"-2"的结果之前)。
(*)在引导中附加了 MCU 和 A72的完整日志
e2e.ti.com/.../7144.remote_5F00_proc_5F00_A72_5F00_stuck.zip
由于似乎这种故障可能是由于其余内核没有固件导致的,我们修改了 conf.mk 以生成集成了所有内核的应用程序。 然后、我们假设 SBL ( 在创建多映像时优化 HLOS_BOOT 时)负责 内核所需的所有二进制文件的正确分配加载。 我们还假设在使用 SPL 引导时,二进制文件是由 Uboot 完成的(请,您能否确认这一 理解是否正确?)(**)
在本例中、SBL 会卡在加载某些固件@0x400000处。
(**)附加 conf.mk 和修改
您好、Pablo、
目前您使用的是 SDK 8.5吗?
您是否可以参考以下 config.mk 文件并将相同的 VISION_APPS 二进制文件添加到您的映像中? vision_apps 中的这些二进制文件在您结束时是否可用?
我不确定所指向的 MCU2_0、MCU2_1等文件。
您能尝试一下吗、如下所述?
/cfs-file/__key/communityserver-discussions-components-files/791/4810.config.zip
我希望您仍在使用优化版。 让我们首先启动优化、并确保一切正常启动。 同时让我看看后台的开发流程。
要获取 vision_apps 覆盖图的内容、您必须将 vision_apps 集成到 common_proc.dtsi 文件中。
请参阅以下补丁以获取
/cfs-file/__key/communityserver-discussions-components-files/791/2262.0001_2D00_vision_5F00_apps_2D00_Integrated.patch
完成更改后重新编译 dtsi 文件并再次生成合并的应用程序映像。
请告诉我、在此之后您将观察到什么输出。
此致、
尼基尔
尊敬的 Nikhil:
我们对您的补丁进行了尝试、现在引导正常。 这里我们有一些问题、为了提供一些背景信息、我将尝试简要说明我们正在执行的步骤(从干净的 SDK v8.5开始)。
e2e.ti.com/.../8272.Patches_5F00_applied.zip
1.在 Linux 内核源基本路径(board-support/linux-5.10.153+gitAUTOINC+90c3a58fd2-g90c3a58fd2)中,我们应用了以下补丁:
- linux_changes.patch
- 1616.0001_2D00_vision_5F00_apps_2D00_Integrated.patch
与这两条路径的唯一冲突是 k3-j721e-common-proc-board.dts (第17行)中的 bootargs 行、我们将其解析为:
`bootargs ="console=ttyS2115200n8 earlycon=ns16550a、mmio32、0x02800000 root=/dev/mmcblk1p2 ew rootfsttype=ext4 rootwait";`
2.在 SDK_RTOS 的 mcusw 文件夹中应用 mcusw_changes.patch
3.清理 SD 分区设置。
-./psdk_rtos/scripts/mk-linux-card.sh /dev/mmcblk0
-./psdk_rtos/scripts/install_to_sd_card.sh
4.构建 Linux 内核 DTBS (来自${SDK_Linux})
-创建 linux-dtbs
5.构建 CAN 分析应用程序(从${PSDK_RTOS}/mcusw/build)
- make -s can_profile_app Board=j721e_evm SOC=j721e build_profile=debug core=mcu1_0 build_os_type=freeRTOS
6.通过修改${PSDK_RTOS}/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combined_appimage/config.mk 准备合并映像
- dtb_IMG 指向先前编译的 arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
- img1指向之前编译的 mcusw/binary/can_profile_app_freertos/bin/j721e/can_profile_app_freertos_mcu1_0_debug.xer5f
7.生成组合图像
8.编译 SBL_mmcsd_HLOS
使 SBL_mmcsd_img_HLOS build_profile=release board=j721e_evm SOC=j721e
9.将二进制文件复制到 SD。
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/binary/j721e_evm/bin/sbl_mmcsd_img_HLOS_mcu1_0_debug.timage/media/$boot/ tiboot3.bin
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/drv/sciclient/soc/V1/tifs.bin /media/$USER/boot/
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combin_appimage/bin/j721e_evm/combin.appimage /media/$USER/boot/app
Question:
-您能否解释一下补丁1616.0001_2D00_vision_5F00_apps_2D00_Integrated.patch 所做的修改?
我们对 Linux 内核开发和该平台的了解不多、我们希望了解更多、以便在未来更加独立。
启动后、我们尝试运行视觉应用(APP_MULTIAM)、我们注意到一些错误/我们还有更多问题:
-当我们运行/opt/vision_apps/vision_apps_init.sh 脚本时,我们只能看到来自内核[MCU2_0,MCU2_1,C66X_1,C66X_2]的远程消息,而不能看到 C71消息。 有什么想法吗?
-当我们运行 multicam 应用程序时,我们会得到一个分割错误(将在下一个响应中附加日志)。
-由于缺乏对平台的了解,我们不确定我们是否需要将 vision_apps 图像添加到多图像中,以便能够运行 multiam_app。 您能解释一下这一点吗?
-我们测试了添加 vision_apps 固件到多映像,但然后内核引导被卡住了2分钟等待一些初始化:`开始作业正在运行 udev 初始化(1min 55s/2min 55s)`
您好!
所做的修改?您能否解释一下补丁1616.0001_2D00_vision_5F00_apps_2D00_Integrated.patch
该补丁基本上会将 vision_apps.dtbo 叠层(即 rtos_memory_map.dtsi 和 vision_apps.dtsi)的内容包含到 common-proc.dtb 中。
这是必需的、因为组合应用仅提供/指向 k3-j721e-common-proc-board.dTB、并且没有 u-boot 可检测到任何覆盖层、例如 vision_Apps.dtbo。 因此、我们将其集成。
运行/opt/vision_apps/vision_apps_init.sh 脚本时,我们只能看到来自内核[MCU2_0、MCU2_1、C66X_1、C66X_2]的远程消息,但没有 C71消息。 有任何想法吗?
您能否确认您是否在 config.mk 中指向 C7x 二进制、并且在提到的路径中有相同的二进制文件?
当我们运行 multicam 应用程序时,我们收到一个分割错误
集成 vision_apps 集成补丁时、您能否确认 RTOS 绘制的存储器区域与您在 SDK 中使用的存储器区域一致?
我们测试过向多映像添加 vision_apps 固件,但随后内核引导卡住了2分钟,等待某种初始化:`开始作业正在运行 udev 初始化(1分钟55秒/2分钟55秒)
您可以尝试添加吗? 状态="已禁用"; 如下面的 k3-j721e-som-p0.dtsi 中所示?
&mcu_r5fs0_core0{
+ status ="已禁用";
+ memory-region =<&vision_apps_mcu_r5fss0_core0_dma_memory_region>
+ <&vision_apps_mcu_r5fss0_core0_memory_region>;
+};
此致、
尼基尔
尊敬的 Nikhil:
我将单独答复您的问题:
当我们运行/opt/vision_apps/vision_apps_init.sh 脚本时、我们只能看到来自内核[MCU2_0、MCU2_1、C66X_1、C66X_2]的远程消息、而不能看到 C71消息。 有什么想法吗?您能否确认您是否在 config.mk 中指向 C7x 二进制、并且在提到的路径中有相同的二进制文件?
[/报价]关于这个问题、让我进行更好的解释:
当我们在 config.mk 中只有 img1 (mcu1_0)时会发生这种情况、i.e:
IMG1 ?= mcu1_0,${SDK_RTOS}/mcusw/binary/can_profile_app_freertos/bin/j721e/can_profile_app_freertos_mcu1_0_debug.xer5f IMG2 ?= IMG3 ?= IMG4 ?= IMG5 ?= IMG6 ?= IMG7 ?= IMG8 ?=在这种情况下、我们希望不会看到来自任何其他内核的任何远程日志、因为不应该有人启动它们的固件。
但是、如果我们执行/opt/vision_apps/vision_apps_init.sh、我们将看到随附的日志:
e2e.ti.com/.../4643.vision_5F00_apps_5F00_init.log
我们有两个主要关注点:
1.如果 multiimage 不包含其他内核的任何固件,为什么我们会看到来自这些内核的远程日志?
2.如果看到这些日志是预期行为,那么为什么我们没有看到 C7内核的任何日志?
[/quote]当我们运行 multicam 应用程序时、我们收到分段错误集成 vision_apps 集成补丁时、您能否确认 RTOS 绘制的存储器区域与您在 SDK 中使用的存储器区域一致?
[/报价]很抱歉我们缺乏相关知识、如果您能指出我们在哪里查看、我们将不胜感激。
我们将在稍后回复其他主题。
提前感谢
您好!
我怀疑 Linux 可能在此加载远程内核、但 C7x 的固件可能未链接到 rootfs/lib/固件。
为了确认这一点、您能否同时与 vision_apps_init.sh 脚本日志共享完整的 Linux 启动日志?
此外、您能否检查 rootfs/lib/firmware 中的 c7x 固件是否指向 vision_apps c7x.out 文件?
要做到这一点、您能否 rootfs/lib/固件 并执行" Ls -l "。 请也给我发送这张截图。
此致、
尼基尔
尊敬的 Nikhil:
e2e.ti.com/.../7220.booting_5F00_log_5F00_and_5F00_vision_5F00_apps_5F00_init.log
这是日志。 它包含完整的 Linux 引导日志和 vision_apps_init.sh 日志。
现在、我确保在组合映像(/BOOT/app)和固件文件夹(rootfs/lib/firmware)中具有相同的 vision_apps 固件。 这次我们可以看到 C7x_1日志出现。 但 APP_MULTIAM 仍然无法正常工作。
通过比较 vision_apps_init.sh 日志和 vision_apps_init.sh 日志,当用 SPL+uBoot 引导(我们能够运行 vision_apps 的那个),并注意到 MCU2_0, MCU2_1, C6x_1 , C6x_2在这一点卡住:`app:与5个 CPU 同步... !!!`,和 C7x_1被困在这里:`IPC:等待 HLOS 准备就绪... !!!`…
在代码中搜索、我看到其他 CPU 都在等待主 CPU (我认为是 A72)、而 C7x_1期望"Linux vdev 状态为0x7"。 我不得不说,这超出了我目前的知识,只是希望它可以帮助你找到这个问题的根本原因。
提前感谢
您好!
感谢您共享 Linux 启动日志。
您能否按如下所述尝试?
/cfs-file/__key/communityserver-discussions-components-files/791/4722.config.zip[/报价]您能否确认您是否指向随附配置文件中所示的 C7x 固件? 您可以共享您的 config.mk 文件吗?
要执行此操作,您可以转至 rootfs/lib/固件 并执行" Ls -l "。 请向我发送此内容的屏幕截图[/报价]您能分享一下上面的屏幕截图吗?
从下面的日志可以清楚地看到、从 Linux 内核加载 c7x 固件期间存在问题。
[ 7.637983] k3-dsp-rproc 64800000.dsp: assigned reserved memory node vision-apps-c71-dma-memory@aa000000 [ 7.658270] k3-dsp-rproc 64800000.dsp: configured DSP for IPC-only mode [ 7.705743] remoteproc remoteproc2: 64800000.dsp is available [ 7.728645] remoteproc remoteproc2: attaching to 64800000.dsp [ 7.755513] remoteproc remoteproc2: rsc table is truncated [ 7.807713] remoteproc remoteproc2: Failed to process resources: -22 [ 7.867207] k3-dsp-rproc 64800000.dsp: failed to add register device with remoteproc core, status = -22 [ 7.934151] k3-dsp-rproc: probe of 64800000.dsp failed with error -22您是否使用 SDK 中的默认 C7x 固件? 是否进行了任何与存储器相关的更改? 这是 SDK 8.5、对吧?
[/quote]集成 vision_apps 集成补丁时,您能否确认 RTOS 的内存区域是否与您在 SDK 中使用的内存区域匹配?您能否确认以上内容?
此致、
[/quote][/quote]
尼基尔
尊敬的 Nikhil:
在较旧的日志中,我使用固件编译我们自己的构建系统,但没有任何修改。 现在、我对干净的 SDK 8.5版中的所有内容进行了另外一次测试。
找到附带了引导日志和 config.mk 的 zip 文件
e2e.ti.com/.../2541.boot_5F00_log_5F00_and_5F00_config_5F00_mk.zip
在引导日志的末尾、您将看到我使用相同的结果运行脚本/opt/vision_apps.sh、您还将看到"ls -l /lib/firmwares "的结果。
在 config.mk 中、我使用干净 SDK 中的每个映像。 (请记住、CAN 性能分析应用程序和器件树已根据您的建议进行了增补)
您可以从该响应中调用修补程序以及为重现此修补程序所执行的步骤:
我们尝试了您的补丁程序,现在启动正常。 这里我们有一些问题、为了提供一些背景信息、我将尝试简要说明我们正在执行的步骤(从干净的 SDK v8.5开始)。
Patches_applied.zip
1.在 Linux 内核源基本路径(board-support/linux-5.10.153+gitAUTOINC+90c3a58fd2-g90c3a58fd2)中,我们应用了以下补丁:
- linux_changes.patch
- 1616.0001_2D00_vision_5F00_apps_2D00_Integrated.patch
与这两条路径的唯一冲突是 k3-j721e-common-proc-board.dts (第17行)中的 bootargs 行、我们将其解析为:
`bootargs ="console=ttyS2115200n8 earlycon=ns16550a、mmio32、0x02800000 root=/dev/mmcblk1p2 ew rootfsttype=ext4 rootwait";`
2.在 SDK_RTOS 的 mcusw 文件夹中应用 mcusw_changes.patch
3.清理 SD 分区设置。
-./psdk_rtos/scripts/mk-linux-card.sh /dev/mmcblk0
-./psdk_rtos/scripts/install_to_sd_card.sh
4.构建 Linux 内核 DTBS (来自${SDK_Linux})
-创建 linux-dtbs
5.构建 CAN 分析应用程序(从${PSDK_RTOS}/mcusw/build)
- make -s can_profile_app Board=j721e_evm SOC=j721e build_profile=debug core=mcu1_0 build_os_type=freeRTOS
6.通过修改${PSDK_RTOS}/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combined_appimage/config.mk 准备合并映像
- dtb_IMG 指向先前编译的 arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
- img1指向之前编译的 mcusw/binary/can_profile_app_freertos/bin/j721e/can_profile_app_freertos_mcu1_0_debug.xer5f
7.生成组合图像
8.编译 SBL_mmcsd_HLOS
使 SBL_mmcsd_img_HLOS build_profile=release board=j721e_evm SOC=j721e
9.将二进制文件复制到 SD。
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/binary/j721e_evm/bin/sbl_mmcsd_img_HLOS_mcu1_0_debug.timage/media/$boot/ tiboot3.bin
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/drv/sciclient/soc/V1/tifs.bin /media/$USER/boot/
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combin_appimage/bin/j721e_evm/combin.appimage /media/$USER/boot/app [/ 报价]拥有所有这些信息、我必须询问:您是否能够在最终重现此问题? 我认为解决这个问题的最快方法将是尝试在您的最后重现它。
我希望这些资料足以重现问题,如果没有的话,我很乐意提供更多的细节。
感谢您的支持
尊敬的 Alejandro:
我最后尝试过这种方法。
请在下面找到有关详细步骤的常见问题解答
如常见问题解答中的补丁所示、通过禁用器件树中的 mcu1_0和 mcu1_1内核来获取 c7x 日志、只需进行很少的其他更改。
只有在检测/dev/mmcblk1p2.时遇到错误时、才需要进行一些其他更改、例如使用 PARTUUID 设置 root 等 我认为这不会在您的案例中造成任何错误?
完成这些更改后、我可以在我旁边运行 vision_apps 演示。
您能否参考常见问题解答并在最后尝试相同的解答?
我将 IPC 回波测试用作 mcu1_0中的固件。 我认为这应该不是 C7x 问题的任何问题
此致、
尼基尔
你好,Nikhil。 非常感谢您的支持。
关于几天前观察到的问题、我和 Monica (https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1198329/processor-sdk-j721e-sbl-for-hlos-sd-card-fails-in-sci-client/4544700#4544700)现在(在使用 SBL 和优化模式的组合映像运行 Vision Apps 后)、我们会观察到每次运行 一个阻止 CAN 传输的 DEM 错误。
运行 CAN_profile (使用您提供的路径修补)一段时间后、在 A72中加载内核的某个点会停止传输并出现 DEM 事件(在内部编码为7)。 重置 BUSOFF (CAN_mcanCancelAllPendingMessages 由于 CAN_mcanProcessISR 中的挂起而被调用 )
(我修改了代码以识别 导致错误的是哪个 DemConf_demEventParameter_CAN_E_hardware_error、然后编码为7)
调试可以评测当调用 CAN_mcanCancelAllPendingMessages 时、观察到 MCU_MCAN0_CFG (@0x40528050)的值为0xB800000、因此将激活 PEA、BO、EW 和 EP
我想这是由于 内核(存储器或时钟路径等)使用的 DTB 而发生的。 但我不能说在这个精确的 A72阶段会发生这种情况。
请帮您解决此问题。
谢谢
尊敬的 Nikhil:
感谢中提供的补丁:
除了问题 Pablo 描述了上述三个评论(仍待解决),我有一些问题,在 K3-j721e-som-p0.dtsi 所做的更改。
1) 1)编译器件树时 "创建 linux-dtbs "我发现以下警告:
arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:29.63-33.5: Warning (unique_unit_address): /reserved-memory/r5f-dma-memory@a0000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a0000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:401.37-403.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:35.55-39.5: Warning (unique_unit_address): /reserved-memory/r5f-memory@a0100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a0100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:397.33-399.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:41.63-45.5: Warning (unique_unit_address): /reserved-memory/r5f-dma-memory@a1000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a1000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:405.37-407.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:47.55-51.5: Warning (unique_unit_address): /reserved-memory/r5f-memory@a1100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a1100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:409.33-411.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:53.64-57.5: Warning (unique_unit_address): /reserved-memory/r5f-dma-memory@a2000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a2000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:413.38-415.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:59.56-63.5: Warning (unique_unit_address): /reserved-memory/r5f-memory@a2100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a2100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:417.34-419.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:77.64-81.5: Warning (unique_unit_address): /reserved-memory/r5f-dma-memory@a4000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a4000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:429.38-431.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:83.56-87.5: Warning (unique_unit_address): /reserved-memory/r5f-memory@a4100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a4100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:433.34-435.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:101.52-105.5: Warning (unique_unit_address): /reserved-memory/c66-dma-memory@a6000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a6000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:453.26-455.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:107.44-111.5: Warning (unique_unit_address): /reserved-memory/c66-memory@a6100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a6100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:449.22-451.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:113.52-117.5: Warning (unique_unit_address): /reserved-memory/c66-dma-memory@a7000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-dma-memory@a7000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:445.26-447.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:119.44-123.5: Warning (unique_unit_address): /reserved-memory/c66-memory@a7100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-r5f-memory@a7100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:457.22-459.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:125.52-129.5: Warning (unique_unit_address): /reserved-memory/c71-dma-memory@a8000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-c66-dma-memory@a8000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:461.26-463.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:131.44-135.5: Warning (unique_unit_address): /reserved-memory/c71-memory@a8100000: duplicate unit-address (also used in node /reserved-memory/vision-apps-c66-memory@a8100000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:465.22-467.3 arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:143.80-147.5: Warning (unique_unit_address): /reserved-memory/r5f-virtual-eth-queues@ac000000: duplicate unit-address (also used in node /reserved-memory/vision-apps-dma-memory@ac000000) also defined at arch/arm64/boot/dts/ti/k3-j721e-som-p0.dtsi:473.47-475.3
有些内存单元即使设置为禁用也可能会导致一些问题。 是否最好删除不打算使用的部分?
2 )另外, SerDes 也有一些问题:它导致内核中的 coredump。 例如:
[ 1.625229] wiz: probe of bus@100000:wiz@5000000 failed with error -12 [ 1.641722] ------------[ cut here ]------------ [ 1.646494] wiz bus@100000:wiz@5010000: Unable to create SERDES platform device [ 1.653988] WARNING: CPU: 0 PID: 61 at drivers/phy/ti/phy-j721e-wiz.c:1551 wiz_probe+0xbe8/0x1118 [ 1.663053] Modules linked in: [ 1.666169] CPU: 0 PID: 61 Comm: kworker/0:2 Tainted: G W 5.10.153-g90c3a58fd2 #1 [ 1.675144] Hardware name: Texas Instruments K3 J721E SoC (DT) [ 1.681105] Workqueue: events deferred_probe_work_func [ 1.686352] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 1.692486] pc : wiz_probe+0xbe8/0x1118 [ 1.696398] lr : wiz_probe+0xbe8/0x1118 [ 1.700310] sp : ffff800011713a80 [ 1.703688] x29: ffff800011713a80 x28: ffff00087fa1a880 [ 1.709112] x27: 0000000000000000 x26: 0000000000000002 [ 1.714536] x25: 0000000000000002 x24: ffff0008273e5c10 [ 1.719960] x23: ffff00082891d108 x22: ffff00082891d0e8 [ 1.725385] x21: 0000000000000002 x20: ffff0008273e5c10 [ 1.730808] x19: ffff00082891d080 x18: 0000000000000010 [ 1.736233] x17: 0000000000000000 x16: 0000000012117bb7 [ 1.741657] x15: ffff000827c9d930 x14: 0000000000000140 [ 1.747080] x13: ffff000827c9d930 x12: 00000000ffffffea [ 1.752504] x11: ffff8000111b04b0 x10: ffff800011198470 [ 1.757928] x9 : ffff8000111984c8 x8 : 0000000000017fe8 [ 1.763352] x7 : c0000000ffffefff x6 : 0000000000000001 [ 1.768776] x5 : 0000000000000000 x4 : 0000000000000000 [ 1.774200] x3 : 00000000ffffffff x2 : ffff800011140440 [ 1.779623] x1 : d5be478556c6da00 x0 : 0000000000000000 [ 1.785048] Call trace: [ 1.787540] wiz_probe+0xbe8/0x1118 [ 1.791097] platform_drv_probe+0x54/0xa8 [ 1.795187] really_probe+0xec/0x3e0 [ 1.798833] driver_probe_device+0x58/0xb8 [ 1.803012] __device_attach_driver+0xb8/0xe0 [ 1.807457] bus_for_each_drv+0x78/0xc8 [ 1.811370] __device_attach+0xf8/0x188 [ 1.815282] device_initial_probe+0x14/0x20 [ 1.819549] bus_probe_device+0x9c/0xa8 [ 1.823462] deferred_probe_work_func+0x88/0xc0 [ 1.828087] process_one_work+0x1a0/0x328 [ 1.832177] worker_thread+0x1f8/0x420 [ 1.836002] kthread+0x140/0x160 [ 1.839293] ret_from_fork+0x10/0x34 [ 1.842939] ---[ end trace f86c66cf3a0c6091 ]--- [ 1.847904] wiz: probe of bus@100000:wiz@5010000 failed with error -12 [ 1.864361] ------------[ cut here ]------------
我附加了启动的完整迹线。
3) 3)此外、从同一轨迹中、请注意以下消息
[ 0.000000][固件错误]:启动时内核映像未对齐,请修复引导加载程序!
您能解释一下这里发生了什么情况吗?
e2e.ti.com/.../5141.SBL_5F00_HLOS_5F00_logs.txt
非常高兴您能就上述问题提供一些反馈。
再次感谢
非常感谢、
Mònica
您好、Monica、
有些内存单元即使设置为禁用也可能会引起一些问题。 删除不打算使用的那些不是最好的吗?
这是由于 SoM.dtsi 上 RTOS 存储器映射的重复复制内容所致。 通常、这会导致任何问题。 为了消除该警告、您是否可以替换以下 K3-j721e-som-p0.dtsi 文件并编译 dtb?
此外,SerDes 有一些问题:它导致内核中的 coredump。 例如:
您能否在 k3-j721e-common-proc-board.dts 中禁用 SerDes_wiz、而不是禁用 SerDes、并重新编译 dtb 文件、如下所示
此处禁用了 SerDes_wiz、因为 SBL 为 J721e 配置了 SerDes、为了实现平滑配置、我们禁用了 SerDes。
[0.000000] [固件错误]:启动时内核映像未对齐,请修复引导加载程序!
由于这里没有 u-boot、因此内核映像加载到0x80080000位置(如 config.mk 中所述)、因为 ATF 会跳转到该位置以拾取映像。 由于此处的检查是为了将图像的基址保持2MB 对齐、 因此会打印此消息。
请告诉我,您是否能够使用上述更改运行您的用例。
此致、
尼基尔
您好 Nikhil:
我们已应用您建议的更改、但仍会观察到 SERDES 内核转储、并且 CAN DEM 事件仍然存在。 以下是失败时的内核日志:
[ 1.454743] ------------[ cut here ]------------ [ 1.459470] wiz bus@100000:wiz@5000000: Unable to create SERDES platform device [ 1.466977] WARNING: CPU: 0 PID: 21 at drivers/phy/ti/phy-j721e-wiz.c:1551 wiz_probe+0xbe8/0x1118 [ 1.476042] Modules linked in: [ 1.479160] CPU: 0 PID: 21 Comm: kworker/0:1 Not tainted 5.10.153-g90c3a58fd2 #14 [ 1.486802] Hardware name: Texas Instruments K3 J721E SoC (DT) [ 1.492766] Workqueue: events deferred_probe_work_func [ 1.498013] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 1.504147] pc : wiz_probe+0xbe8/0x1118 [ 1.508060] lr : wiz_probe+0xbe8/0x1118 [ 1.511971] sp : ffff8000115cba80 [ 1.515349] x29: ffff8000115cba80 x28: ffff00087fa1d1c8 [ 1.520774] x27: 0000000000000002 x26: 0000000000000002 [ 1.526198] x25: ffff00082892b0d8 x24: ffff800010b8a9c0 [ 1.531622] x23: ffff800010b8aca4 x22: ffff00082892b0c8 [ 1.537046] x21: 0000000000000000 x20: ffff0008273a5810 [ 1.542470] x19: ffff00082892b080 x18: 0000000000000010 [ 1.547894] x17: 0000000063b3b1a2 x16: 0000000092274fdb [ 1.553318] x15: ffff000827149330 x14: 0000000000000115 [ 1.558742] x13: ffff000827149330 x12: 00000000ffffffea [ 1.564166] x11: ffff8000111b04b0 x10: ffff800011198470 [ 1.569590] x9 : ffff8000111984c8 x8 : 0000000000017fe8 [ 1.575014] x7 : c0000000ffffefff x6 : 0000000000000001 [ 1.580438] x5 : 0000000000000000 x4 : 0000000000000000 [ 1.585861] x3 : 00000000ffffffff x2 : ffff800011140440 [ 1.591285] x1 : cfee91d9e7945500 x0 : 0000000000000000 [ 1.596710] Call trace: [ 1.599202] wiz_probe+0xbe8/0x1118 [ 1.602760] platform_drv_probe+0x54/0xa8 [ 1.606850] really_probe+0xec/0x3e0 [ 1.610496] driver_probe_device+0x58/0xb8 [ 1.614676] __device_attach_driver+0xb8/0xe0 [ 1.619121] bus_for_each_drv+0x78/0xc8 [ 1.623033] __device_attach+0xf8/0x188 [ 1.626946] device_initial_probe+0x14/0x20 [ 1.631213] bus_probe_device+0x9c/0xa8 [ 1.635126] deferred_probe_work_func+0x88/0xc0 [ 1.639752] process_one_work+0x1a0/0x328 [ 1.643842] worker_thread+0x1f8/0x420 [ 1.647666] kthread+0x140/0x160 [ 1.650957] ret_from_fork+0x10/0x34 [ 1.654603] ---[ end trace 3cb30b023cced43b ]--- [ 1.659575] wiz: probe of bus@100000:wiz@5000000 failed with error -12 [ 1.676600] ------------[ cut here ]------------ [ 1.681372] wiz bus@100000:wiz@5010000: Unable to create SERDES platform device [ 1.688866] WARNING: CPU: 0 PID: 21 at drivers/phy/ti/phy-j721e-wiz.c:1551 wiz_probe+0xbe8/0x1118 [ 1.697930] Modules linked in: [ 1.701047] CPU: 0 PID: 21 Comm: kworker/0:1 Tainted: G W 5.10.153-g90c3a58fd2 #14 [ 1.710111] Hardware name: Texas Instruments K3 J721E SoC (DT) [ 1.716072] Workqueue: events deferred_probe_work_func [ 1.721319] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 1.727453] pc : wiz_probe+0xbe8/0x1118 [ 1.731365] lr : wiz_probe+0xbe8/0x1118 [ 1.735276] sp : ffff8000115cba80 [ 1.738655] x29: ffff8000115cba80 x28: ffff00087fa1f240 [ 1.744080] x27: 0000000000000000 x26: 0000000000000002 [ 1.749504] x25: 0000000000000002 x24: ffff0008273a5c10 [ 1.754928] x23: ffff00082892b108 x22: ffff00082892b0e8 [ 1.760352] x21: 0000000000000002 x20: ffff0008273a5c10 [ 1.765776] x19: ffff00082892b080 x18: 0000000000000010 [ 1.771200] x17: 0000000063b3b1a2 x16: 0000000092274fdb [ 1.776623] x15: ffff000827149330 x14: 0000000000000140 [ 1.782047] x13: ffff000827149330 x12: 00000000ffffffea [ 1.787471] x11: ffff8000111b04b0 x10: ffff800011198470 [ 1.792895] x9 : ffff8000111984c8 x8 : 0000000000017fe8 [ 1.798319] x7 : c0000000ffffefff x6 : 0000000000000001 [ 1.803742] x5 : 0000000000000000 x4 : 0000000000000000 [ 1.809166] x3 : 00000000ffffffff x2 : ffff800011140440 [ 1.814590] x1 : cfee91d9e7945500 x0 : 0000000000000000 [ 1.820014] Call trace: [ 1.822505] wiz_probe+0xbe8/0x1118 [ 1.826063] platform_drv_probe+0x54/0xa8 [ 1.830153] really_probe+0xec/0x3e0 [ 1.833799] driver_probe_device+0x58/0xb8 [ 1.837978] __device_attach_driver+0xb8/0xe0 [ 1.842423] bus_for_each_drv+0x78/0xc8 [ 1.846335] __device_attach+0xf8/0x188 [ 1.850247] device_initial_probe+0x14/0x20 [ 1.854515] bus_probe_device+0x9c/0xa8 [ 1.858427] deferred_probe_work_func+0x88/0xc0 [ 1.863052] process_one_work+0x1a0/0x328 [ 1.867141] worker_thread+0x1f8/0x420 [ 1.870966] kthread+0x140/0x160 [ 1.874257] ret_from_fork+0x10/0x34 [ 1.877903] ---[ end trace 3cb30b023cced43c ]--- [ 1.882875] wiz: probe of bus@100000:wiz@5010000 failed with error -12
注意:附加了应用于 dtsi 和 dts 文件的更改
e2e.ti.com/.../7140.changes_5F00_proposed.zip
您是否尝试过这些更改、它们是否适合您?
谢谢
TT 摘要
目标: 能够在 MCU1_0中与 Linux 端 VISION_APPS 中的一个应用同时运行 CAN 应用程序。
由于需要提前准备好在开发模式下使用 SBL HLOS、
当前状态/重现步骤:
#define APP_NUM_ITERATION (300U)
在干净的 SDK 中、我们遵循以下步骤来构建和运行应用:
1.在 Linux 内核源基本路径(board-support/linux-5.10.153+gitAUTOINC+90c3a58fd2-g90c3a58fd2)中,我们应用了以下补丁:
- linux_changes.patch
- 1616.0001_2D00_vision_5F00_apps_2D00_Integrated.patch
与这两条路径的唯一冲突是 k3-j721e-common-proc-board.dts (第17行)中的 bootargs 行、我们将其解析为:
`bootargs ="console=ttyS2115200n8 earlycon=ns16550a、mmio32、0x02800000 root=/dev/mmcblk1p2 rw rootfsttype=ext4 rootwait";`
-应用 vision_apps_integrated.patch
2.在 SDK_RTOS 的 mcusw 文件夹中应用 mcusw_changes.patch
3.清理 SD 分区设置。
-./psdk_rtos/scripts/mk-linux-card.sh /dev/mmcblk0
-./psdk_rtos/scripts/install_to_sd_card.sh
4.构建 Linux 内核 DTBS (来自${SDK_Linux})
-创建 linux-dtbs
5.构建 CAN 分析应用程序(从${PSDK_RTOS}/mcusw/build)
- make -s can_profile_app Board=j721e_evm SOC=j721e build_profile=debug core=mcu1_0 build_os_type=freeRTOS
6.通过修改${PSDK_RTOS}/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combined_appimage/config.mk 准备合并映像(默认设置 SBL_HLOS 的优化模式)
- dtb_IMG 指向先前编译的 arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
- img1指向之前编译的 mcusw/binary/can_profile_app_freertos/bin/j721e/can_profile_app_freertos_mcu1_0_debug.xer5f
- IMG2-IMG6指向视觉应用二进制文件(MCU2_0、MCU2_1、C66_1、C66_2和 C7)
7.生成组合图像
-制造
8.在调试模式下编译 SBL_mmcsd_HLOS。 由于在调试模式(build_profile=debug 选项)中膨胀 SBL HLOS 会产生错误、因此为了绕过它、我们在 ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/SBL_component.mk 中注释了这些行
# SBL not supported for any profile # other than release # >>>>>> Comment these lines to enable debug build #ifneq ($(BUILD_PROFILE), release) #sbl_LIB_LIST = #sbl_EXAMPLE_LIST = #SBL_CFLAGS = #endif # ifneq ($(BUILD_PROFILE), release)
此外、还修改 pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/soc/k3/uart sbl_log.h、即可将所有图片显示到 UART
//#define SBL_log(dbg_level, ...) if ((int32_t)(dbg_level) <= SBL_LOG_LEVEL) { UART_printf(__VA_ARGS__); } #define SBL_log(dbg_level, ...) UART_printf(__VA_ARGS__);
-使 SBL_mmcsd_img_HLOS build_profile=debug board=j721e_evm SOC=j721e
9.将二进制文件复制到 SD。
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/binary/j721e_evm/mmcsd /bin/sbl_mmcsd_img_hlos_mcu1_0_debug.tiimage /media/$USER/boot/ tiboot3.bin
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/drv/sciclient/soc/V1/tifs.bin /media/$USER/boot/
- cp ti-processor-sdk-rtos-j721e-evm-08_05_00_11/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combin_appimage/bin/j721e_evm/combin.appimage /media/$USER/boot/app
我们面临的问题:
1. CAN 配置文件中报告的 DEM 错误
当视觉应用以优化模式使用 SBL 和组合图像运行后、我们观察 每次跑步 一个停止 CAN 传输的 DEM 错误。
运行 CAN_profile (使用提供的补丁进行修补)一段时间后、在 A72中的某个加载内核时、传输会停止并出现 DEM 事件。 为了进一步调试、我们会对代码进行检测、并看到 DEM 的 eventID 在内部编码为7。 重置 BUSOFF (CAN_mcanCancelAllPendingMessages 由于 CAN_mcanProcessISR 中的挂起而被调用)
调试可以评测当调用 CAN_mcanCancelAllPendingMessages 时、观察到 MCU_MCAN0_CFG (@0x40528050)的值为0x0B80000、因此将激活 PEA、BO、EW 和 EP
我们认为发生这种情况是因为内核(内存或时钟路径等)使用的 DTB
我们尝试过的其他测试:
2. 内核中的 coredump (SERDES)
我们面临着 SERDES 的一些问题、因为它导致内核转储
[ 1.625229] wiz: probe of bus@100000:wiz@5000000 failed with error -12 [ 1.641722] ------------[ cut here ]------------ [ 1.646494] wiz bus@100000:wiz@5010000: Unable to create SERDES platform device [ 1.653988] WARNING: CPU: 0 PID: 61 at drivers/phy/ti/phy-j721e-wiz.c:1551 wiz_probe+0xbe8/0x1118 [ 1.663053] Modules linked in: [ 1.666169] CPU: 0 PID: 61 Comm: kworker/0:2 Tainted: G W 5.10.153-g90c3a58fd2 #1 [ 1.675144] Hardware name: Texas Instruments K3 J721E SoC (DT) [ 1.681105] Workqueue: events deferred_probe_work_func [ 1.686352] pstate: 60000005 (nZCv daif -PAN -UAO -TCO BTYPE=--) [ 1.692486] pc : wiz_probe+0xbe8/0x1118 [ 1.696398] lr : wiz_probe+0xbe8/0x1118 [ 1.700310] sp : ffff800011713a80 [ 1.703688] x29: ffff800011713a80 x28: ffff00087fa1a880 [ 1.709112] x27: 0000000000000000 x26: 0000000000000002 [ 1.714536] x25: 0000000000000002 x24: ffff0008273e5c10 [ 1.719960] x23: ffff00082891d108 x22: ffff00082891d0e8 [ 1.725385] x21: 0000000000000002 x20: ffff0008273e5c10 [ 1.730808] x19: ffff00082891d080 x18: 0000000000000010 [ 1.736233] x17: 0000000000000000 x16: 0000000012117bb7 [ 1.741657] x15: ffff000827c9d930 x14: 0000000000000140 [ 1.747080] x13: ffff000827c9d930 x12: 00000000ffffffea [ 1.752504] x11: ffff8000111b04b0 x10: ffff800011198470 [ 1.757928] x9 : ffff8000111984c8 x8 : 0000000000017fe8 [ 1.763352] x7 : c0000000ffffefff x6 : 0000000000000001 [ 1.768776] x5 : 0000000000000000 x4 : 0000000000000000 [ 1.774200] x3 : 00000000ffffffff x2 : ffff800011140440 [ 1.779623] x1 : d5be478556c6da00 x0 : 0000000000000000 [ 1.785048] Call trace: [ 1.787540] wiz_probe+0xbe8/0x1118 [ 1.791097] platform_drv_probe+0x54/0xa8 [ 1.795187] really_probe+0xec/0x3e0 [ 1.798833] driver_probe_device+0x58/0xb8 [ 1.803012] __device_attach_driver+0xb8/0xe0 [ 1.807457] bus_for_each_drv+0x78/0xc8 [ 1.811370] __device_attach+0xf8/0x188 [ 1.815282] device_initial_probe+0x14/0x20 [ 1.819549] bus_probe_device+0x9c/0xa8 [ 1.823462] deferred_probe_work_func+0x88/0xc0 [ 1.828087] process_one_work+0x1a0/0x328 [ 1.832177] worker_thread+0x1f8/0x420 [ 1.836002] kthread+0x140/0x160 [ 1.839293] ret_from_fork+0x10/0x34 [ 1.842939] ---[ end trace f86c66cf3a0c6091 ]--- [ 1.847904] wiz: probe of bus@100000:wiz@5010000 failed with error -12 [ 1.864361] ------------[ cut here ]------------
Nikhil 在常见问题解答中作出了一些改进、
但我们仍然会看到同样的问题、因此到目前为止我们还没有对他进行过更改
您好,帕斯
有任何更新吗? 您是否能够在最终重现此案例?
关于您的问题、我们不明白您为什么要这样问。 我们在 MCU1_0正在运行且加载内核时观察到该问题。 有时、问题会出现。 应用程序使用由 SBL 加载的二进制文件(参见 Monica 描述的第6点)准备、但只有 Arago 不可用时、Vision 应用程序才会运行。
6.通过修改${PSDK_RTOS}/pdk_jacinto_08_05_00_36/packages/ti/boot/sbl/tools/combined_appimage/config.mk 准备合并映像(默认设置 SBL_HLOS 的优化模式)
- dtb_IMG 指向先前编译的 arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
- img1指向之前编译的 mcusw/binary/can_profile_app_freertos/bin/j721e/can_profile_app_freertos_mcu1_0_debug.xer5f- IMG2-IMG6指向视觉应用二进制文件(MCU2_0、MCU2_1、C66_1、C66_2和 C7)
[/报价]我们假设问题是由设备树中的某些配置引起的、但可能是错误的假设。
谢谢
您好、Parth。
已获知仅 TI 在本帖子中提到要生成 DTB 的更改。
总之、这里是我们使用的文件。
e2e.ti.com/.../2744.DTS_5F00_and_5F00_DTSI_5F00_changes_5F00_propsed_5F00_by_5F00_TI.zip
非常感谢
您好、Pablo、
目标: 能够在 MCU1_0中与 Linux 端 VISION_APPS 中的一个应用同时运行一个 CAN 应用程序。
目标是运行任何 CAN 应用程序、或者您是否特别希望 CAN 配置应用程序处于仅 TX 模式?
如果任何 CAN 应用程序正常、您可以在环回模式下运行 CAN 分析应用程序。 这是我最后的工作很好。
出现 DEM 错误时、您是否将一个 CAN 工具连接到能够接收 CAN 消息的电路板? 我怀疑收到错误报告、因为收件人没有确认。
此致、
帕尔特
您好、Pablo、
很抱歉、我在上一篇文章中不清楚。
我是 能够重现 在仅 TX 模式下运行应用程序时的错误。 最后、环回模式运行良好、因此如果您对仅 TX 模式没有特定要求、则可以继续进行环回模式测试。
出现 DEM 错误时,您是否有连接至可以接收 CAN 消息的电路板的 CAN 工具? 我怀疑收到错误报告、因为收件人没有确认。
关于这一点、TX 模式需要将一个 CAN 工具连接到可接收数据的电路板、否则它将在信标上继续等待确认。 我怀疑这可能是您看到 DEM 错误的原因。 我目前没有 CAN 工具、因此无法验证、我只是想询问您是否已连接。
此致、
帕尔特
您好、Parth:
谢谢 我们尝试重现此类情况、 尝试确认 问题在您身边重现。 重新记录您的最后一句"我目前没有 CAN 工具、因此我无法核实"、我得出结论认为您与问题的背景不一致。
我们可能没有特别通知您、我们正在努力将 TDA4系统集成到一辆车中并通过 CANFD 进行交互。 很明显、我们需要 TX 和 RX、 回送明显被丢弃 。 在观察到和描述的问题中、我们在无环回且仅传输中使用您的应用演示(CAN 配置文件):
我们正在开发 SDK v8.5,在调试模式下使用 can_profile 演示,并‘ CAN_TX_ONLY_MODE (STD_ON)" 无环回 ‘CAN_Loopback_enable (STD_OFF)' 对于来自 MCUSW 封装的 MCU1_0、在 can_profile.h 中进行了微小的更改、我们将迭代次数从2U 更改为300U
帕尔特,我要对 你的声明说:
关于这一点,TX 模式需要一个 CAN 工具连接至可接收数据的电路板[/报价]我很惊讶你认为我们 不知道。 事实是、 我们 正在连接 CAN 工具、您没有。 然后,您没有重现问题,因为您没有在真实帧传输中的知识,这确实会导致错误(根据规范)。
我们怀疑与内核加载发生了一些冲突(PLL 中存在一些问题?)
[/quote]运行 CAN_profile (使用提供的补丁进行了修补)一段时间后,在 A72中加载内核的某个点,传输可能会停止,DEM 事件会出现。 [/报价]我们观察到、如果在 Linux 在 A72中完全加载后完成初始化、则不会出现该问题。 然后、这就是我们现在的解决方法:等待一段时间(20秒)来确保内核和 Arago 已完全加载。
我们在之前的活动中希望 TI 提供支持以在 DTS/内核等中进行调查。
如果您在没有环回模式且连接了任何 CAN 工具的情况下尝试重现问题、我们将不胜感激。
谢谢
您好、Pablo、
CAN 收发器似乎正在由 Linux 探测、这会干扰 RTOS 上的 CAN。 请从 DTS 禁用 CAN 收发器节点并尝试。
请查看下面所需的更改:
通过这些更改、我已经能够运行 CAN 配置文件应用300次迭代、而不会出现任何问题。
此致、
帕尔特
你好,帕斯。
我们应用了您的贴片、 问题已解决 最后一点。 谢谢!
回复到我们列为"机票摘要"的事项 , 在考虑如何降低栅极驱动器电流时、 在 Linux 中顺利引导早期 CAN
机票摘要
1.-组合映像只能创建为优化映像、我们希望进入开发模式、以便 U-Boot 在 A72启动时运行。
2.- SERDES 问题。
我们将收到有关这方面的任何建议/提示/解决方案。
谢谢
大家好、Parth、
感谢您的答复。 请注意该线程中缺失的要修复的点(Pablo 上述提到)
原谅我缺乏 DTS 的知识,也许你的下一个回复会帮助我更好地理解,但在你的补丁:
&MCU_mcan0{
状态="已禁用";
- pinctrl-names ="默认值";
- pinctrl-0 =<&mcu_mcan0_pins_default>;
- phys =<&transceiver1>;
+ //pinctrl-names ="默认";
+ //pinctrl-0 =<&mcu_mcan0_PINS_default>;
+ //phys =<&transceiver1>;
};
MCU_mcan0的状态已禁用。 如果禁用了此模块、它的定义/属性真的很重要吗?
您好、Pablo、
请查找更改以修复随附的 SerDes 故障。
此致、
帕尔特