13.4.5 Memory Boundary
DMA can be used to read data from the following regions: SFR, SRAM, Configuration A Page, Configuration B Page and User Program Memory Space. Additionally, DMA can be used to write data to the SFR and SRAM regions. Refer to the memory map (Figure 4-1) for implemented regions.
While the 24-bit DMAxSRC and DMAxDST registers allow access to the entire data space, there may be circumstances where it is desirable to limit DMA operations to a much narrower range. This may be required for many reasons; for example, to protect program variables or a software stack.
The DMAHIGH and DMALOW registers allow the user to set the upper and lower address limits
for DMA operations in the DMA accessible memory regions. All DMA channels are restricted
to the address range set by DMAHIGH and DMALOW. When an active DMA channel initiates a
memory transaction outside of the boundary defined by this register pair, an interrupt
will be invoked on a channel basis. Fault status bits, ADRERR[1:0] =
10
, indicate DMA operations that attempt to access above DMAHIGH, and
ADRERR[1:0] = 01
indicates operations that attempt to access below
DMALOW. Boundaries are applicable only to the SRAM region. The memory-mapped SFR range
is always accessible by DMA.