BGCRC Module¶
The BackGround CRC (BGCRC) API provides a set of functions for configuring the BGCRC module. It provides various functions to configure the memory blocks to be checked, the mode of operation, interrupt/NMI configuration and to start, resume and halt the BGCRC omputation
-
group
bgcrc_api This module is used for configuring BGCRC.
Defines
-
BGCRC_NMI_ENABLE0x5U¶ Generate NMI on memory check failure.
Values that can be passed to BGCRC_setConfig() as the nmiConfig parameter
-
BGCRC_NMI_DISABLE0xAU¶ failure
Do not generate NMI on memory check
-
BGCRC_EMUCTRL_SOFT0x00U¶ Values that can be passed to BGCRC_setConfig() as the emuCtrl parameter.
CRC module and CRC watchdog stops immediately on DEBUG SUSPEND
-
BGCRC_EMUCTRL_FREE0x10U¶ not affected by DEBUG HALT
CRC calculation and CRC watchdog is
-
BGCRC_SCRUB_MODE0xAU¶ Values that can be passed to BGCRC_setRegion() as the mode parameter.
CRC of data is not compared with the golden CRC. Error check is done using the ECC/Parity logic.
-
BGCRC_CRC_MODE0x5U¶ CRC value is compared with golden CRC at the end in addition to the data correctness check by ECC/Parity logic
-
BGCRC_GLOBAL_INT0x01U¶ Global Interrupt.
Values that can be passed to all interrupt/NMI functions as intflags or nmiflags parameter
-
BGCRC_TEST_DONE0x02U¶ Test done interrupt.
-
BGCRC_CRC_FAIL0x04U¶ CRC Fail Interrupt/NMI.
-
BGCRC_UNCORR_ERR0x08U¶ Uncorrectable Error Interrupt/NMI.
-
BGCRC_CORR_ERR0x10U¶ Correctable Error Interrupt/NMI.
-
BGCRC_WD_UNDERFLOW0x20U¶ Watchdog Underflow Error Interrupt/NMI.
-
BGCRC_WD_OVERFLOW0x40U¶ Watchdog Overflow Error Interrupt/NMI.
-
BGCRC_ALL_ERROR_FLAGS(BGCRC_CRC_FAIL | BGCRC_UNCORR_ERR| \
BGCRC_CORR_ERR | BGCRC_WD_UNDERFLOW| \
BGCRC_WD_OVERFLOW)¶
-
BGCRC_SIZE_BYTES_00U¶ Values that can be passed to BGCRC_setRegion as the blockSize parameter For example, to configure a region of size 2.5KB, set blockSize as BGCRC_SIZE_KBYTES(2) + BGCRC_SIZE_BYTES_512
-
BGCRC_SIZE_BYTES_2561U¶
-
BGCRC_SIZE_BYTES_5122U¶
-
BGCRC_SIZE_BYTES_7683U¶
-
BGCRC_SIZE_KBYTES(x) (4U * (x))¶
-
BGCRC_ACTIVE0x80000000U¶ Values returned by the function BGCRC_getRunStatus.
-
BGCRC_IDLE0x00000000U¶
-
BGCRC_REG_EN0x00000001U¶ Values that can be passed to BGCRC_lockRegister(), BGCRC_unlockRegister() and BGCRC_commitLockRegister() as the regs parameter
-
BGCRC_REG_CTRL10x00000002U¶
-
BGCRC_REG_CTRL20x00000004U¶
-
BGCRC_REG_START_ADDR0x00000008U¶
-
BGCRC_REG_SEED0x00000010U¶
-
BGCRC_REG_GOLDEN0x00000080U¶
-
BGCRC_REG_WD_CFG0x00004000U¶
-
BGCRC_REG_WD_MIN0x00008000U¶
-
BGCRC_REG_WD_MAX0x00010000U¶
-
BGCRC_REG_NMIFRC0x00800000U¶
-
BGCRC_REG_INTEN0x04000000U¶
-
BGCRC_REG_INTFRC0x20000000U¶
-
BGCRC_REG_ALL0xFFFFFFFFU¶
-
BGCRC_WD_ENABLE0x5UL¶ Values that are used by the BGCRC APIs.
-
BGCRC_WD_DISABLE0xAUL¶
-
BGCRC_START_KEY0xAUL¶
-
BGCRC_HALT_KEY0xAUL¶
Functions
-
void
BGCRC_setConfig(uint32_t base, uint32_t nmiConfig, uint32_t emuCtrl)¶ Sets the NMI and emulation control configurations
This function configures the NMI and emulation control configurations for the BGCRC module.
- Parameters
base: is the BGCRC module base address.nmiConfig: specifies whether NMI needs to be enabled or not for memory check failureemuCtrl: specifies the behaviour of CRC during emulation
nmiConfig can take values BGCRC_NMI_ENABLE or BGCRC_NMI_DISABLE. NMI is enabled by default for the memory check failures.
emuCtrl can take values BGCRC_EMUCTRL_FREE or BGCRC_EMUCTRL_SOFT.
- Return
None.
-
void
BGCRC_enableWatchdog(uint32_t base)¶ Enables the watchdog
This function enables the BGCRC watchdog timer. The counter is started when the BGCRC test starts
- Parameters
base: is the BGCRC module base address.
- Note
The watchDog window can be configured using the function BGCRC_setWatchdogWindow()
- Return
None.
-
void
BGCRC_disableWatchdog(uint32_t base)¶ Disables the watchdog
This function disables the BGCRC watchdog.
- Parameters
base: is the BGCRC module base address.
- Return
None.
-
void
BGCRC_setWatchdogWindow(uint32_t base, uint32_t min, uint32_t max)¶ Configures the BGCRC watchdog window
This function configures the BGCRC windowed watchdog
- Parameters
base: is the BGCRC module base address.min: is minimum value configuration for the windowed watchdogmax: is maximum value configuration for the windowed watchdog
- Return
None.
-
void
BGCRC_setRegion(uint32_t base, uint32_t startAddr, uint32_t blockSize, uint32_t mode)¶ Configures the memory region for check
This function configures the memory region to be checked
- Parameters
base: is the BGCRC module base address.startAddr: is the start address of the blockblockSize: is the size of the blockmode: is the BGCRC test mode
blockSize can take values BGCRC_SIZE_KBYTES(x) and/or BGCRC_SIZE_BYTES_x. For example, to configure a region of size 2.5KB, set blockSize as BGCRC_SIZE_KBYTES(2) + BGCRC_SIZE_BYTES_512
mode can take values BGCRC_SCRUB_MODE or BGCRC_CRC_MODE. In Scrub mode, CRC of data is not compared with the golden CRC. Error check is done using the ECC/Parity logic. In CRC mode, value is compared with golden CRC at the end in addition to the data correctness check by ECC/Parity logic.
- Return
None.
-
uint32_t
BGCRC_getWatchdogCounterValue(uint32_t base)¶ Gets the BGCRC watchdog counter value
This function returns the BGCRC watchdog counter value
- Parameters
base: is the BGCRC module base address.
- Return
Watchdog counter value.
-
void
BGCRC_enableInterrupt(uint32_t base, uint32_t intFlags)¶ Enables individual BGCRC interrupt sources
This function enables the indicated BGCRC interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt, disabled sources have no effect on the processor.
- Parameters
base: is the BGCRC module base address.intFlags: is the bit mask of the interrupt sources to be disabled.
The intFlags parameter is the logical OR of any of the following:
BGCRC_TEST_DONE - Test done interrupt
BGCRC_CRC_FAIL - CRC Fail Interrupt
BGCRC_UNCORR_ERR - Uncorrectable Error Interrupt
BGCRC_CORR_ERR - Correctable Error Interrupt
BGCRC_WD_UNDERFLOW - Watchdog Underflow Error Interrupt
BGCRC_WD_OVERFLOW - Watchdog Overflow Error Interrupt
- Return
None
-
void
BGCRC_disableInterrupt(uint32_t base, uint32_t intFlags)¶ Disables individual BGCRC interrupt sources.
This function disables the indicated BGCRC interrupt sources. Only the sources that are enabled can be reflected to the processor interrupt disabled sources have no effect on the processor.
- Parameters
base: is the BGCRC module base address.intFlags: is the bit mask of the interrupt sources to be disabled.
The intFlags parameter has the same definition as the intFlags parameter to BGCRC_enableInterrupt().
- Return
None.
-
uint32_t
BGCRC_getInterruptStatus(uint32_t base)¶ Gets the current BGCRC interrupt status
This function returns the status of the BGCRC interrupts
- Parameters
base: is the BGCRC module base address
BGCRC_GLOBAL_INT - Global Interrupt
BGCRC_TEST_DONE - Test done interrupt
BGCRC_CRC_FAIL - CRC Fail Interrupt
BGCRC_UNCORR_ERR - Uncorrectable Error Interrupt
BGCRC_CORR_ERR - Correctable Error Interrupt
BGCRC_WD_UNDERFLOW - Watchdog Underflow Error Interrupt
BGCRC_WD_OVERFLOW - Watchdog Overflow Error Interrupt
- Return
The current interrupt status, which is a logical OR of any of the following:
-
void
BGCRC_clearInterruptStatus(uint32_t base, uint32_t intFlags)¶ Clears the BGCRC interrupt sources
The specified BGCRC interrupt sources are cleared, so that they no longer assert. This function must be called in the interrupt handler to keep the interrupt from being triggered again immediately upon exit.
- Parameters
base: is the BGCRC module base addressintFlags: is a bit mask of the interrupt sources to be cleared.
The intFlags parameter has the same definition as the intFlags parameter to BGCRC_getInterruptStatus().
- Return
None.
-
void
BGCRC_forceInterrupt(uint32_t base, uint32_t intFlags)¶ Force the BGCRC interrupt flag
This function forces the specified interrupt flags
- Parameters
base: is the BGCRC module base addressintFlags: is a bit mask of the interrupt flags to be forced.
The intFlags parameter has the same definition as the intFlags parameter to BGCRC_enableInterrupt().
- Return
None.
-
uint32_t
BGCRC_getNMIStatus(uint32_t base)¶ Gets the current BGCRC NMI status
This function returns the status of the BGCRC NMI flags
- Parameters
base: is the BGCRC module base address
BGCRC_CRC_FAIL - CRC Fail NMI
BGCRC_UNCORR_ERR - Uncorrectable Error NMI
BGCRC_CORR_ERR - Correctable Error NMI
BGCRC_WD_UNDERFLOW - Watchdog Underflow Error NMI
BGCRC_WD_OVERFLOW - Watchdog Overflow Error NMI
- Return
The current NMI status, which is a logical OR of any of the following:
-
void
BGCRC_clearNMIStatus(uint32_t base, uint32_t nmiFlags)¶ Clears the BGCRC NMI sources
The specified BGCRC NMI sources are cleared, so that they no longer assert. This function must be called in the NMI handler to keep the NMI from being triggered again immediately upon exit.
- Parameters
base: is the BGCRC module base addressnmiFlags: is a bit mask of the NMI sources to be cleared.
The nmiFlags parameter has the same definition as the nmiFlags parameter to BGCRC_getNMIStatus().
- Return
None.
-
void
BGCRC_forceNMI(uint32_t base, uint32_t nmiFlags)¶ Force the BGCRC NMI flag
This function forces the specified interrupt flags
- Parameters
base: is the BGCRC module base addressnmiFlags: is a bit mask of the NMI flags to be forced.
The nmiFlags parameter has the same definition as the nmiFlags parameter to BGCRC_getNMIStatus().
- Return
None.
-
void
BGCRC_setGoldenCRCValue(uint32_t base, uint32_t crcVal)¶ Sets the golden CRC value
This function sets the golden CRC value of the memory block being tested. If run in CRC mode, the calculated CRC value is compared with golden CRC and status is updated.
- Parameters
base: is the BGCRC module base addresscrcVal: is a golden CRC value to be programmed
- Return
None.
-
void
BGCRC_start(uint32_t base)¶ Starts the module operation
This function starts the module operation. Calling this function during the CRC calculation will reset and re-start the CRC calculation. This also resets the watchdog timer.
- Parameters
base: is the BGCRC module base address
- Return
None.
-
void
BGCRC_halt(uint32_t base)¶ Halts the module operation
This function halts the module operation. This function does not stall the watchdog timer.
- Parameters
base: is the BGCRC module base address
- Return
None.
-
void
BGCRC_resume(uint32_t base)¶ Resumes the module operation
This function resumes the module operation. The CRC calculation will continue/resume from where it was halted
- Parameters
base: is the BGCRC module base address
- Return
None.
-
uint32_t
BGCRC_getRunStatus(uint32_t base)¶ Gets the running status of the module
This function returns whether the module is in ACTIVE or IDLE state
- Parameters
base: is the BGCRC module base address
- Return
BGCRC_ACTIVE if CRC module is active, BGCRC_IDLE if CRC module is idle
-
void
BGCRC_setSeedValue(uint32_t base, uint32_t seed)¶ Sets the seed value for CRC calculations
This function sets the seed value for the CRC calculations
- Parameters
base: is the BGCRC module base addressseed: is the seed value to be set
- Return
None
-
uint32_t
BGCRC_getResult(uint32_t base)¶ Gets the calculated CRC value
This function returns the calculated CRC value
- Parameters
base: is the BGCRC module base address
- Return
32-bit CRC result
-
uint32_t
BGCRC_getCurrentAddress(uint32_t base)¶ Gets the current address
This function returns the current address from where the data is fetched
- Parameters
base: is the BGCRC module base address
- Return
32-bit address
-
void
BGCRC_lockRegister(uint32_t base, uint32_t regs)¶ Locks the register configuration
This function locks the register configuration. The register once locked, cannot be updated until the lock is removed
- Parameters
base: is the BGCRC module base addressregs: is the configuration registers to be locked
The regs parameter is the logical OR of any of the following:
BGCRC_REG_EN
BGCRC_REG_CTRL1
BGCRC_REG_CTRL2
BGCRC_REG_START_ADDR
BGCRC_REG_SEED
BGCRC_REG_GOLDEN
BGCRC_REG_WD_CFG
BGCRC_REG_WD_MIN
BGCRC_REG_WD_MAX
BGCRC_REG_NMIFRC
BGCRC_REG_INTEN
BGCRC_REG_INTFRC
BGCRC_REG_ALL
- Return
None
-
void
BGCRC_unlockRegister(uint32_t base, uint32_t regs)¶ Unlocks the register configuration
This function unlocks the register configuration.
- Parameters
base: is the BGCRC module base addressregs: is the configuration registers to be unlocked
The regs parameter has the same definition as the regs parameter to BGCRC_lockRegister().
- Return
None
-
void
BGCRC_commitRegisterLock(uint32_t base, uint32_t regs)¶ Commits the register configuration
This function commits the register configuration. Once configuration is committed, only reset can change the configuration.
- Parameters
base: is the BGCRC module base addressregs: is the configuration registers to be unlocked
The regs parameter has the same definition as the regs parameter to BGCRC_lockRegister().
- Return
None
-
The code for this module is contained in driverlib/bgcrc.c, with driverlib/bgcrc.h containing the API declarations for use by applications.