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_ENABLE
0x5U¶ Generate NMI on memory check failure.
Values that can be passed to BGCRC_setConfig() as the nmiConfig parameter
-
BGCRC_NMI_DISABLE
0xAU¶ failure
Do not generate NMI on memory check
-
BGCRC_EMUCTRL_SOFT
0x00U¶ Values that can be passed to BGCRC_setConfig() as the emuCtrl parameter.
CRC module and CRC watchdog stops immediately on DEBUG SUSPEND
-
BGCRC_EMUCTRL_FREE
0x10U¶ not affected by DEBUG HALT
CRC calculation and CRC watchdog is
-
BGCRC_SCRUB_MODE
0xAU¶ 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_MODE
0x5U¶ CRC value is compared with golden CRC at the end in addition to the data correctness check by ECC/Parity logic
-
BGCRC_GLOBAL_INT
0x01U¶ Global Interrupt.
Values that can be passed to all interrupt/NMI functions as intflags or nmiflags parameter
-
BGCRC_TEST_DONE
0x02U¶ Test done interrupt.
-
BGCRC_CRC_FAIL
0x04U¶ CRC Fail Interrupt/NMI.
-
BGCRC_UNCORR_ERR
0x08U¶ Uncorrectable Error Interrupt/NMI.
-
BGCRC_CORR_ERR
0x10U¶ Correctable Error Interrupt/NMI.
-
BGCRC_WD_UNDERFLOW
0x20U¶ Watchdog Underflow Error Interrupt/NMI.
-
BGCRC_WD_OVERFLOW
0x40U¶ 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_0
0U¶ 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_256
1U¶
-
BGCRC_SIZE_BYTES_512
2U¶
-
BGCRC_SIZE_BYTES_768
3U¶
-
BGCRC_SIZE_KBYTES
(x) (4U * (x))¶
-
BGCRC_ACTIVE
0x80000000U¶ Values returned by the function BGCRC_getRunStatus.
-
BGCRC_IDLE
0x00000000U¶
-
BGCRC_REG_EN
0x00000001U¶ Values that can be passed to BGCRC_lockRegister(), BGCRC_unlockRegister() and BGCRC_commitLockRegister() as the regs parameter
-
BGCRC_REG_CTRL1
0x00000002U¶
-
BGCRC_REG_CTRL2
0x00000004U¶
-
BGCRC_REG_START_ADDR
0x00000008U¶
-
BGCRC_REG_SEED
0x00000010U¶
-
BGCRC_REG_GOLDEN
0x00000080U¶
-
BGCRC_REG_WD_CFG
0x00004000U¶
-
BGCRC_REG_WD_MIN
0x00008000U¶
-
BGCRC_REG_WD_MAX
0x00010000U¶
-
BGCRC_REG_NMIFRC
0x00800000U¶
-
BGCRC_REG_INTEN
0x04000000U¶
-
BGCRC_REG_INTFRC
0x20000000U¶
-
BGCRC_REG_ALL
0xFFFFFFFFU¶
-
BGCRC_WD_ENABLE
0x5U¶ Values that are used by the BGCRC APIs.
-
BGCRC_WD_DISABLE
0xAU¶
-
BGCRC_START_KEY
0xAU¶
-
BGCRC_HALT_KEY
0xAU¶
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.