LPC2106 Refuses to Enter Primary JTAG Debug Mode
2006-01-02 by frank_kienast
I have an Olimex LPC2106 header board. I was not having any luck getting this to communicate with an LPT port debugger, so I did a few tests. According to the LPC2106 datasheet (Section 18 - EmbeddedICE logic), both the DBGSEL and RTCK pins must be held high on reset to enter debugging mode. However, the document with the header board from Olimex says that DBGSEL should be held low during power up to enable debug mode, and it doesn't mention RTCK at all. I tried all 4 combinations of logic on these two pins, using both reset and removing and re-applying power. Regardless, I always found that TDO is floating. If I'm understanding correctly, it should be either high or low at all times in debug mode since it is the JTAG data output. To eliminate possible parallel port issues, I used another microcontroller to attempt to communicate with the JTAG port for testing purposes. As expected, I found that TDO remains floating throughout all attempts at communication. Next I tried configuring the secondary JTAG pins via a short program. When I do this, I find that TDO (using the secondary port) assumes a strong high or low state, which changes during communication. Looking at a JTAG state diagram and doing a bit of bit twiddling, I found I was able to get into Shift-DR mode on the JTAG port. I was able to read the device ID (I got 0x4F1F0F0F). However, attempts to write the IR did not work. Regardless what I wrote to IR I would get the device ID back when I read data in from DR. I know my circuit is good, given that I can communicate manually via the secondary JTAG port (in a limited fashion, which may be due my incomplete understanding of the JTAG protocol). Why won't the primary JTAG port work at all? I remember once reading that some people had problems getting the primary JTAG port to work with a different LPC2* chip (I don't remember which chip but it was not the 2106). The Olimex board has a 14.7456MHz crystal (which I can't change). Could that be part of my problem? Incidentally, I noted that a sample "LED flash" program continued running happily throughout all my tests (even where I was communicating actively with the secondary JTAG port). Is this normal? Thanks for any help. Frank