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.

AWR1843BOOST: mmWave SDK doc ref guide: question on components, drivers

Expert 2025 points
Part Number: AWR1843BOOST

I'm studying the user guide for the mmWave SDK, and got a question on the layers or sub-components as presented in the doc; specifically the "drivers" layer.

This is what the guide has (snippers from various places):

So my question is, or what I don't understand, why are "IP Drivers"  (IP - internal peripheral?) are part of mmWave SDK at all.   Arent' / should' these logically sit as part of SoC support package , below or at level of TI-RTOS? What is the HW IP lowest block? Another set of low-level drivers?

Looking at what code includes, as e.g.:

#include <ti/drivers/soc/soc.h>
#include <ti/drivers/esm/esm.h>
#include <ti/drivers/crc/crc.h>
#include <ti/drivers/uart/UART.h>
#include <ti/drivers/gpio/gpio.h>
#include <ti/drivers/mailbox/mailbox.h>

So by the include path, those seems to be part of a general driver's package from ti, which is probably/likely shared among few socs/mcus/chips.

On the other hand, mmWave SDK stack contains OSAL, which is, apparently used by the higher IP Drivers layer. I cannot think of low-level drivers requiring an OS, so would thus guess that the mmWave SDK extends the basic low-level drivers which are not using any OS services..?

Just from the driver table list from the SDK guide, I'm convinced I've seen at least couple of those drivers listed _without_ ever having used mmWave SDK, so I'm lost about what's the difference then if any.

e.g. GPIO, CRC, I2C, SPI etc .... 

none of these I can think of requiring any OSAL (unless written specifically on top of a RTOS)

Whats the difference between drivers outside of mmWave SDK and inside this SDK? 

  • Hi,

    There are different layer within the IP driver, one is low level (marked Hardware IP in above picture) where it directly interacts with Hardware registers, there are no OS trace in those files. 

    And on top of this low level there is IP drivers, which contains function requiring some of OS dependent features, like memory-alloc, semaphore etc. which are connected to TI-RTOS (in SDK) via OSAL to make driver library OS-agnostic. This layer has many internal functions as well (static) which are used to fulfill required functionality of IP and calls low level register functions.

    Further, there is slight layer of APIs on top of this, API which is being used by the application.

    For I2C peripheral, here is the sequence in mmwave SDK driver :  i2c.c (API) -> i2c_master.c (Drivers) -> i2c_reg.c (Hardware IP)

    Regards,

    Jitendra

  • Hi Jitendra Gupta,

    Thank you for clarifying this, and the example of this stack with i2c driver.

    Overall I'm admiring the software architecting work done by the TI.