I work on the JTAG emulation support for Cortex-A8 using the BeagleBoard.
I have some problems I can't solve I would like to ask you if someone is aware of the Linux port.
Using PEEDI, I set a hardware breakpoint and start_kernel() and start the CPU.
The board boots and loads the kernel from the card. Later it hits the break.
At this point I connect Insight to PEEDI and I can continue normal debugging the start_kernel() function.
Stepping in and over the init functions. The problem appears at later point shortly after I 'continue' the execution - PEEDI receives bit OVERRUN error set in the CTRL/STAT DAP register.
Thus it is no more able to access the APB and read the DSCR debug register to check the CPU state.
I tried to debug step-by-step where is the piece of code that "disables" the JTAG but with no success so far.
Does someone have a clue what could cause this. What I investigated is that the code is not directly invoked in start_kernel(), it is in thread that is executed later or in interrupt handler. I know that because if I single-step the whole code in start_kernel() the problem never appears because during single step interrupts are disabled.
Another thing I noticed is that after Linux is up, the reset button does not reset the board.
The JTAG problem and the reset button problem are gone only after power cycle of the board.
Do someone have any clue about the above? What could cause this? Some domain in power-down? Something else?