Part Number: AM6442
I have an R5F project on the AM64442 (SK and EVM) using RPMSG which works. DebugP_log() logs correctly to shared memory with Linux. I can see all of my DebugP_log() output in /sys/kernel/debug/remoteproc/remoteproc0/trace0. I can communicate with RPMSG using rpmsg_char_simple example from Linux.
I modify syscfg file to add a UART.
DebugP_log() stops working.
RPMSG tests using rpmsg_char_simple return errors with no channel detected.
Tracked down to ti_power_clock_config.c, in the call to Module_clockSetFrequency(). The code uses the following table with an entry for the UART.
If I DO NOT initialize the UART clock, then RPMSG and DebugP_log() to trace0 work just fine.
If I DO initialize the UART clock, then RPMSG and DebugP_log() to trace0 immediately stop working.
void Module_clockSetFrequency(void)
{
int32_t status;
uint32_t i = 0;
DebugP_log("Module_clockSetFrequency() - ENTRY\n");
while(gSocModulesClockFrequency[i].moduleId!=SOC_MODULES_END)
{
DebugP_log("Module_clockSetFrequency() - SOC_moduleSetClockFrequency(%lu,%lu,%lu)\n",
gSocModulesClockFrequency[i].moduleId,
gSocModulesClockFrequency[i].clkId,
gSocModulesClockFrequency[i].clkRate);
status = SOC_moduleSetClockFrequency(
gSocModulesClockFrequency[i].moduleId,
gSocModulesClockFrequency[i].clkId,
gSocModulesClockFrequency[i].clkRate
);
DebugP_assertNoLog(status == SystemP_SUCCESS);
i++;
}
}
SOC_ModuleClockFrequency gSocModulesClockFrequency[] = {
// { TISCI_DEV_UART0, TISCI_DEV_UART0_FCLK_CLK, 96000000 },
{ SOC_MODULES_END, SOC_MODULES_END, SOC_MODULES_END },
};
???How do I use BOTH UART and my already-functioning RPMSG/DebugP_log()-to-trace0 in the same program???