I'm partial to using GDB to cross-debug via Ethernet (as described in AN3870).
With the Ethernet connection, I can also use TFTP to download built apps into the NAND Flash of the i.MX which makes the data path relatively simple.
Jose, It is quite tough to debug kernel/drivers effectively using an ethernet connection, especially if you want to debug a crash right at the kernel entry point. So, the best choice would be a JTAG debugger.
What's your intention of debugging anyway? Just for learning or want to port something on a custom hardware?
This is the first time I'm hearing about Jtagkey2p. I'm quite familiar with JLINK. What problems do you face with JLINK. May be you can post that to the JLINK forums. I don't know whether ULINK2 supports Linux kernel debugging.
For user-space : gdb over ethernet is fine.
For kernel-space: you must need a perfectly working debugger to focus on porting. I'm not sure which JTAG is cheap. May be you can take the help of google.
Abatron's BDI3000 (I use those for all my platforms : mpc8379, mpc8323, mpc5125, imx28, imx53, imx6, p2020, p2040 etc)
Retrieving data ...