Name
Setup — Preparing the STM324X9I-EVAL Board for eCos Development
Overview
Typically, since the STM324X9I-EVAL motherboard has a built-in ST-LINK/V2 interface providing hardware debug support, eCos applications are loaded and run via the debugger arm-eabi-gdb or via the Eclipse IDE. The debugger then communicates with the “GDB server” provided by the relevant host ST-LINK/V2 support tool being used (e.g. OpenOCD).
Normally for release applications the ROM
startup
type would be used, with the application programmed into the on-chip
flash for execution when the board boots. It is still possible to use
the hardware debugging support to debug such flash-based ROM
applications, and this may be the desired approach if the application
is too large for execution from on-chip SRAM, or where all of the SRAM
and SDRAM is required for application run-time use.
If off-chip non-volatile memory (NVM) is used to hold the main application then the board can boot from the internal flash using the BootUp ROM loader. This BootUp code will then start the main application (after an optional update sequence).
If required, it is still possible to program a GDB stub or
RedBoot ROM
image into on-chip Flash and download
and debug via the serial UART (CN8). In that case, eCos applications
are configured for RAM
startup and then downloaded
and run on the board via the debugger arm-eabi-gdb,
or via the Eclipse IDE. By default for serial communications, all
versions run with 8 bits, no parity, and 1 stop bit at 115200
baud. This rate can be changed in the eCos configuration used for
building the GDB stub ROM
image.
Preparing ST-LINK/V2 interface
The support for using the on-chip ITM stimulus ports for diagnostic
and instrumentation output requires that the ST-LINK/V2 firmware is at
least version V2.J17.SO
. The firmware for the
ST-LINK/V2 interface can be checked, and updated if needed, using a
tool available from STMicroelectronics. The firmware version is also
reported when the openocd command is executed
(using a suitable configuration file). For example, the following
OpenOCD output reports JTAG v23
:
Info : STLINK v2 JTAG v27 API v2 SWIM v0 VID 0x0483 PID 0x3748
Unfortunately the official firmware updater is only available for the Windows platform at the moment. From a Windows machine:
- Ensure that the Windows PC and STM324X9I-EVAL board are disconnected.
Download the STM32 ST-Link USB driver from ST's website.
The page titled “ST-Link, ST-Link/V2, ST-Link/V2-1 USB driver signed for XP, Windows7, Windows8” provides the driver download http://www.st.com/content/st_com/en/products/embedded-software/development-tool-software/stsw-link009.html
- Install the ST-Link USB driver on your Windows PC, by simply unzipping the downloaded file and running the installer contained within.
Download the STM32 ST-LINK Utility from ST's website.
The page titled “STSW-LINK004 STM32 ST-LINK utility” provides the download of the utility http://www.st.com/web/en/catalog/tools/PF258168
-
Install the ST-LINK Utility software on your Windows PC. This is achieved by simply
unzipping the downloaded file
stsw-link004.zip
and running theSTM32 ST-LINK Utility_vX.X.0.exe
that was contained within it. Follow the on-screen instructions. Connect the STM324X9I-EVAL board to the PC.
Connect the STM324X9I-EVAL board to the PC using the ST supplied USB-B cable. Windows should correctly identify the USB device and load the device driver. Windows Device Manager should now show “STMicroelectronics STLink dongle” under “Universal Serial Bus controllers”.
Run the ST-LINK Utility and ensure the ST-LINK firmware is up to date.
From the Windows “Start” menu run the “STM32 ST-LINK Utility”. Click on the
connect
icon, or selectTarget->Connect
from the menu. This should confirm that a successful connection can be made to the board. To update the on-board ST-LINK/V2 firmware selectST-LINK->Firmware Update
from the menu. In the ST-LINK dialog box that then appears click on theDevice Connect
button. This will likely result in a message “ST-Link is not in DFU mode. Please restart it.”. In this case simply disconnect the board from the PC, power cycle the board and then reconnect it after a couple of seconds. Click theOK
button on the message. In the original ST-Link dialog box clickDevice Connect
again. The dialog box should now report the current on-board and available firmware versions, and enable you to upgrade the board by pressing theYes >>>>
button. We have tested the system with firmware versionV2.J17.SO
and would recommend this version as a minimum. ClickingYes >>>>
will cause a progress bar in the dialog to be animated and should eventually result in a “Update Successful” message. You can then close the various dialogs and exit the ST-LINK Utility. Disconnect and power-cycle the board. Reconnect the board and it is now ready for use with OpenOCD.
Programming ROM images
Since the STM324X9I-EVAL board has a built-in ST-LINK/V2 SWD interface, the USB host connection (CN21) and suitable host software (e.g. The OpenOCD package openocd tool) can be used to program the flash.
The openocd GDB server can directly program flash based applications from the GDB load command.
Note | |
---|---|
The openocd command being used should have been configured and built to support the ST-LINK/V2 interface. This is achieved by specifying the --enable-stlink when configuring the OpenOCD build. Additional information on running openocd may be found in the OpenOCD notes. |
For example, assuming that openocd is running on the same host as GDB, and is connected to the target board the following will program the “bootup.elf” application into the on-chip flash:
$arm-eabi-gdb install/bin/bootup.elf
GNU gdb (eCosCentric GNU tools 4.7.3c) 7.6.1 [ … GDB output elided … ] (gdb) target remote localhost:3333 hal_reset_vsr () atpath
/hal_misc.c:171 (gdb)load
Loading section .rom_vectors, size 0x14 lma 0x8000000 Loading section .text, size 0x3adc lma 0x8000018 Loading section .rodata, size 0x6c0 lma 0x8003af8 Loading section .data, size 0x6dc lma 0x80041b8 Start address 0x8000018, load size 18572 Transfer rate: 14 KB/sec, 4643 bytes/write. (gdb)
Alternatively, the openocd telnet interface can be
used to manually program the flash. By default
the openocd session provides a command-line via
port 4444
. Consult the OpenOCD documentation for
more details if a non-default openocd configuration
is being used.
With a telnet connection established to the openocd any binary data can easily be written to the on-chip flash. e.g.
$telnet localhost 4444
Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. Open On-Chip Debugger >flash write_image test.bin 0x08000000
wrote 32518 bytes from file test.bin in 1.073942s (29.569 KiB/s)
To create a binary for flash programming the arm-eabi-objcopy command is used. This converts the, ELF format, linked application into a raw binary. For example:
$ arm-eabi-objcopy -O binary programname
programname
.bin
2024-03-18 | eCosPro Non-Commercial Public License |