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.

66AK2G12: 66AK2G1x UARTs - how many? How do the PRU-CSS UARTs differ?

Part Number: 66AK2G12

Tool/software:

Hello, we are bringing up a new board with a 66AK2G1x processor.   We are having some confusion surrounding the UARTs as they are listed in the datasheet and technical reference manual.

Can you help clarify how these UARTs are related?  


 The datasheet clearly calls out that there are only 3 UART interfaces in the part, but the pinout and register definitions refer to :

* UART0 (RXD = pin T4 / TXD = pin T1)

* UART1 (RXD = pin T3 / TXD = pin T5)

* UART2 (pin E21 / TXD = D21)

* PR0_UART0 ( RXD = pin E25 / TXD = pin E24)

* PR1_UART0 (RXD = pin C4 / TXD = pin B9)

The TRM makes this even more confusing by repeating that there are only 3 UARTs, but then shows  PRU-ICSS_0 and PRU-ICSS_1 UARTs with specific register settings separate from the generic UART0-2.

Are there actually 5 UARTs, or are the PR*_UART0 ports somehow a copy of UART0?  How does this work?  I have not found anything in the Technical Reference Manual that describes how the PR* UARTs are different from UART0-2, though they seem to have separate registers.  In fact, the TRM shows "UART0_TXD" and "UART0_RXD" names in a figure shows "PRU-ICSS" timing.

Thanks,
 - James 

  • Hello James,

    First off, please note that we are limited in the support we can offer on hardware and software questions on K2G. I happen to know a bit about this subject, so I can give some comments, but my guidance will be limited.

    What is on the hardware?

    There are 3 standalone UARTs on the K2G: UART0, UART1, and UART2.

    However, the K2G also has 2 separate PRU-ICSS subsystems. And each PRU-ICSS subsystem also has a UART. So that is PRU_UART0 and PRU_UART1.

    Technically the PRU cores can also emulate the UART interface, adding "software" UARTs. So I will call PRU_UART0/1 "hardware PRU UARTs" to distinguish.

    The hardware PRU UARTs are full UARTs, but they are a slightly different circuit design. So they may have slightly different limitations (e.g., different top speed - refer to Technical reference manual / TRM for details). PRU UARTs will be documented under Processors > PRU > PRU UART.

    What is supported in software? 

    I'll comment from the Linux side. We never added Linux support for the PRU Hardware UARTs on K2G. However, I believe the register interface is the same for all hardware UARTs, so it is fairly simple to pass Linux the updated base address of the PRU UART and allow Linux to interact with it.

    We just added support on AM62x for Linux controlling the PRU UART. If you want, I can ask for the patches for you to use as a reference.

    We also never added support for Linux controlling a software PRU UART implementation on K2G. You can find the SDK 6.3 documentation for that running on AM335x here: https://software-dl.ti.com/processor-sdk-linux/esd/docs/06_03_00_106/AM335X/linux/Foundational_Components_PRU-ICSS_PRU_ICSSG.html#pru-icss-soft-uart 

    We have not supported PRU firmware development on K2G for a few years now. If that is something you are interested in doing, I can send you the resources for other PRU devices. But I won't be able to offer any support beyond that.

    Regards,

    Nick