SPRUIZ1B July 2023 – August 2024 TMS320F28P650DH , TMS320F28P650DK , TMS320F28P650SH , TMS320F28P650SK , TMS320F28P659DH-Q1 , TMS320F28P659DK-Q1 , TMS320F28P659SH-Q1
The CPU1 or CPU2 DMA has write permission to a GSx memory only if the respective subsystem is controller for that memory. When write accesses from a DMA are allowed based on the permission, the write accesses can be further protected by setting the DMAWRPROTx bit of a specific register to 1. If a write access is done by the DMA to a protected memory, a write protection violation occurs.
There are two types of DMA write protection violations:
If a write access is made to GSx memory by a non-controller DMA, the violation is called a non-controller write protection violation. If a write access is made to a dedicated or shared memory by a controller DMA and DMAWRPROTx is set to 1 for that memory, the violation is called a controller DMA write protection violation.
If a write protection violation occurs on CPU1, the write is ignored and a DMAERR interrupt gets generated, whereas in the case of CPU2, a write is ignored and an access violation interrupt is generated if the interrupt is enabled in the interrupt enable register. A flag gets set in the DMA access violation flag register and the memory address where the violation happened gets latched in the DMA fetch access violation address register. These are dedicated registers for each subsystem.
Note 1: | All access protections are ignored during debug accesses. Write access to a protected memory goes through when the write access is done using the debugger, irrespective of the write protection configuration for that memory. |
Note 2: | In the case of local shared RAM, if memory is shared between the CPU and the CLA, the CPU only has access if the memory is configured as data RAM for the CLA. If the data RAM is programmed as program RAM, all the access from the CPU (including read) and data access from the CLA is blocked, and the violation is considered a non-controller access violation. If the memory is configured as dedicated to the CPU, all access from the CLA is blocked and the violation is considered a non-controller access violation. |