SPRUI30H November 2015 – May 2024 DRA745 , DRA746 , DRA750 , DRA756
Each slave NIU address space is subdivided into protection regions (maximum of 10). The regions are configurable with a size of 4-KiB granularity. The firewalls can also be multiport while using the description of the same regions for dual access memories or to support interleaving mechanisms on several memories.
Table 14-17 lists the number of protected regions and ports for each slave NIU.
Domain | Slave NIU | Firewall | Number of Regions | Number of Ports |
---|---|---|---|---|
CLK1 | DSP1_SDMA | DSP1_SDMA_FW | 1 | 1 |
DSP2_SDMA | DSP2_SDMA_FW | 1 | 1 | |
DSS | DSS_FW | 8 | 1 | |
EVE1 | EVE1_FW | 1 | 1 | |
EVE2 | EVE2_FW | 1 | 1 | |
GPMC | GPMC_FW | 8 | 1 | |
GPU | GPU_FW | 1 | 1 | |
BB2D | BB2D_FW | 1 | 1 | |
IPU1 | IPU1_FW | 4 | 1 | |
IPU2 | IPU2_FW | 4 | 1 | |
IVA_CFG | IVA_CFG_FW | 1 | 1 | |
IVA_SL2IF | IVA_SL2IF_FW | 4 | 1 | |
McASP1 | MCASP1_FW | 1 | 1 | |
McASP2 | MCASP2_FW | 1 | 1 | |
McASP3 | MCASP3_FW | 1 | 1 | |
OCMC_RAM1 | OCMC1_RAM_FW | 16 | 1 | |
OCMC_RAM2 | OCMC2_RAM_FW | 16 | 1 | |
OCMC_RAM3 | OCMC3_RAM_FW | 16 | 1 | |
EMIF1, EMIF2 | EMIF_OCP_FW | 8 | 2 | |
EMIF1, EMIF2 | MA_MPU_NTTP_FW | 8 | 2 | |
PCIESS1 | PCIESS1_FW | 8 | 1 | |
PCIESS2 | PCIESS2_FW | 8 | 1 | |
QSPI | QSPI_FW | 1 | 1 | |
TPCC | TPCC_FW | 1 | 1 | |
TPTC | TPTC_FW | 2 | 2 | |
VCP1 | VCP1_FW | 1 | 1 | |
VCP2 | VCP2_FW | 1 | 1 | |
CLK2 | L3_INSTR | L3_INSTR_FW | 2 | 1 |
DEBUGSS_CT_TBR | DEBUGSS_CT_TBR_FW | 1 | 1 |
Two types of regions are distinguished in a slave NIU firewall:
Each region has the following characteristics:
Depending on its priority level, a region can override the settings of another region; the access rights of the region with the highest priority apply. All regions have a fixed (not configurable) priority level that corresponds to their number: Region 1 has priority level 1, region 2 has priority level 2, and so on.
Figure 14-6 shows the priority level with associated regions. This priority level scheme allows multiplying the flexibility and capability of the firewall. Figure 14-6 shows a 7-region firewall setting that creates 16 regions (twice the number of regions created than originally available).
The address range covered by the regions is defined in the START_REGION_i and END_REGION_i registers. The boundary checks are done on a minimum size of 4-KiB pages; thus, bits [11:0] of those 32-bit registers are not checked.
The address space size of the slave NIUs ([bits [31:12]) depends on the size of the slave NIU to protect (that is, if a memory is only 48KiB, then the size is defined through bits [16:12] of the slave NIU start and end address registers of the firewall region (START_REGION_i[16:12] and END_REGION_i[16:12]).
On multiport firewalls (EMIF_OCP_FW), the checking of each REGION {0, n} can activate on one or several ports at the same time. However, if interleaving is not desired on some parts of the protected memory space, it is possible to apply or not apply region checking on selected ports using the region enable/disable on port instance capability of the END_REGION_i register.
Most slave NIUs support only one input port (port 0) except:
A region can be applied or not to each port independently. To enable and disable the regions:
The EMIF firewall (EMIF_OCP_FW ) uses 16 GiB address space and protects both the SDRAM and the EMIF configuration registers. The EMIF firewall allows defining access restrictions per region. The region can apply to:
This per-region capability is defined by configuring the END_REGION_i[1:0] bit field for:
The protection regions for EMIF firewall are configurable with a size of 4-KiB granularity (the same applies to the MA_MPU_NTTP_FW). The address range covered by the regions is defined in the START_REGION_i and END_REGION_i registers. Since EMIF firewall sees 16 GiB address space but these two registers have only 32 bits, the START_REGION_i/END_REGION_i[31] bit is mapped to bit [33] of the EMIF address space, that is, bits [31:10] of START_REGION_i/END_REGION_i are mapped to EMIF Address [33:12]. START_REGION_i/END_REGION_i [9:0] are not checked for the minimum page size of 4 KiB.
The start address in the EMIF address space for accessing the EMIF configuration registers is 0x3_0000_0000. If protection of these registers is needed, that address must be right shifted by 2 bits and then the result (0xC000_0000) must be written to the START_REGION_i register. The REGUPDATE_CONTROL[19:16] FW_ADDR_SPACE_MSB bit field indicates how many bits are shifted in the firewall address space. In case of EMIF_OCP_FW and MA_MPU_NTTP_FW, 2 bits are shifted. If target address space is ≤ 4 GiB then REGUPDATE_CONTROL[19:16] FW_ADDR_SPACE_MSB is 0x0 and the START_REGION_i/END_REGION_i [31:12] bits match target physical address [31:12]. Bits [11:0] are ignored by the firewall. These bits are not involved in the address check. To match address spaces greater than 4 GiB but keep the minimum page size of 4 KiB some of the START_REGION_i/END_REGION_i [11:0] bits must also be configured. In the EMIF case bits [11:10] are also used.
For example, the EMIF1 configuration registers are accessible through system base address 0x4C00_0000. But the EMIF_OCP_FW sees them at start address 0x3_0000_0000. As previously mentioned that address must be shifted before being programmed to the START_REGION_i register. In this case the programmed value should be 0xC000_0000. This has to be taken into account.