AM64x MCU+ SDK  09.02.00
RTI

The Windowed Watchdog Timer (WWDT) generates reset after a programmable period, if not serviced within that period. This time-out boundary is configurable, and the windowed feature allows the start time boundary to be configurable. The WWDT can generate an Interrupt, if not serviced within window (Open Window) defined by start time and time-out boundary. Also the WWDT can generate an Interrupt if serviced outside Open Window (within Closed Window). Generation of Interrupt depends on the WWDT Reaction configuration. SDL supports configuration of the watchdog timers. It also supports notification of the error via ESM interrupt. Additionally, APIs for checking the status of the watchdog timer is provided.

Features Supported

The RTI modules include the following main features:

  • Ability to to initialize the RTI -DWWD module.
  • Ability to configure RTI -DWWD module.
  • Ability to service an RTI instance.
  • Ability to read Status of the configuration.
  • Ability to read back static register.

There are 7 RTI Modules in the device – 1 in the MCU domain and 6 in the Main domain

Instances in MCU domain:

1) MCU_RTI0 is dedicated to the MCU cluster (MCU_M4FSS0) in lockstep and when unlocked serves as a Windowed Watchdog for the first M4F CPU core in the MCU domain (MCU_M4FSS0_CORE0).

Instances in Main domain:

1) RTI0 is dedicated to the first A53 CPU core in the A53 cluster (A53SS0_CORE0) 2) RTI1 is dedicated to the second A53 CPU core in the A53 cluster (A53SS0_CORE1) 3) RTI8 is dedicated to the first R5F CPU core in the Main domain (R5FSS0_CORE0) 4) RTI9 is dedicated to the second R5F CPU core in the Main domain (R5FSS0_CORE1) 5) RTI10 is dedicated to the third R5F CPU core in the Main domain (R5FSS1_CORE0) 6) RTI11 is dedicated to the fourth R5F CPU core in the Main domain (R5FSS1_CORE1)

All WWDT instances that are provisioned for a particular CPU core should not be used by any other CPU cores.

SysConfig Features

  • None

Features NOT Supported

  • None

Features NOT Supported

  • None

Important Usage Guidelines

  • None

Example Usage

The following shows an example of SDL RTI API.

Include the below file to access the APIs

#include <sdl/sdl_rti.h>

Config an RTI Instance

/* Configure RTI parameters for preload, window and reaction*/
pConfig.SDL_RTI_dwwdPreloadVal = RTIGetPreloadValue(RTI_CLOCK_SOURCE_200KHZ, RTI_WDT_TIMEOUT);
retVal = SDL_RTI_config(SDL_WDT0_U_BASE, &pConfig);
if (retVal == SDL_EFAIL)
{
UART_printf("Error during Window configuration.\n");
}

Verify the config

/* Verify the config */
retVal = SDL_RTI_verifyConfig(SDL_WDT0_U_BASE, &pConfig);
if (retVal == SDL_EFAIL)
{
UART_printf("Error during Window Verify configuration.\n");
}

Read the static registers

SDL_RTI_staticRegs pStaticRegs;
retVal = SDL_RTI_readStaticRegs(SDL_WDT0_U_BASE, &pStaticRegs);

Start an RTI Instance

SDL_RTI_start(SDL_WDT0_U_BASE);

Start an RTI Instance

/* Servicing of the watchdog is done by the core that is being monitored with the watchdg */
SDL_RTI_service(SDL_WDT0_U_BASE);

Config an RTI Instance

/* Configure RTI parameters */
pConfig.SDL_RTI_dwwdPreloadVal = RTIGetPreloadValue(RTI_CLOCK_SOURCE_200MHZ_FREQ_KHZ, RTI_WDT_TIMEOUT);
retVal = SDL_RTI_config(SDL_INSTANCE_RTI, &pConfig);
if (retVal == SDL_EFAIL)
{
UART_printf("Error during Window configuration.\n");
}

Verify the config

/* Verify the config */
retVal = SDL_RTI_verifyConfig(SDL_INSTANCE_RTI, &pConfig);
if (retVal == SDL_EFAIL)
{
UART_printf("Error during Window Verify configuration.\n");
}

Read the static registers

SDL_RTI_staticRegs pStaticRegs;
retVal = SDL_RTI_readStaticRegs(SDL_INSTANCE_RTI, &pStaticRegs);

Start an RTI Instance

SDL_RTI_start(SDL_INSTANCE_RTI);

Start an RTI Instance

/* Servicing of the watchdog is done by the core that is being monitored with the watchdg */
SDL_RTI_service(SDL_INSTANCE_RTI);

API

APIs for SDL RTI

SDL_RTI_configParms::SDL_RTI_dwwdReaction
uint32_t SDL_RTI_dwwdReaction
Definition: sdl_ip_rti.h:95
SDL_RTI_verifyConfig
int32_t SDL_RTI_verifyConfig(SDL_RTI_InstanceType InstanceType, SDL_RTI_configParms *pConfig)
RTI API to verify the written configuration. This API can be used after calling SDL_RTI_config in ord...
RTI_DWWD_WINDOWSIZE_100_PERCENT
#define RTI_DWWD_WINDOWSIZE_100_PERCENT
Definition: sdl_ip_rti.h:184
SDL_RTI_config
int32_t SDL_RTI_config(SDL_RTI_InstanceType InstanceType, const SDL_RTI_configParms *pConfig)
RTI configuration API. This API configures the specified RTI instance using the provided configuratio...
SDL_RTI_configParms::SDL_RTI_dwwdPreloadVal
uint32_t SDL_RTI_dwwdPreloadVal
Definition: sdl_ip_rti.h:91
sdl_rti.h
SDL_RTI_readStaticRegs
int32_t SDL_RTI_readStaticRegs(SDL_RTI_InstanceType InstanceType, SDL_RTI_staticRegs *pStaticRegs)
This API returns the static registers for RTI-DWWD.
SDL_RTI_configParms::SDL_RTI_dwwdWindowSize
uint32_t SDL_RTI_dwwdWindowSize
Definition: sdl_ip_rti.h:93
SDL_RTI_start
int32_t SDL_RTI_start(SDL_RTI_InstanceType InstanceType)
Enable the RTI instance.
RTI_DWWD_REACTION_GENERATE_NMI
#define RTI_DWWD_REACTION_GENERATE_NMI
Definition: sdl_ip_rti.h:220
SDL_RTI_staticRegs
List of Static Registers for RTI DWWD.
Definition: sdl_ip_rti.h:73
SDL_RTI_service
int32_t SDL_RTI_service(SDL_RTI_InstanceType InstanceType)
Service the RTI instance.
SDL_RTI_configParms
List of Config Parameters for RTI DWWD.
Definition: sdl_ip_rti.h:89