Instead of OOCD_SERIAL triggering an attempt to use a specific ftdi based adapter, introduce common target/interface pairs, OOCD_INTERFACE and OOCD_TARGET, and an override via OOCD_FILE allowing full control. Further, attempt to connect to a running openocd instance to flash if possible. This _will not_ work well if you have multiple openocd instances open at once, but that's a rare use case. Examples: OOCD_INTERFACE=stlink-v2 OOCD_TARGET=stm32f0x --> openocd ... -f interface/stlink-v2.cfg -f target/stm32f0x.cfg) OOCD_FILE=board/ek-lm4f120xl.cfg --> openocd ... -f $(OOCD_FILE) (ie, the variable is passed untouched) As part of implementing this, correct variables that were always wrong, and update the openocd flashing commands to use current commands.
README
This example demonstrates the ease of setting up the UART with libopencm3, and using UART interrupts. UART echo is achieved by echoing back received characters from within the interrupt service routine. This has the advantage over using blocking reads and writes that the main program loop is freed for other tasks.
The UART is set up as 921600-8N1.
PA0 is the Rx pin, and PA1 is the Tx pin (from the LM4F perspective). These pins are connected to the CDCACM interface on the debug chip, so no hardware is necessary to test this example. Just connect the debug USB cable and use a terminal program to open the ACM port with 921600-8N1.
For example: picocom /dev/ttyACM0 -b921600