4.3.4. Example memory system

The example system shows the address bus breakdown for the system with:

Accesses from the bus master are multiplexed with those from the APB-AP inside the DAP and decoded to a ROM table and four debug components. When a slave is not selected, the decoder selects the default slave that is a dummy slave that typically returns an error to the master.

An example memory map shows how the memory map can be broken down. The left memory breakdown shows the entire range available to the bus master in the example system with the presence of the three slave devices and the debug region added into the address range 0x3F50_0000 to 0x3F50_FFFF. When an unspecified region is accessed, the decoder selects the Default Slave for the system bus. The right memory map shows the breakdown of the debug memory region which, although limited on system accesses, extends from 0x0000_0000 to 0xFFFF_FFFF. The system accesses are only able to address in the region of 0x0000_0000 to 0x0000_0FFF because of the addressing restriction in the system memory bus that is limited to 0x3F50_0000 to 0x3F50_FFFF, and the unavailable address bits. The address[30:16] in the Figure 4.2 being tied to zero. External debug agents can also access this resultant region. However, because the ROM table is indicated as being located at 0x8000_0000, external tools access the debug components through the lock-bypass alias PADDRDBG[31] equal to 1’b1 as all offsets point tools to components within this region. With reference to the example memory map, in the example system, the system address decoder decodes the following select lines for the system bus slaves:

Select_Slave_1         = (Address[31:29] == 3’b000)Select_Slave_2         = (Address[31:30] == 2’b01)Select_Slave_3         = ((Address[31:28] == 4’b1000)|                          (Address[31:28] == 4’b1110))Select_Debug_Interface = (Address[31:16] == 16’h3F50)Select_Default_Slave   = !(Select_Slave_1        |                            Select_Slave_2        |                            Select_Slave_3        |                            Select_Debug_Interface)

The debug address decoder decodes accordingly:

Select_ROM_Table     = (Debug_Address[30:16] == 15’h0000)Select_Debug_Comp_1  = (Debug_Address[30:16] == 15’h0001)Select_Debug_Comp_2  = (Debug_Address[30:16] == 15’h0002)Select_Debug_Comp_3  = (Debug_Address[30:16] == 15’h0003)Select_Debug_Comp_4  = (Debug_Address[30:16] == 15’h0004)Select_Default_Slave = !(Select_ROM_Table    |                         Select_Debug_Comp_1 |                         Select_Debug_Comp_2 |                         Select_Debug_Comp_3 |                         Select_Debug_Comp_4 )

Figure 4.2 shows an example memory system for the access to debug components.

Figure 4.2. Example memory system for access to debug components

To view this graphic, your browser must support the SVG format. Either install a browser with native support, or install an appropriate plugin such as Adobe SVG Viewer.

Copyright © 2004, 2007, 2010 ARM Limited. All rights reserved.ARM DGI 0012D