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.

AM5728: Concurrent peripheral access in RTOS

Part Number: AM5728


Dear Champs,

In TI RTOS processor SDK, is it possible to access peripherals from different cores concurrently?

e.g. I want to know if ARM-Cortex-A15 core can access UART1 concurrently while DSP is accessing UART0 in TI RTOS.

Thanks and Best Regards,

SI.

  • Hi,

    The RTOS team have been notified. They will respond here.
  • SI,

    Yes, it is possible to access peripherals from different cores concurrently as you specify in your example ARM Cortex A8 accessing UART1 and DSP is accessing a different UART instance with some modification to the board library.

    We recently implemented this on AM572x GP EVM for on of the customer use.  In the current SDK for AM572x GP EVM, both ARM Linux and DSP/M4 RTOS are configured to send UART log messages to UART3 as it has a buffer (u20) and a debug header (p10), which allows to connect this port to serial terminal via FTDI USB to serial cable.If it is necessary to have one more debug UART port for DSP/M4 you can use AM572x UART9 RXD and TXD pins connected to pins 10 and 9 of the P17 connector. You will need to add a buffer and header to connect to UART9 port.

    We decided to use UART3 for ARM Linux and decided to chnage the UART instance for RTOS. In order to use UART9 in RTOS, you will need to change BOARD_UART_INSTANCE definition in board_cfg.h to change the port number and then enable the UART9 clocks by adding the following code to evmAM572x_clocks.c

    CSL_FINST(l4PerCmReg->CM_L4PER2_UART9_CLKCTRL_REG,
    
           L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_MODULEMODE, ENABLE);
    
    while(CSL_L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_IDLEST_FUNC !=
    
          CSL_FEXT(l4PerCmReg->CM_L4PER2_UART9_CLKCTRL_REG,
    
           L4PER_CM_CORE_COMPONENT_CM_L4PER2_UART9_CLKCTRL_REG_IDLEST));

    Also, confirm, the pinmux for UART9 is already done in the board library(boardPadDelayInit.c). If you need any other UART other than the UARTs (UART3, 8,9,10) configured in that file, you will need to confirm that the default pinmux setup enables atleast the RX and TX pins for that UART instance.

    /* UART9 - uart9_rxd on AA3 - UART9 */
         {0x1744, 0x60003, {0x0, 0, 0}, {0x0, 0, 0}, {0x0, 0, 0}},
    
    /* UART9 - uart9_txd on AB9 - UART9 */
         {0x1748, 0x00003, {0x0, 0, 0}, {0x0, 0, 0}, {0x0, 0, 0}},
    
    

    Hope this input provides some insights.

    Regards,

    Rahul