EasyManua.ls Logo

NXP Semiconductors PXN2020 - 18.4.1.1 Access Evaluation-Hit Determination; 18.4.1.2 Access Evaluation-Privilege Violation Determination

NXP Semiconductors PXN2020
1376 pages
To Next Page IconTo Next Page
To Next Page IconTo Next Page
To Previous Page IconTo Previous Page
To Previous Page IconTo Previous Page
Loading...
Memory Protection Unit (MPU)
PXN20 Microcontroller Reference Manual, Rev. 1
18-16 Freescale Semiconductor
18.4.1.1 Access Evaluation—Hit Determination
To determine if the current AHB reference hits in the given region, two magnitude comparators are used
with the region’s start and end addresses. The boolean equation for this portion of the hit determination is
defined as:
region_hit =
((haddr[0:26] >= rgdn.srtaddr[0:26]) & (haddr[0:26] <= rgdn.endaddr[0:26]))
& rgdn.vld
where haddr[*] is the current AHB reference address, rgdn.srtaddr[*] and rgdn.endaddr[*] are the start
and end addresses, and rgdn.vld is the valid bit, all from region descriptor n. There are no hardware checks
to verify that rgdn.endaddr rgdn.srtaddr, and the software must properly load appropriate values into
these fields of the region descriptor.
In addition to the algebraic comparison of the AHB reference address versus the region descriptors start
and end addresses, the optional process identifier is examined against the region descriptors PID and
PIDMASK fields. Using the hmaster[*] number to select the appropriate MxPE field from the region
descriptor, a process identifier hit term is formed as:
pid_hit = ~rgdn.mxpe
| ((current_pid[0:7] | rgdn.pidmask[0:7]) == (rgdn.pid[0:7] | rgdn.pidmask[0:7]))
where the current_pid[*] is the selected process identifier from the current bus master, and rgdn.pid[*]
and rgdn.pidmask[*] are the appropriate process identifier fields from the region descriptor n. For AHB
bus masters that do not output a process identifier, the MPU forces the pid_hit term to be asserted.
As shown in Figure 18-11, the access evaluation macro forms the logical complement (hit_b) of the
combined region_hit and pid_hit boolean equations.
18.4.1.2 Access Evaluation—Privilege Violation Determination
While the access evaluation macro is making the region hit determination, the logic is also evaluating if
the current access is allowed by the permissions defined in the region descriptor. Using the AHB
hmaster[*] and hprot[1] (supervisor/user mode) signals, a set of effective permissions (eff_rgd[r,w,x])
is generated from the appropriate fields in the region descriptor. The protection violation logic then
evaluates the access against the effective permissions using the specification shown in Table 18-11.
Table 18-11. Protection Violation Definition
Description
Inputs Output
hwrite hprot[0] eff_rgd[r] eff_rgd[w] eff_rgd[x]
Protection
Violation?
inst fetch read 0 0 0 yes, no x permission
inst fetch read 0 0 1 no, access is allowed
data read 0 1 0 yes, no r permission
data read 0 1 1 no, access is allowed
data write 1 0 yes, no w permission
data write 1 1 no, access is allowed

Table of Contents

Related product manuals