ARM Technical Support Knowledge Articles


Applies to: ISD51 In-System Debugger


Information in this article applies to:


I am using the ISD51 In-System Debugger to debug my RTX51 Tiny application and I'm having trouble. ISD51 establishes a connection to the target without any problems and the program starts running. However, program execution stops in the RTX Tiny TIMERLOOP function. If I remove ISD51 the code runs as expected.


The problem you are experiencing is most likely a memory collision in the IDATA RAM of your system.

ISD51 uses memory starting at the top of the available on-chip DATA/IDATA RAM. ISD51 requires 1 byte plus an additional 2 bytes for each software breakpoint. So, if two breakpoints are defined ISD51 uses the IDATA locations 0xFB-0xFF. In standard 8051 applications, the RAM requirements of ISD51 are not a big issue since the stack is located below this memory and grows up.

The RTX51 Tiny stack management uses all available IDATA memory. For the running task, RTX51 Tiny maintains the largest space available for the stack. RTX51 Tiny keeps the running task’s stack in low IDATA memory and other task stacks in high IDATA memory. When a task switch occurs, the previous task stack is moved to high IDATA memory and the stack for the current task is moved to low IDATA memory.


Configure ISD51 to use IDATA memory from the end of IDATA memory (typically 0x100). The memory size of the chip is configured with #define RAMSIZE in the ISD51.H header file. The default is 0x100 which specifies 256 bytes IDATA RAM.

Then, configure the RAMTOP for RTX51 Tiny in the CONF_TNY.A51 file to be at a lower address. If you set RAMTOP to 0xF8 it is possible to define up to 3 breakpoints in ISD51.



Article last edited on: 2005-07-15 10:11:21

Rate this article

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