Hello and Happy new year!

I am currently implementing OpenOCD support for the xPC56 microcontrollers, but 
I am facing some difficulties. These MCUs are developed by NXP/Freescale 
(MPC56xx) and STM (SPC56x) and based on a PowerPC E200 core.

More doc:
http://www.st.com/content/ccc/resource/technical/document/reference_manual/cf/ad/d5/76/55/1f/49/de/CD00192452.pdf/files/CD00192452.pdf/jcr:content/translations/en.CD00192452.pdf
https://www.nxp.com/docs/en/reference-manual/e200z0RM.pdf

They are accessed by JTAG, but in a rather strange way. There is several TAPs 
for one chip, and instead of daisy chaining each of them, the external TAP is 
shared by several ones.
The master TAP has a 5-bits IR and its main function is to select with specific 
IR opcode an auxiliary TAP. For instance, the E200 TAP with a 10-bits IR or the 
Nexus TAP with a 4-bits IR.

If you want to access a specific IR on the E200 core like JTAG ID, you would 
need to write 5 bits in the IR with "ACCESS_AUX_TAP_ONCE", go through 
UPDATE_IR, then write 10 bits in the IR with the JTAG ID opcode of your choice.
Each subsequent access to IR will be redirected again to the E200 core. To 
access back the master TAP, you need to go through the DR PAUSE state which 
will reset the jtag controller (!!!).

This seems to be a problem with current OpenOCD design ; from the C code, the 
configuration files or doc I have read, it seems that only fixed size IR are 
used with no way to select them dynamically.

Another problem is the special action triggered by DR PAUSE. The MCU driver 
should be able to order the JTAG interface to go through DR PAUSE (to reset the 
jtag controller) or not (to speed up operations). I am currently using the FTDI 
interface, and the current code, the transition DR SHIFT - DR EXIT1 - DR PAUSE 
is hard coded for each DR scan. I worked around that by disabling this code to 
end in EXIT1 state, then by allowing to start a state move from the unstable 
state EXIT1.

So I am wondering, is supporting this kind of architecture is part of the 
roadmap? Could I get some help to find an elegant way to adapt it with current 
OpenOCD design?

Regards,
Antoine

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel

Reply via email to