Keil Logo


Information in this knowledgebase article applies to:

  • ULINK USB-JTAG Adapter
  • ULINK2 USB-JTAG Adapter
  • Infineon JTAG Debug Access Server (DAS)


I debug my application with ULINK, ULINK2 or the Infineon DAS interface. Since I am using multiple data pointers in my own assembly functions, the debugger does not stop at the breakpoints that I have set. Are there debug restrictions when using the multiple data pointers?

My code looks like:

   MOV  EO,#0x00    // select DPTR 0
   MOV  EO,#0x01    // select DPTR 1


There are no debug restrictions when using multiple data pointers but you must avoid modifying configuration bits which are not used for switching the data pointers. Your example writes a new value (0) to all bits of the Extended Operation register EO. This also overwrites the TRAP_EN bit (EO.4). Writing any value to this bit, even the same 0 value, disables debugging. Please use the following instructions to modify the DPSEL0 bit (EO.0):

   ANL  EO,#0xFE    // select DPTR 0
   ORL  EO,#0x01    // select DPTR 1

Using the multiple data pointers in your C code does not lead to such debug problems. The C51 libraries use the above code to switch data pointers.


  • Infineon User's Manual, Extended Operation Register (EO)

Last Reviewed: Wednesday, October 29, 2008

Did this article provide the answer you needed?
Not Sure
  Arm logo
Important information

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies.

Change Settings

Privacy Policy Update

Arm’s Privacy Policy has been updated. By continuing to use our site, you consent to Arm’s Privacy Policy. Please review our Privacy Policy to learn more about our collection, use and transfers
of your data.