TMDS64EVM: AM6442: MCU+SDK ESM0 Interrupts

Part Number: TMDS64EVM
Other Parts Discussed in Thread: AM6442

Using the MCU+SDK library provided by your company,
interrupts generated in the AM6442's ESM0 (main domain) are passed to MCU_ESM0 (MCU domain), and the M core processes the interrupt handler.
A problem has been found in the library used at that time.
1. Our Question and Request
- Are the source code error and workaround we describe below correct?
- We need an official version with the error corrected. When will you be able to issue it?
2. What We Want to Do
- We want to create a handler that uses the M core to handle interrupts generated in ESM0 (main domain) (for example, DED interrupts during DDRSDRAM reads).
- We want to distinguish interrupts from ESM0 (main domain) from interrupts from MCU_ESM0 (MCU domain) and process them differently.
3. Our Test Environment
- We will use your evaluation board, TMDS64GSEVM (AM6442).
- For the M core software, we are using your provided MCU+SDK 11.00.00.15.
- For the A core software, we are using your provided PROCESSOR-SDK-LINUX-AM64X 09_00_00_03.
4. Unexpected Phenomenon
- The user-created handler function is being called twice, but the value of the esmInstType argument in the first handler function appears to be incorrect.
  It should be 2 (SDL_ESM_INST_MAIN_ESM0), but it is being returned as 1 (SDL_ESM_INST_MCU_ESM0).
5. Suspected Source Code Error
- Library: ${MCU_PLUS_SDK_PATH}/source/sdl/lib/sdl.am64x.m4f.ti-arm-clang.debug.lib
- Source File: ${MCU_PLUS_SDK_PATH}/source/sdl/esm/v0/v0_0/sdl_esm_priv.c
- Function: void SDL_ESM_loInterruptHandler (void *arg)
- Description: Line 313
  SDL_ESM_interruptHandler((uint32_t)base_addr, ESM_INTR_PRIORITY_LEVEL_LOW, arg);
6. Our Hypothesis
- We believe this is a simple error in the source code.
- Correction Example: We believe it should be written as in line 270.
  SDL_ESM_interruptHandler((uint32_t)base_addr, ESM_INTR_PRIORITY_LEVEL_LOW, (void *)esm_inst);
7. Our Current Workaround
- Currently, MCU_ESM0 interrupts are unnecessary.
  In the future, MCU_ESM0 interrupts will also be handled.
- Therefore, the first call to the user-defined handler is assumed to be an indirect notification from ESM0.
  The domain in which the interrupt occurred, esmInstType, is invalid information and is ignored.
  The interrupt source, intSrc, is used because it indicates the interrupt source within ESM0.
- The second call to the user-defined handler is ignored.