NXP FRDM-K64F Board

Support for the NXP FRDM-K64F.

Overview

The board has a K64F Kinetis MCU and is supported by cpu/kinetis_common.

Hardware

MCU MK64FN1M0VLL12
Family ARM Cortex-M4F
Vendor Freescale
RAM 256Kb
Flash 1024Kb
Frequency 120MHz
FPU yes
Timers yes
ADCs yes
UARTs yes
SPIs yes
I2Cs yes
Ethernet WIP
USB WIP
LPM TODO
DAC TODO
Vcc TODO
Reference Manual TODO
The board has an integrated debuger adapter (k20dx128) with the firmware from ARMmbed. There are three interfaces available: Drag-n-drop programming over Mass Storage Device USB Serial Port (/dev/ttyACMx) connected to a K64F UART interface CMSIS-DAP for debugging with e.g. OpenOCD

Please update the firmware to version 0221, see below.**

OpenOCD

The latest (01.07.2015) OpenOCD version (also current git) does not support the K64F. There is a patch which makes flashing and debugging possible. A refactored and rebased version can be found here.

Flashing the Device

Over OpenOCD

make BOARD=frdm-k64f flash

Over MSD

Simply mount the mbed Mass Storage Device und copy new RIOT firmware. See also the ARMmbed instructions.

Updating the Booloader

A update of CMSIS-DAP firmware is necessary to using the board with OpenOCD. A good step by step guide is available here.

I can’t flash the device with OpenOCD anymore…

When a flash process has failed or a wrong firmware has been programmed, the following OpenOCD message may appear:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
START...
Info : SWD IDCODE 0x2ba01477
Info : SWD IDCODE 0x2ba01477
Error: Failed to read memory at 0xe000ed00
Examination failed, GDB will be halted. Polling again in 300ms
    TargetName         Type       Endian TapName            State
--  ------------------ ---------- ------ ------------------ ------------
 0* k64f.cpu           cortex_m   little k64f.cpu           unknown
START...
Warn : *********** ATTENTION! ATTENTION! ATTENTION! ATTENTION! **********
Warn : ****                                                          ****
Warn : **** Your Kinetis MCU is in secured state, which means that,  ****
Warn : **** with exception for very basic communication, JTAG/SWD    ****
Warn : **** interface will NOT work. In order to restore its         ****
Warn : **** functionality please issue 'kinetis mdm mass_erase'      ****
Warn : **** command, power cycle the MCU and restart OpenOCD.        ****
Warn : ****                                                          ****
Warn : *********** ATTENTION! ATTENTION! ATTENTION! ATTENTION! **********
in procedure 'reset'
in procedure 'ocd_bouncer'
Solution 1:
  • Hold the reset button and execute make BOARD=frdm-k64f flash in a project directory
  • Release reset button just after “Info : MDM: Chip is unsecured. Continuing.”

Solution 2:

  • Comment out line reset_config srst_only srst_nogate connect_assert_srst in boards/frdm-k64f/dist/openocd.cfg
  • Execute make BOARD=frdm-k64f flash in a project directory

Solution 3:

  • Ask Deep Thought