Many ARM processors can be flashed via
- A serial interface (USART)
- A USB flash drive or host (DFU)
- Other serial devices (I2C, SPI, etc)
The trick is to set one or more 'boot' pins on power up and provide a protocol before it reverts to the normal boot from flash.
RTFM and you will find a way to do this on your device.
The STM32 Discovery boards you have already have a JTAG on them.
This is a ST-LINK JTag device, and you can get the signals on a header (marked SWD) on most of the discovery boards. You need to remove two jumpers marked STLINK.
Avoid the VL-Discovery since it is version one and is flakey. The others (F3, F4, Nucleo) are version 2 and MUCH better.
All this is documented on the discovery board manuals and circuit diagrams.
Then look at the discovery circuit and wire these pins to the I.MX6 JTAG pins. You can then convince OpenOCD and many other IDEs to use the STLINK and I.MX6 using the appropriate command line arguments.
You may need or want to write an OpenOCD script to make your life easier.
ST offer an excellent ST-LINK version 2 which has JTAG cabling - It's really the same device as what they put on the discovery boards. It is reasonably priced.
Olimex also make reasonably priced JTAG devices.
Check what the vendor offers for low cost development