A.4.2. Memory_block

Entries in the Memory_block group are used to build up:

Note

If you configure any entries in this group and in the Map_rule group, then memory mapping is enabled when you connect to the configured target.

Memory_block group settings

The Memory_block group includes a base group called Default, but typically you create one or more named memory block groups. The group includes the following settings:

Attributes

Additional attributes can be specified for the memory. These are used by simulator models to guide the debugger when accessing this block of memory. The following settings are available:

Internal

This memory block is internal to the processor and not treated as external. This affects wait-state timings and other factors.

Access-rule

The access rule information is only used by simulators to control timing issues. It is noted if a link command file is generated.

Access_size

Use this field to control how RealView Debugger accesses memory internally.

By default, this is set to 0, to indicate the default memory access size for the processor, for example, byte-size for ARM architecture-based targets.

Specify a value greater than 0 to set access size in bytes, for example 1 or 2. If you do this, you must also specify a size for Memory_block, otherwise RealView Debugger displays an error message.

For external memory with only byte-wide or halfword-wide access enabled, this can be used to ensure proper access to the memory. Depending on the processor, this might have no effect.

Volatile

Set to True if access either destroys the contents or the contents change in response to external events.

No_sw_bkpts

Use this when setting up a shared memory block to prevent software breakpoints being set in a shared memory region on a multiprocessor development platform.

Also, see Sw_bkpts.

Shared

This field indicates if the memory block is shared with other targets:

  • set to none if the memory block is not shared

  • set to direct if the memory block is accessed directly using the bus.

If this is set, this field determines what other targets see this memory.

Shared_id

This field contains a number that identifies this memory block. You must use the same number for each device that uses this memory block. RealView Debugger can then correctly update all connection views when this memory is modified.

You can use any integer value in the range 0 to 65535.

Register_Pos_Len

Used when one or two memory-mapped registers are used to set the base address and length of the memory block, such as for cross-bar switches, and chip-selects. These are not used for enables which are set using map rules. The following settings are available:

Register_base

Enables you to specify a memory block position based on a memory-mapped register. The value of the register is added to the start field to construct the block start address. It can be masked and scaled (multiplied or divided) first.

Base_mask

Mask to apply to register.

Base_scale

Use this to change the value of the register contents, after masking, to define the actual base. If the number is positive, it is multiplied against the register content. If the number is negative, it is divided from the register content.

For example, a byte register might select the 64Kbyte region to map to. If the scale is 0x10000 (64K), then register values of 0, 1, 2, 3, ... each select a 64Kbyte region. If the selector occupies part of a register, the mask is applied to select only the selector portion and the scaling value itself might be scaled. Using this example, if the byte selector portion is the upper byte of a register, the scale value is 0x10000/0x100=0x100 (256). So, mask with 0xFF00 and multiply by 256 to get a 64Kbyte selection.

Register_length

Enables a block of memory to be sized by a register. This is commonly used in multiprocessor shared memory systems. The content of the register is added to the specified length to compute the block length.

Len_mask

Mask to apply to register.

Len_scale

Used like Base_scale.

Len_table

Enables table indexing for the length. The length register is masked and scaled and then used as an index in a table of values. The last value is used if the scaled register value is too large. The table value is added to the length field of the block.

Update_rule

Indicates how often to check the register to see if the mapping has changed. For cases where the mapping is set by jumpers, which read as registers, it must be inspected only when first connecting to the device. If the program changes it, it must be tested on each stop. Valid values are:

init_time

Test when connecting to device.

update_init

Test on connect and when register changes.

stop_update

Test on connect, change, and execution stop.

Start

The base address of the block. If the block is mapped using a register, this is the offset from that register.

Note

You cannot include the TrustZone® world prefix in the address. To specify the TrustZone world for this memory region, use the Tz_world setting.

Length

The length in memory units of the block. If Length is set by a register, this must be 0 or the amount to add to that register.

Type

The type of memory depends on the device type. The default is to map to data space. Otherwise, a memory space can be specified. Set to default for ARM architecture-based targets.

Access

Indicates how the memory is to be treated. For simulators, this affects the target use of the memory. For hardware targets, this only affects how the debugger uses the memory and any generated linker command files. Right-click on this setting to see available access types.

Tz_world

Specifies the default world for this memory block on a processor that supports TrustZone technology:

Normal

Specifies that the memory block is in the Normal World.

Secure

Specifies that the memory block is in the Secure World. This is the default.

Wait_states

Used with simulators to calculate the cycles used when accessing this memory. The default is based on the wait-state model used by the processor for external memory. This value is noted when link command files are generated from this data to enable careful positioning of sections to this memory.

Flash_type

Contains the name of a file containing the Flash programming code and information for this processor. Example files for selected ARM targets are provided in the install_directory\RVD\Flash\...\platform directory. Files are collected in subdirectories based on the target Flash device, for example install_directory\RVD\Flash\...\IntegratorAP. These files have the file extension .fme.

By using the routines in this file, RealView Debugger can erase, modify and verify the contents of Flash memory.

You can create your own FME file if required.

Description

Description of the memory block.

Flash_write_mode

Indicates whether or not a prompt is displayed when a write operation is performed to a Flash memory block:

Auto

Specifies that a Flash write operation is to occur automatically. Also, specify the clock speed with Flash_write_clock.

When you load a binary file, RealView Debugger issues a READFILE command. The operation is complete when the Flash Memory Control dialog box is opened, and messages similar to the following appear in the Cmd tab of the Output view:

Flash opened on ARM940T_0@RealView-ICE for 'Intel DT28F320S3 2Mx16 x2 x4' at '0x24000000'
Flash opened on ARM940T_0@RealView-ICE for 'Intel DT28F320S3 2Mx16 x2 x4' at '0x24000000'
Written memory from 0x24000000 to 0x2401922B.

When you write a value directly in a Flash location with the Memory view, then RealView Debugger issues a CEXPRESSION command. The operation is complete when the Flash Memory Control dialog box is opened, and messages similar to the following appear in the Cmd tab of the Output view:

Flash opened on ARM940T_0@RealView-ICE for 'Intel DT28F320S3 2Mx16 x2 x4' at '0x24000000'
  Result is: 97  0x61  'a'

When you write to Flash locations with the Fill Memory dialog box, then RealView Debugger issues a FILL command. The operation is complete when the Flash Memory Control dialog box is opened, and a message similar to the following appears in the Cmd tab of the Output view:

Flash opened on ARM940T_0@RealView-ICE for 'Intel DT28F320S3 2Mx16 x2 x4' at '0x24000000'
Prompt

Specifies that you are prompted before the Flash write operation occurs. This is the default.

In this mode, RealView Debugger displays the Flash Memory Control dialog box, where you can perform the Flash write operation manually.

Flash_write_clock

When Flash_write_mode is set to Auto, specify the clock speed in Hz.

Volatile

Enables you to define a memory block that is volatile on read (and so is marked specially in the Memory view). The format is an offset from within this block (0 relative). A range can be specified, for example 0x10..0x20 or 0x40..+4. If not a range, it defines a single value.

See also

Copyright © 2002-2011 ARM. All rights reserved.ARM DUI 0182N
Non-ConfidentialID052111