SPRUHZ7K August 2015 – April 2024 AM5706 , AM5708 , AM5716 , AM5718 , AM5718-HIREL
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 |
---|---|---|---|---|
DSP1_SDMA | DSP1_SDMA_FW | 1 | 1 | |
DSS | DSS_FW | 8 | 1 | |
GPMC | GPMC_FW | 8 | 1 | |
GPU | GPU_FW | 1 | 1 | |
IPU1 | IPU1_FW | 4 | 1 | |
IPU2 | IPU2_FW | 4 | 1 | |
PRU-ICSS1 | PRUSS1_FW | 1 | 1 | |
PRU-ICSS2 | PRUSS2_FW | 1 | 1 | |
CLK1 | IVA_CFG | IVA_CFG_FW | 1 | 1 |
IVA_SL2IF | IVA_SL2IF_FW | 4 | 1 | |
OCMC_RAM1 | OCMC_RAM1_FW | 16 | 1 | |
EMIF1 | EMIF_OCP_FW | 8 | 1 | |
EMIF1 | MA_MPU_NTTP_FW | 8 | 1 | |
PCIESS1 | PCIESS1_FW | 8 | 1 | |
PCIESS2 | PCIESS2_FW | 8 | 1 | |
BB2D | BB2D_FW | 1 | 1 | |
QSPI | QSPI_FW | 1 | 1 | |
TPCC | TPCC_FW | 1 | 1 | |
TPTC | TPTC_FW | 2 | 2 | |
VCP1(1) | VCP1_FW | 1 | 1 | |
VCP2(1) | VCP2_FW | 1 | 1 | |
MCASP1 | MCASP1_FW | 1 | 1 | |
MCASP2 | MCASP2_FW | 1 | 1 | |
MCASP3 | MCASP3_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]).
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. This per-region capability is defined by setting to 0x1 the END_REGION_i[0] END_REGION_i_ENABLE_CORE_0 bit.
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 4KiB.
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.