From a1c31c0548037a191333b99ed1d79c4e25f76a6a Mon Sep 17 00:00:00 2001 From: Angela Stegmaier Date: Sun, 9 Aug 2020 09:57:36 +0530 Subject: [PATCH] pdk: packages: ti: drv: ipc: examples: common: src: ipc_utils: Cachewb the trace buffer upon a crash Currently the c6x firmware trace buffer is not written back to DDR after a crash/exception. This avoids A72/Linux viewing the crash dump. Fix this. Signed-off-by: Angela Stegmaier Signed-off-by: Keerthy --- .../ti/drv/ipc/examples/common/j721e/ipc_override.cfg | 3 +++ packages/ti/drv/ipc/examples/common/src/ipc_utils.c | 8 ++++++++ packages/ti/drv/ipc/examples/common/src/ipc_utils.h | 1 + 3 files changed, 12 insertions(+) diff --git a/packages/ti/drv/ipc/examples/common/j721e/ipc_override.cfg b/packages/ti/drv/ipc/examples/common/j721e/ipc_override.cfg index 60b7e173..0974da04 100644 --- a/packages/ti/drv/ipc/examples/common/j721e/ipc_override.cfg +++ b/packages/ti/drv/ipc/examples/common/j721e/ipc_override.cfg @@ -68,6 +68,9 @@ if(coreId=="c66xdsp_1" || coreId=="c66xdsp_2") { /* TraceBuf Idle Function */ Idle.addFunc('&traceBuf_cacheWb'); + + var Exception = xdc.useModule('ti.sysbios.family.c64p.Exception'); + Exception.exceptionHook = '&traceBuf_cacheWb_Exception'; } /* Set ipc/VRing buffer as uncached */ diff --git a/packages/ti/drv/ipc/examples/common/src/ipc_utils.c b/packages/ti/drv/ipc/examples/common/src/ipc_utils.c index 03d189ad..be4fc2c5 100644 --- a/packages/ti/drv/ipc/examples/common/src/ipc_utils.c +++ b/packages/ti/drv/ipc/examples/common/src/ipc_utils.c @@ -114,3 +114,11 @@ Void traceBuf_cacheWb() } } } + +Void traceBuf_cacheWb_Exception() +{ + uint8_t *traceBufAddr = 0; + + traceBufAddr = Ipc_getResourceTraceBufPtr(); + CacheP_wb((const void *)traceBufAddr, 0x80000); +} diff --git a/packages/ti/drv/ipc/examples/common/src/ipc_utils.h b/packages/ti/drv/ipc/examples/common/src/ipc_utils.h index 0d96062f..27d94f71 100644 --- a/packages/ti/drv/ipc/examples/common/src/ipc_utils.h +++ b/packages/ti/drv/ipc/examples/common/src/ipc_utils.h @@ -47,6 +47,7 @@ extern "C" { void SetManualBreak(); void sysIdleLoop(void); void traceBuf_cacheWb(void); +Void traceBuf_cacheWb_Exception(); #ifdef __cplusplus } -- 2.17.1