This is a read-only archive of an earlier blog posting. Reasons for the
change are at http://blog.sensicomm.com.
The permanent version of this post - with comments (if any) - is at
http://sensicomm.blogspot.com/2012/01/stm32-stm32f4discovery-arm-eval-board.html
STM32 STM32F4DISCOVERY arm eval board and
Linux
Picked up this eval board at
the last Embedded Systems Conference, and finally starting to work
with it. The chip is a 168MHz ARM Cortex M4 with 12-bit A/D and
D/A's . The eval board includes an accelerometer, microphone, and
separate audio D/A chip, among other things. Pricing is really
interesting. Here are Digikey quantity-1 prices:
STM32F4DISCOVERY $19.50
STM32F407VGT6
$16.00
STM32F103C8T6 $
5.71
(The F407 is the main ARM chip, and the F103 is a
smaller ARM chip used as a programming interface). So the eval
board is actually cheaper than the chips on it.
The F407 chip has a built-in program loader using either the
serial port or the USB port. Both are supported by Linux tools, so
I'm ignoring the F103-based programming port and using the F407's
USB port.
Connections: I have USB cables
from my Linux box to both the F103's mini-USB connector at the top
and the F407's micro-USB connector at the bottom. The mini-usb is
just used to supply power to the board, and isn't necessary if an
external supply is used.
The programming
tool is dfu-util, from dfu-util.gnumonks.org
. I downloaded and built the latest version from the git
repository. To test it, I used the miniblink example program from
the libopencm3 package at www.libopencm3.org/wiki/Downloads
. libopencm3 uses the summon-arm toolchain, so I downloaded and
built that as well so the example would compile easily. (This also
means I now have 5 different versions of GNU GCC for ARM on my
system: summon-arm (linaro-based), 2 from CodeSourcery, one from
openembedded, and a built-from-scratch GCC. One of these days I'll
simplify that).
To program, I connect a
jumper between the 3V and boot0 pins on connector P2. After hitting
the black reset button, lsusb shows USB devices connected as:
Bus 001 Device 011: ID 0483:df11 SGS Thomson Microelectronics
STM Device in DFU Mode
Bus 001 Device 012: ID 0483:3748
SGS Thomson Microelectronics ST-LINK/V2
To use it
without being root, I also added the line:
SYSFS{idVendor}=="0483", SYSFS{idProduct}=="df11", MODE="666"
GROUP="plugdev" SYMLINK+="usb/stm32_dfu"
to plugdev (in
Debian, I just created a new file in the /etc/udev/rules.d
directory with this single line in it. Locations may be slightly
different in other Linux distributions).
With that done,
the command:
dfu-util --device 0483:df11 --alt
0 \
--dfuse-address 0x08000000 \
--download /miniblink.bin
works. I removed the jumper
and hit reset again, and a single LED blinks, as expected.
So that's "Hello, World" for the STM32F4DISCOVERY.
Now I can start doing real work with it.Comments on blogspot.com
To make or view comments, see the original post at
http://sensicomm.blogspot.com/2012/01/stm32-stm32f4discovery-arm-eval-board.html