STM32 Nucleo F439ZI
NUCLEO-F439ZI development board.
Vendor: STMicroelectronics
Program Target: STM32F4 : STM32F439ZI
Sample firmware
nucleo_f439zi_blinky_uart.hex:blinkyfrom bcdevices/bento-zephyr-fw (v1.0.2), built withBLINKY_SHELL=uart. Toggles LD1 at 1 Hz and answers aversioncommand on the ST-LINK virtual COM port (USART3, 115200 baud).
References
Repositories
Repository |
Contents |
|---|---|
Prebuilt nucleo_f439zi_blinky_uart.hex |
|
Test plans under |
|
|
To rebuild the image (see the repository README.md for toolchain setup):
make blinky BOARD=nucleo_f439zi BLINKY_SHELL=uart
The default BLINKY_SHELL for this board is usb (shell on the CN13 user
USB port). BLINKY_SHELL=uart puts the version command on the ST-LINK
virtual COM port so a single USB cable handles both programming and the
version check.
Verifying the image
Open the ST-LINK virtual COM port at 115200 baud. The board prints
blinky <version> (build <git>) on nucleo_f439zi at boot, and responds to:
blinky:~$ version
Test Station
Both test plans use the same station. The PER-101 Test Agent runs OpenOCD against the Nucleo’s on-board ST-LINK/V2-1; no external probe is needed.
SKU |
Model No. |
Model Name |
|---|---|---|
SKU-6 |
PLT-106 |
Production Line Tool |
SKU-7 |
PER-101 |
Test Agent |
— |
NUCLEO-F439ZI |
Device Under Test (on-board ST-LINK/V2-1) |
Connection
Device A |
Connector |
Cable P/N |
Connector |
Device B |
|---|---|---|---|---|
SKU-6 |
USB-A (Port 1) |
TBD |
USB-C (PLT port) |
SKU-7 |
SKU-7 |
USB-A |
TBD |
CN1 Micro-B (ST-LINK) |
NUCLEO-F439ZI |
Add nucleo_f439zi_blinky_uart.hex to the PLTcloud project alongside the test plan.
Program NUCLEO-F439ZI (Test Agent + ST-LINK)
nucleo_f439zi_blinky_flash.yaml: confirms the ST-LINK is enumerated on the
Test Agent, then programs, verifies and resets the STM32F439ZI with OpenOCD.
title: "NUCLEO-F439ZI Blinky Flash"
suite:
- ident: DEF
title: "Defines"
steps:
- command: define FIRMWARE.filename "nucleo_f439zi_blinky_uart.hex"
title: "Set firmware image name"
- command: define AGENT.vidpid "6666:8001"
title: "Set Test Agent USB ID"
- ident: AGENT
title: "Setup Programming Session"
steps:
- command: usb detect
title: "Detect Test Agent"
id: "%AGENT.vidpid%"
timeout: 30s
fail: "Test Agent not found: check the PLT to Test Agent USB-C cable and that the agent has booted"
- command: agentCfg PROGSBC
title: "Configure Test Agent and transfer firmware"
id: "%AGENT.vidpid%"
retry: 3
with:
- "%FIRMWARE.filename%"
fail: "Could not configure the Test Agent or transfer the firmware"
- ident: IDENT
title: "Identify Target"
steps:
- command: agentExec PROGSBC "lsusb -d 0483:374b"
title: "ST-LINK present on Test Agent"
timeout: 5s
fail: "ST-LINK not found: check the Test Agent to Nucleo CN1 USB cable"
- ident: PROG
title: "Program STM32F439ZI"
steps:
- command: agentExec PROGSBC "openocd -f interface/stlink.cfg -c 'transport select swd' -f target/stm32f4x.cfg -c 'reset_config srst_only srst_nogate connect_assert_srst' -c 'program /run/pltagent/mnt/%FIRMWARE.filename% verify reset exit'"
title: "Program, verify and reset"
timeout: 60s
fail: "Programming or verify failed: check the ST-LINK connection and retry"
Note
0483:374b is the USB ID of the ST-LINK/V2-1. connect_assert_srst
holds the target in reset while OpenOCD attaches, so programming succeeds
even if the running firmware has disabled the SWD pins or entered a
low-power mode.
Program and Check Version (Test Agent + ST-LINK)
nucleo_f439zi_blinky_flash_version.yaml: the plan above plus a final group
that sends version over the ST-LINK virtual COM port and checks the reply.
Add the expected version to the DEF group:
- command: define APP.version "1.0.2"
title: "Set expected blinky version"
and append a VERSION group after PROG:
- ident: VERSION
title: "Check App Version"
steps:
- command: agentExec PROGSBC "T=$(ls /dev/serial/by-id/usb-STMicroelectronics_STM32_STLink_* | head -n1); stty -F $T 115200 raw -echo; (sleep 1; echo version > $T) & timeout 5 grep -a -m1 'app:[ ]*blinky %APP.version%' $T"
title: "Query app version over ST-LINK VCP"
timeout: 10s
retry: 2
fail: "DUT did not report the expected blinky version on the ST-LINK VCP: check the programmed image"
Tip
The step opens the VCP on the Test Agent, sends version after a short
delay, and waits up to 5 s for app: blinky <APP.version>. The
grep exit code is the pass/fail result. Update APP.version when
you change the firmware image.