ARM Technical Support Knowledge Articles

DEBUG PROGRAMS IN OFF-CHIP RAM

Applies to: ULINK USB-JTAG Debugger

Answer


Information in this article applies to:


QUESTION

I am using ULINK together with Philips LPC2192 device and off-chip RAM. During debugging, I want to run the program on off-chip SRAM (since the number of breakpoints is unlimited in RAM). Finally, I need to download the application to off-chip Flash ROM. However when I start debugging I get the following error message:

Memory Mismatch!
Address: 0x00000000
Value = 0x38
Expected = 0x18

What is my problem? Is there a sample project setup?

ANSWER

Debugging in RAM requires that chip select line CS0 is connected to a RAM device. Also you need to modify the MEMMAP setting in the STARTUP.S file as shown below:

$SET (RAM_INTVEC)                       ; enable code below
$IF (RAM_INTVEC)
                LDR     R0, =MEMMAP
                MOV     R1, #3   ; redirect interrupt vectors to off-chip memory
                STR     R1, [R0]
$ENDIF

You may define two different targets as explained in the uVision IDE User's Guide, Creating Applications, Project Targets and File Groups:

The target Debugging in RAM needs the following configuration settings under Project - Options for Target:

With these settings the generated application program code will be at address 0x80000000 and above. You may verify the linker MAP file which lists the memory requirements under MEMORY MAP OF MODULE. All segments with the MEMORY CLASS CODE and CONST should be in the range of your off-chip RAM device as shown below:

START      STOP       LENGTH    ALIGN  RELOC  MEMORY CLASS   SEGMENT NAME
=========================================================================
80000000H  80000143H  00000144H     4  AT..   CODE           STARTUPCODE
80000144H  80000150H  0000000DH     4  UNIT   CONST          ?CON?Hello
80000151H  80000153H  00000003H   ---  ---    **GAP**
80000154H  8000015AH  00000007H     4  UNIT   CONST          ?CON?prnfmt
8000015BH  8000015BH  00000001H   ---  ---    **GAP**
8000015CH  80000163H  00000008H     4  UNIT   CONST          ?C_CLRSEG
80000164H  8000016BH  00000008H     4  UNIT   CONST          ?C_INITSEG
  :          :          :

With Debug - Start/Stop Debug Session, the application code will be loaded to off-chip RAM and you may set as many breakpoints as required. It is only required that you have RAM in the memory region 0x80000000 and above.

MORE INFORMATION

SEE ALSO

Article last edited on: 2010-03-24 13:11:22

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential