TC1796
System Units (Vol. 1 of 2)
Direct Memory Access Controller
User’s Manual
12-40
V2.0, 2007-07
DMA, V2.0
12.1.9.5 Access Protection
The DMA controller provides an access protection logic that makes it possible to disable
read and write accesses of the Move Engines to specific parts of the memory map. Each
address of a read move and a write move is always checked to determine if it is within
an address range that is enabled for read/write access. If no address range is valid for
an actual move address, a Move Engine interrupt can be generated.
The access protection logic handles two levels of address range definitions:
•
Fixed address range
•
Programmable address range extension
There are 32 fixed address ranges available that can be individually enabled/disabled in
each Move Engine by the address range enable bits AENx (x = 0-31): These bits are
located in the Move Engine m access enable register MEmAENR. If bit AENx is set,
read/write accesses to the associated address range x are allowed. If bit AENx is cleared
(default after reset), read/write accesses to the associated address range x are not
executed and a Move Engine interrupt for source or destination move is generated (see
also
).
There are four programmable address range extensions available for each Move
Engine. These programmable address range extensions make it possible to determine
sub-ranges within four of the fixed address ranges. The parameters for the four sub-
ranges are stored in the Move Engine m access range register MEmARR. The
programmable address range extension is a feature that is applicable for memory
access protection of memory blocks. In such an application, several memory sections
are defined as sub-ranges of a complete memory block.
shows the two levels of address range definitions with the resulting
address sub-ranges of the programmable address range extension. In a fixed address
range, the width of fixed and variable address bits is constant. Number ‘a’ determines
the lowest bit position of the fixed address, and is fixed individually and product-specific
for each of the 32 fixed address ranges. With the programmable address range
extension, the variable address part of the fixed address range definition (as defined by
AENx) is reduced by the definition of a programmable number (up to 32) of sub-ranges.
Bit field MEmARR.SIZE determines the sub-range size and bit field MEmARR.SLICE
determines which of the sub-ranges is currently selected for access protection control.
The two parameters (SIZE, SLICE) of the four address range extensions are numbered
by index ‘n’ (n = 0-3).
Two sub-range examples (see
):
•
2
3
= 8 sub-ranges are available with SIZE = 100
B
. SLICE[2:0] selects one out of the
eight sub-ranges. SLICE[4:3] is “don’t care”.
•
2
7
= 128 sub-ranges are basically available with SIZEn = 000
B
. SLICEn[4:0] selects
one out of the lowest 32 sub-ranges. The upper 3
×
32 = 96 sub-ranges are not
selectable (fixed address bits a-1 and a-2).