A guy called “Bingo” converted the ST-Link v1 (STM32VLDISCOVER) into a Versalon programmer which can be used by OpenOCD application to program many other micro-controller over SWD interface.
If you have 2 STM32VLDISCOVER boards you are a luck guy and could just follow this tutorial:
http://takenapart.com/?p=82
If you (like me) is a humble guy and have only 1 STM32VLDISCOVER then you need to use your creativity to convert ST-Link in a Versalon board.
It is common for people who work with embedded system to have some J-Link programmers around (J-Link is like a gift included in many evaluation boards). Then I decide to use it to program Versalon firmware into STM32VLDISCOVER.
This is like I connect J-link pins to STM32VLDISCOVER:
J-LINK STM32DISCOVER
V-ref (pin 1) 3.3V
SWDIO (pin 7) SB10
SWCLK (pin 9) SB6
5V-supply (pin 19) 5V
GND (pin 20) GND
Then I used “J-Flash ARM” to Unsecure and Erase Chip and used “J-Link Commander” to program Versalon firmware (firmwares-svn-986.tar.gz):
SEGGER J-Link Commander V4.40b ('?' for help)
Compiled Dec 22 2011 10:55:05
DLL version V4.40b, compiled Dec 22 2011 10:54:45
Firmware: J-Link ARM V8 compiled Sep 22 2011 16:23:23
Hardware: V8.00
S/N: 20100214
Feature(s): RDI,FlashDL,FlashBP,JFlash,GDBFull
VTarget = 3.080V
Info: TotalIRLen = ?, IRPrint = 0x..000000000000000000000000
No devices found on JTAG chain. Trying to find device on SWD.
Info: Found SWD-DP with ID 0x1BA01477
Info: TPIU fitted.
Info: FPUnit: 6 code (BP) slots and 2 literal slots
Info: Found Cortex-M3 r1p1, Little endian.
Cortex-M3 identified.
JTAG speed: 100 kHz
J-Link>exec device = STM32F103C8
Info: Device "STM32F103C8" selected (64 KB flash, 20 KB RAM).
J-Link>loadbin c:\versa.bin, 0x0
Loading binary file... [c:\versa.bin]
Writing bin data into target memory @ 0x00000000.
WARNING: CPU is running at low speed (8031 kHz).
Info: J-Link: Flash download: Flash programming performed for 1 range (28672 byt
es)
Info: J-Link: Flash download: Total time needed: 13.330s (Prepare: 2.459s, Compa
re: 0.191s, Program: 8.869s, Verify: 0.159s, Restore: 1.650s)
J-Link>
Update: There a way to use the serial programmer native of STM32 chip to update its firmware, this way you don’t need other board or external programmer, but needs a USB/Serial 3.3V: http://miosix.org/boards/stm32vldiscovery-linux-support.html