I would recommend that you check out an ARM board that has good support in OpenOCD. This creates an excellent development platform for the stuff you mentioned.
Check out the Olimex L9260 board. It is based on an ARM926 core and has plenty of RAM and Flash. It also has SD/MMC interface, SPI, I2C, UART etc
You need a hardware device for OpenOCD to work. There are plenty of options, most are based on the FTDI 2232 chip. Here is one from Olimex:
It is possible to use openocd from linux, mac os x and windows.