JTAG on Kayla DevKit?


Anyone get JTAG working on the Kayla platform? I’d appreciate some help!

I’ve got a kayla DevKit from SECO (https://developer.nvidia.com/content/kayla-platform) and I have a couple questions about jtag:

How do I physically connect to the jtag?
Where can I find config files for this device?

I a Tegra JTAG link that pointed to http://tegradeveloper.nvidia.com/tegra/forum/jtag-support, but this link is not working.

My Tegra 3 is a different brand/model, but these and the ARM9 should have the same 20 pin, .1" pitch connector, arranged as 2x10. At least this part should be standard for ARM9. It depends on the JTAG debugger for how you connect it to your PC (parallel port, USB, and ethernet are common…USB lower speed costs less, but I wouldn’t go for the USB 1.1, and ethernet is very expensive). Not sure if this will work, but I’m checking out this one which looks promising:

Many of the debuggers are quite expensive, and use some form of proprietary software…but many others (including the one I mentioned above) use OpenOCD:

YMMV, but here is one of the OpenOCD config file listings:

I’m personally waiting for more info on compatibility for ARM15/Jetson. The Tegra 3 I use should be OpenOCD compatible, which means probably yours is too…but it isn’t a guarantee.

I haven’t used JTAG myself but I know that the engineers in NVIDIA would be using JTAG debuggers that aren’t in the hobbyist price-range. Anyway, here is the reply from one of our Embedded Engineers when asked a similar question by someone else:

[i]I would suggest debugging with printfs, JTAG is probably painful. Perhaps kgdb/kdb might work better.

In the past, I have used OpenOCD for the AVP on Tegra-K1 (tegra124). However, there are at least a couple issues using it on the main CPUs:

  • I don’t think OpenOCD supports Cortex-A15 yet. I’m not 100% sure if it explicitly needs to, or only needs to know about ARMv7 though.

  • Even on the AVP, only memory/MMIO reads/writes seems to work well for me. Stuff like breakpoints didn’t. I didn’t find it too useful.

  • When our CPUs enter LP2, they apparently disappear from the JTAG chain, which is unusual and confuses the heck out of OpenOCD. Cluster switch probably breaks it too. We might have some internal non-upstreamed version that knows about this, but I’m not sure.

PS: I’ve sent a free Jetson TK1 to an OpenOCD contributor, he said he will try to get some Jetson TK1 support added to pubic OpenOCD eventually, but that will obviously take time.

PPS: If you haven’t joined already, you might want to join the Google+ group “NVIDIA Tegra OSS” (https://plus.google.com/u/0/b/114318922342198493952/communities/102538751898373022031). That group includes some NVIDIA engineers and has discussions about kernel related issues for Tegra K1 and older Tegra SOCs.