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.

[参考译文] J784S4XEVM:DDR 从32G 减少到16GB 后的视觉应用性能打印残桩

Guru**** 2468460 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1470873/j784s4xevm-vision-apps-performance-print-stucks-after-ddr-reduction-from-32g-to-16gb

器件型号:J784S4XEVM

工具与软件:

尊敬的 TI:

跟进自:  https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1468705/j784s4xevm-linux-kernel-panic-while-extensive-usage-of-ram-on-custom-board/5644396 

在将 DDR 从32GB 降低至16GB (仅限0和1个实例)的线程进行更改后、vision_apps 存在问题。

为了反映这种 DDR 尺寸的减小、是否需要在 PSDK RTOS 中进行其他一些更改?

我们使用 SDK 10.0版本。

场景1 -电流行为:

-包含自上一线程的正确的 Linux dtsi 文件。

-在 RTOS SDK 中集成生成的 j784s4_board_ddrRegInit.h 文件

-更改 app_perf 以将 DDR 实例数从4个减少到2个,如下所示:

 

---
 utils/perf_stats/src/app_perf_stats_freertos.c | 16 +---------------
 1 file changed, 1 insertion(+), 15 deletions(-)

diff --git a/utils/perf_stats/src/app_perf_stats_freertos.c b/utils/perf_stats/src/app_perf_stats_freertos.c
index ff0825d..b2a13f9 100644
--- a/utils/perf_stats/src/app_perf_stats_freertos.c
+++ b/utils/perf_stats/src/app_perf_stats_freertos.c
@@ -102,7 +102,7 @@
 #elif defined (SOC_J721S2)
 #define APP_PERF_NUM_DDR_INSTANCES      (2u)
 #elif defined (SOC_J784S4)
-#define APP_PERF_NUM_DDR_INSTANCES      (4u)
+#define APP_PERF_NUM_DDR_INSTANCES      (2u)
 #endif
 
 /** \brief Max number of tasks whose information can be locally maintained (transmitted may be smaller) */
@@ -755,20 +755,6 @@ void appPerfStatsDdrStatsReadCounters(uint32_t *val0, uint32_t *val1, uint32_t *
     cnt3[1]    = (volatile uint32_t *)0x029A0110;
     #endif
 
-    #if defined(SOC_J784S4)
-    cnt_sel[2] = (volatile uint32_t *)0x029C0100;
-    cnt0[2]    = (volatile uint32_t *)0x029C0104;
-    cnt1[2]    = (volatile uint32_t *)0x029C0108;
-    cnt2[2]    = (volatile uint32_t *)0x029C010C;
-    cnt3[2]    = (volatile uint32_t *)0x029C0110;
-
-    cnt_sel[3] = (volatile uint32_t *)0x029E0100;
-    cnt0[3]    = (volatile uint32_t *)0x029E0104;
-    cnt1[3]    = (volatile uint32_t *)0x029E0108;
-    cnt2[3]    = (volatile uint32_t *)0x029E010C;
-    cnt3[3]    = (volatile uint32_t *)0x029E0110;
-    #endif
-
     if(is_first_time)
     {
         is_first_time = 0;
-- 
2.34.1

-当我们运行 single_app_cam 并尝试打印统计数据时,它会在以下位置中断(只有 Ctrl+C 会停止程序)。

Detailed CPU performance/memory statistics,
===========================================

    56.333295 s: DDR_SHARED_MEM: Alloc's: 21 alloc's of 46326038 bytes
    56.333304 s: DDR_SHARED_MEM: Free's : 0 free's  of 0 bytes
    56.333311 s: DDR_SHARED_MEM: Open's : 21 allocs  of 46326038 bytes

CPU: mcu2_0: TASK:      FREERTOS_TA:  18.48 %
CPU: mcu2_0: TASK:           IPC_RX:   0. 1 %
CPU: mcu2_0: TASK:       REMOTE_SRV:   0. 0 %
CPU: mcu2_0: TASK:        LOAD_TEST:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CPU_0:  12. 3 %
CPU: mcu2_0: TASK:        TIVX_V1NF:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_V1LDC:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_V1MSC1:   0.14 %
CPU: mcu2_0: TASK:      TIVX_V1MSC2:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_V1VISS:   0.20 %
CPU: mcu2_0: TASK:       TIVX_CAPT1:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT2:   0. 6 %
CPU: mcu2_0: TASK:       TIVX_CAPT3:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT4:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT5:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT6:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT7:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT8:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CAPT9:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_CAPT10:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_CAPT11:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_CAPT12:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_DISP1:   0. 9 %
CPU: mcu2_0: TASK:       TIVX_DISP2:   0. 0 %
CPU: mcu2_0: TASK:       TIVX_CSITX:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_CSITX2:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_DPM2M1:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_DPM2M2:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_DPM2M3:   0. 0 %
CPU: mcu2_0: TASK:      TIVX_DPM2M4:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_RX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %
CPU: mcu2_0: TASK:      IPC_TEST_TX:   0. 0 %


^C
Clean up and exit while handling signal 2
Application did not close some rpmsg_char devices

此外、我们还开始获取以下先前不存在的打印输出:

[MCU2_0] 56.213483 s:vx_zone_error:[tivxDisplayProcess:1182] display:ERROR:ERROR:Error:Wrong Operation Mode selected!
[MCU2_0] 56.245172 s:vx_zone_error:[tivxDisplayProcess:1182] display:ERROR:ERROR:Error:Wrong Operation Mode selected!
[MCU2_0] 56.276850 s:vx_zone_error:[tivxDisplayProcess:1182] display:ERROR:ERROR:Error:选择了错误的工作模式!
[MCU2_0] 56.308535 s:vx_zone_error:[tivxDisplayProcess:1182]显示:ERROR:ERROR:Error:选择了错误的工作模式!

请注意、我们这边没有 Display 可运行、但这不是之前的行为。

我们确实设置了正确模式、但当 tivxDisplayProcess 读取它时、它的值并不相同、则是一些垃圾。

场景2:

如果我们仅在 Linux 中恢复 DDR 存储器映射、生成的 dtsi 文件(在 Kevin 的相关帖子答案中)、vision_apps 和单个 cam 应用可以正常工作。

对于此设置、我们在相关文章中提到了内核严重错误。由于错误的 DDR 设置。

此致、

Milena