Freescale Freedom FRDM-K64F Development Platform - Review

Table of contents

RoadTest: Freescale Freedom FRDM-K64F Development Platform

Author: mudz

Creation date:

Evaluation Type: Independent Products

Did you receive all parts the manufacturer stated would be included in the package?: True

What other parts do you consider comparable to this product?: TI Tiva C TM4C1294XL Launchpad, XMOS SlicetKIT, Raspberry Pi 2 Model B, Beagle Board Black...

What were the biggest problems encountered?: Programming was a bit hard to understand first time. Finding support material was time taking. Making an application on IBM BlueMix.

Detailed Review:


                                                                            Freescale Freedom FRDM-K64F Development Platform

Remember  when back in 1984 Macintosh kick started a revolution and changed the world? The Nikola Tesla claiming future belongs to the alternating Current? The cell phone Invention? The Jet Engine? and many more... Wondering where I am going with this? I am talking about the one of the next revolutionary things of the future, and that I can sum it up in these words 'Internet of Things' i.e. " IoT ", though, it's not going to be a big revolution like the one's mentioned earlier but in this age, where we are continuously moving towards more and more digital world, this is going to mark its presence in future. Internet of Things Intelligently connects humans, devices and systems. This is why many big Tech Giants are attracted towards IoT's and making their efforts to shape the future. Such is a case where tech giants: IBM & Freescale (not to forget ARM) collaborated and made a development platform named  "ARM mbed IoT starter Kit" (Freescale Freedom FRDM-K64F development platform).

Quick Introduction about FRDM-K64F or ARM mbed IoT Starter Kit:

This starter Kit for IBM IoT Foundation provides the user with a slick experience, getting data from the on board sensors into the IBM cloud within minutes of opening the box. It is particularly suitable for developers with no specific experience in embedded or web development, as it provides a platform for learning new concepts and creating working prototypes.After the initial out of box experience, the infinite possibilities of cloud applications can be explored through IBM's production grade BlueMix platform, in which deployment and device management is as simple for one device as it is for one million. The starter kit hardware can be modified and extended to explore the device design space, and a finalised design can be taken to production using the mbed SDK and HDK.

This Starter Kit consists of two kits: FRDM-K64F Development Platform & mbed Application Shield.

FRDM-K64F is an ultra-low-cost development platform for Kinetis K64, K63, and K24 MCUs. The FRDM-K64F hardware is form-factor compatible with the Arduino™ R3 pin layout, providing a broad range of expansion board options. The FRDM-K64F is feature packed with a lot of peripherals to enable rapid prototyping, including a 6-axis digital accelerometer and magnetometer to create full eCompass capabilities, a tri-colored LED and 2 user push-buttons for direct interaction and feedback, expansion memory with a microSD card slot, and connectivity options using onboard Ethernet port and headers for use with Bluetooth and 2.4 GHz radio add-on modules. The FRDM-K64F platform features OpenSDAv2, the Freescale open source hardware embedded serial and debug adapter running an open source bootloader. This circuit offers several options for serial communication, flash programming, and run-control debugging.

Mbed Application Shield This application shield has been designed to enable the maximum number of potential experiments with Arduino form factor development boards, keeping as much in common with the mbed application board as possible. Features of both the Kits are mentioned below:





  • Freescale K64F Kinetis K64 MCU (MK64FN1M0VLL12)                                                                            
  • High performance ARM® Cortex™-M4 Core with Floating point unit and DSP
  • 120MHz, 256KB RAM, 1MB FLASH
  • Dual role USB interface with micro-B USB connector
  • FXOS8700CQ accelerometer and magnetometer
  • Two user push buttons
  • Flexible power supply option – OpenSDAv2 USB, Kinetis K64 USB, and external source
  • Easy access to MCU input/output through ArduinoTM R3 compatible I/O connectors
  • Programmable OpenSDAv2 debug circuit supporting the CMSIS-DAP Interface software that provides:

Mass storage device (MSD) flash programming interface

CMSIS-DAP debug interface over a driver-less USB HID connection providing run-control debugging and compatibility with IDE tools

Virtual serial port interface

Open source CMSIS-DAP software project

  • Ethernet
  • Add-on RF module: nRF24L01 Nordic 2.4GHz Radio
  • Add-on Bluetooth module: JY-MCU BT board V1.05 BT



                            Mbed Application Shield






  • 128x32 Graphics LCD
  • 5 way joystick
  • 2 x Potentiometers
  • Speaker, PWM Conencted
  • 3 Axis /1 1.5g Accelerometer
  • RGB LED, PWM connected
  • Temperature sensor
  • Socket for for Xbee (Zigbee) or RN-XV (Wifi)




Unboxing & Running First Program on ARM mbed IoT Starter Kit:


The package I recieved was in good condition. It was a big Yellow courier box & inside it there was a bubble wrap bag. Opening this bag revealed a little white box, resting peacefully there. This Little box describes the Kit as ARM mbed IoT Starter Kit and Ethernet Edition for IBM Internet Of Things Foundation is mentioned just below it.

Inside this white box there is a black plastic platform which was holding the two blue kits. These kits were packed in anti-static plastic bags. USB cable was placed just below this plastic platform. A small paper card inside the box describes how to Getting Started with this Kit.




                                   1. Courier Box                                 2. Bubble wrap bag containing Kit                  3. ARM mbed IoT Starter Kit Box


              4. FRDM-K64F platform with mbed Application Shield                                                             5. USB Cable


      6. Freescale Freedom FRDM-K64F Development Platform                                                7. mbed Application shield

Getting Started(Running Demo Program):

The ARM mbed IoT Starter Kit comes preloaded with a demo program, The demo program is an example to show what this small kit (size of a credit card) can perform.

Take these steps(mentioned below in the picture) to get started with this board:


Within a few seconds the light on your starter kit should have lit up green, and the status on the LCD screen should be "connected"

You should see a drive appear on your computer, which contains a file called "IBM.htm" - double click this to open it in a browser or Open and enter your device id(scroll down with joystick to get your device id). You should now be seeing the data being sent from your starter kit.

Here are screenshots of sensor data being sent by the Kit to the IBM cloud:


                                              Overview                                                                           Chartview


Firmware FRDM-K64F:

First thing is to check the firmware of the Starter kit. The latest firmware version for the FRDM-K64F is: 0221

To check your firmware version:

- connect Starter Kit with pc using USB cable. The status light will glow, indicating it has power. After a few seconds of activity, the PC will recognise the mbed Microcontroller as a standard USB drive(MBED).

- Open DETAILS.TXT/ibm.txt if present on this MBED drive.

- If not present, open the MBED.HTM file on your mbed microcontroller with a text editor.



                                                  USB Drive as MBED                                                  ibm.txt showing firmware version: 0204

Firmware Update:

Follow this link to upgrade firmware on Starter Kit: Firmware FRDM K64F - Handbook | mbed

After Update:


Drivers Installation:

Connecting Starter Kit to pc via USB cable shows MBED. Your mbed Microcontroller can appear on your computer as a serial port. On Mac and Linux, this will happen by default. For Windows, you need to install a driver from here: Windows serial configuration - Handbook | mbed.


          Without drivers                                       With drivers

First program(mbed):-

Online Complier:

To experience Free access to the mbed online compiler, mbed C/C++ SDK and developer community, visit: FRDM-K64F | mbed

Click on compiler (On the top right corner of this page) and login/sign-up to get free access to mbed online compiler.

Now you can import programs from Import tab and compile that program to get a .bin file. To download this program on the Mbed enabled starter kit, send this .bin file to the MBED drive and within few second .bin file will get downloaded to the kit.


Example image Shows online mbed compiler with many program imported on my program workspace. I have compiled that program and the online compiler has created a .bin file which we can save on the pc and download that .bin file on the kit.

First Program(KDS):

We need to get rid of the mbed bootloader, if we want to debug programs in C language on Kintetis Design Studio Integrated Development (KDS). We will be using J-Link Firmware instead for using debugging feature on KDS.

How to replace the mbed bootloader with J-Link Firmware:

Creating a project in KDS:

  1. Open KDS, dismiss the welcome screen if you see it, then right click in the "project explorer" panel on the left. Select New Project and choose "Kinetis Design Studio Project"
  2. Name the project, e.g. K64F-example
  3. Select MK64FN1M0xx12 as the processor type
  4. Deselect 'Use Kinetis SDK'
  5. Select 'Processor Expert'
  6. Click Finish
  7. If you do not see any extra panels, choose "Show Views" from the "Processor Expert" menu.

Add a Processor Expert component

  1. Go to the Components Library tab/li>
  2. Switch to Alphabetical View
  3. Find BitIO and drag it to the Components folder in the Components view
  4. Right Click on BitIO component and select Inspector
  5. It should show a red box indicating a missing value for the pin to use
  6. Select "advanced mode" from the bar above the inspector window
  7. Give the pin a name (eg. LED)
  8. Click in the top red box and start typing, watch as the big list of pins is filtered. Enter PTB22
  9. Set "Direction" to output and "Initial value" to 1
  10. In the "Project Explorer" panel expand your new project if it is not already, then right-click and select "Generate Processor Expert Code"
  11. Now expand Sources and open "main.c"
  12. Look for the bit where you are supposed to "write your code here" and insert:






13. save the file and click the "hammer" icon to build the project.

Run new program using debugger:

  1. Set up the project to use the J-Link debugger: click the little triangle next to the beetle icon on the top bar and select "debug configurations"
  2. Double-click GDB SEGGER J-Link Debugging
  3. The annoying bit: open the "Debugger" tab and enter "MK64FN1M0xxx12" in the device name and click apply
  4. Open the "Startup" tab and un-check the "ENable SWO" box
  5. Click "debug" at the bottom of this pop-up window
  6. If all goes well it will switch to the "debug" perspective. If it asks permission, feel free to check the little box so it does not ask next time
  7. If you see a "terms of use" message from Segger, accept it
  8. By default the debugger will have placed a breakpoint at the start of "main". Double-click in the left margin next to the two LED lines to set two more
  9. Now you can click the green "play forward" arrow in the top bar to advance to the next breakpoint
  10. Press "play forward" if you want to toggle the red LED on the board on and off.


Application: Testing of ARM mbed IoT Starter Kit for Home automation/smart homes.


                                                               Home Automation using FRDM-K64F Platform & AIRGrid Modules



AIM: To establish a connection between IoT starter Kit and Internet enabled Modem via AirGrid Modules.

Working: Yes !

Components Required: IoT Starter Kit, Two AirGrid M5-HP, Ethernet Cables, POE.


We will be using demo program which comes preloaded to the ARM mbed IoT Starter Kit for this review.

Demo Program- This example code connects the mbed  FRDM-K64F devices to the IBM Internet of Things Cloud service via ethernet. Connect an ethernet cable(one end is connected to internet enabled modem) to this IoT Starter Kit and it will try to connect to IBM IoT cloud. If the connection is established successfully the RGB led on mbed application shield will turn Yellow to Green otherwise Red led will glow showing that either internet is not connected or there is some problem in connections. If connection was unsuccessful, it will wait few seconds and then it will turn to yellow again which implies it is trying to establish the connection again.

Also if connection is established we can check the sensor readings from application shield to IBM cloud. So our aim is to get green led and check the IBM cloud for readings coming from sensors on board shield.

First we need to establish a connection between two AirGrid Modules. This is done by configuring one AirGrid M5-HP module as Station and the other one as Access Point.


                                                                     Yellow Circled: Access point               Orange: Station


              Led's showing Connection is not established(station side)                           Led's showing connection is established and strength of signals(Station)

When the connection between two AirGrid Modules is established, these two modules provides a direct connection to internet (without the need of ethernet cable for long distances). Connect the Internet enabled Ethernet cable(from modem) to Station Airgrid M5-HP module and at the Access point end, connect ethernet cable to the IoT starter Kit. 




                     Connection is not established or Internet not working                                             Connection is established and Internet is Working

Mbed Application Shield Sensor Reading on IBM Cloud:


Full details on this test is given on this blog here.

Conclusion: This test shows that for Home Automation/Smart Home or similar type of applications we can use this IoT Starter kit as we have replicated the similar conditions which need to be done for home automation. for example, we have replicated any sensor reading to this kit which can be watched over Internet and required actions can be taken like giving input to the kit to perform some task. Also, we just watched a case where we do not have Internet access to some place, say a distant place, where our IoT starter Kit is working, taking inputs from many sensors and giving live feed to Internet via AirGrid Modules. So this test is a Success.


Application: Interfacing a 5" TFT LCD and test a small game on it.

                                                               A small Game using FRDM-K64F Platform & TFT LCD


AIM: To interface a 5" TFT LCD with touch controller to FRDM-K64F Platform and play a small game on it.

Working: No

Components Required: IoT Starter Kit, 5" TFT LCD with capacitive touch screen, 19.2v power supply for LCD backlight, breakout board for 40 pin 0.5 pitch LCD connector, Breakout board for 6 pin 0.5 pitch Capacitive touch Screen.


I was not able to complete this experiment for two reasons:-

1. I previously had a small TFT LCD but the connecting flex cable got teared up making it useless, so I ordered a new 5" TFT LCD from this site: 5"TFT LCD Display Module WVGA 800x480 High Resolution for MP4,GPS. LCD took about one and a half month to get delivered here. image Very poor delivery service by this chinese LCD seller.

2. I said okay, I have a little window to make a small game program and I started making PCB for the same. Then only I noticed that I have ordered a TFT LCD with RGB interface. The problem with this Starter Kit is that the target board does not have support for RGB TFT LCD. To interface this LCD with the Kit I need minimum three 8-bit ports, but the Kit does not offer a single complete 8 bit port to configure them to work as a whole 8-bit port.

     I will keep on trying to interface this LCD with the kit.


Result: Failure.

Conslusion: A TFT LCD (with RGB interface) cannot be interfaced directly to this Starter Kit.


So, What's your Pick?





   Texas Instruments

xCORE General Purpose SliceKIT

     Raspberry PI 2

          Model B  

     Beagle Board



    ARM mbed IoT

     Starter Kit   







Clock Speed

80 MHz

500 MHz

900 Mhz

1 GHz

120 MHz



Tiva C Series


ARM Cortex-M4



Broadcom BCM2836

ARMv7 Quad Core Processor


ARM Cortex-A8


ARM Cortex-M4F





512MB DDR3 (800MHz x 16)






























1 Micro-HDMI


USB Port





Micro USB Type B


































Temperature, Accelerometer, Magnetometer, Potentiometer, Joystick


Yes(2x 40-pin [XL])















10x I2C, 8x UART, 4x Quad-SSI

2x 12-bit ADCs (2MSPS)

PWM, External Peripherals, Memory Interface

Multi UART(8), 20 timers, xTAG2 debug adaptor, JTAG adaptor, PSU

DSI Display Port,

Dual Core VideoCore IV® Multimedia Co-Processor

4x UART, 8x PWM, LCD, GPMC, MMC1, 2x SPI, 2x I2C, A/D Converter, 2xCAN Bus, 4 Timers

SPI (3), I2C (3),I2S, UART (5), USB OTG/ Host/Device, USB regulator, PWM, ADC (2x 16bit with mux), DAC (12bit), GPIO, Comparator, CAN

Support: On board support/connectors are available          External: GPIO pins are available, can be interfaced but support is not available


Few thoughts on ARM mbed IOT Starter Kit:

How easy is to find the material for this Kit?

Literally, I have to visit many sites, read many documentation to gather the information and to use the features of this Starter Kit. I will be adding most of the links here below. Documentation felt incomplete to kick start programming with such features mentioned for this mbed starter Kit.

How easy is to program this kit?

Alright, Programming was confusing at first as we need to change the firmware to program it via KDS but with the online mbed compiler it becomes a bit more interesting. What is mbed? Lets read the following lines from mbed SDK is now Open Source! | mbed :


               “The mbed Software Development Kit (SDK) is a C/C++ microcontroller software platform already relied upon by tens of thousands

          of developers to write code for ARM microcontrollers. It has always been free for commercial and noncommercial use, but this latest

          release under an open source license will extend its applicability further to be relied on in more commercial, open source and

          educational projects.”


In short it a powerful, free(open source) software to program ARM based devices online/offline with support for multipule microcontrollers & toolchains. Login to your online mbed compiler, Import or create a new program with pre built libraries or edit example codes and compile it. Also, it’s easy to publish your codes directly on mbed developer community with just a single click.

With KDS, it was a little hard to program but you can choose Processor Expert to easy your task while creating new project.


Can we use this mbed Application shield with another kit?

Yes, but I have not implemented this yet but it can be connected to any other development kit with the little help of a custom made PCB interface to make it pin compatible with other Kit/board.

Is there some more space left to add few more things?

FRDM-K64F: It's a great IoT starter kit with such features and its just of a size of credit card. It is tightly packed with small IC’s, SMD devices(Capacitors, Resistors, Crystals etc.), Headers, Connectors. If you take a close look at this beauty there is literally no room left for any other thing to place on it. But using it for a while(speciafically for home automation) I strongly felt a need of a small microphone and In my opinion a small condenser can find its place on this board. For Applications like smart home or home automation or similar kind of applications this small addition would be a great thing.

Mbed Application Shield: FRDM-K64F is totally packed but this application shield has space left and few more things can be added to it like motor driving IC, Sensors, buttons, or a small microphone?

Although, it is mounting enough sensors and surely the Kit is tightly packed but few more additions could be possible on this Starter kit.

Pricing .. good enough?

No, I strongly DISAGREE with this price tag ($120 in US, ~176$ in India). It’s just not right. Why?

Alright, let’s take a look over similar type of kits in market. If we compare it with other kits like raspberry pi, beagle board etc. which offer much more features with powerful processors this kit should cost less than that or near that kit but it’s almost double the price. Also if we consider simple IoT Kits like Texas Instruments CC3200 SimpleLink Wi-Fi LaunchPad or CC3200MOD-LAUNCHXL LaunchPad these Kits have less features but we can always add sensor board to it and still get low priced kit to kick start with IoT thing. And not to forget FRDM-K64F alone costs very cheap. Yes, these kits are not mbed enabled yet, but future possiblity is that we can get this feature anytime soon because they got the ARM. image

So why is this bundle so costly? Just for Mbed Application Shield or is it about IBM Bluemix cloud integration? But If Starter Kit is being sold at this price tag, it must have some premium feature to attract developers, like it should come with a minimum 1 Year of free IBM Bluemix service (or at least for 6 months).

In my opinion, it should not be priced more than $80 ($30 - $50 would be better).


Does it really boost the things to test features like smart homes or smart city or other IoT prototypes?

I think yes, apart from testing few things I don’t think it will be suitable for applications which uses large amount of data over internet like camera feedback or to drive TFT’s. This Kit is more like a Introduction to the IoT world, just like we used 8051 Kits to understand this embeded world(many will say I have used basic PIC, AVR etc. but the point is its all basics).


Can we connect it with internet to watch videos or stream live content?

Not tested, but i think we have to wait for that. Microcontroller is not that much powerful to stream data over internet and if we are talking about connecting a TFT with this kit and watching a video on it, we are overestimating this Kit. Connecting a Camera and watching its live feed is beyond its capabilities. Come on, Its just a Starter Kit but the Future is bright.

What more to come(Future Upgrades)?

We may find much more powerful ARM Microcontroller for future updates on this kit or it might be a ARM Processor with RAM. Point is this is a basic starter kit to work on IoT and we need much more processing power to drive TFT's or Cameras. I am talking about TFT's and cameras because nowadays, these are the most common things we use to automate our home.Future Upgrades might include a powerful ARM Microcontroller/Processor, RAM, On-board Flash Memory, USB ports, HDMI, Wi-Fi(802.11b/g/n),

                                                                         Reference & Important Links:


Introduction on ARM mbed IOT starter Kit:

1 ARM Mbed developer website

2 IBM developer Website

1 ARM mbed developer


Introduction on FRDM-K64F

3 Freescale

4 ARM mbed developer Webpage




Introduction on Mbed Application Shield

5 ARM mbed Developer Webpage



6 Mbed Online compiler

7 Kinetis Design Studio Integrated Development Environment (IDE)


6 Creating a program - Handbook | mbed

7 Kinetis Design Studio Integrated Development |Freescale

8 Windows Serial Drivers8 Windows serial configuration - Handbook | mbed


9 Mbed Firmware Upgrade

10 J-Link debugger


9 Firmware FRDM K64F - Handbook | mbed


Pin Out

11 FRDM-K64F

12 mbed application shield


11 frdm k64f pinnames -  | mbed

12 ARM mbed Application Shield Pin out - Cookbook | mbed


13 FRDM-K64F


13 Freescale Freedom Development Platform for Ki|Freescale


14 mbed


14 Homepage - Cookbook | mbed

Quickstart demo program
15 IBM IoT foundation


15 or

Helpful Links

16 J-link Firmware upgrade

17 ARM mbed IoT Starter Kit Recipes (Part 1)

18 ARM mbed IoT Starter Kit Recipes (Part 2)


16 Segger J-Link Firmware for OpenSDAv2 | MCU on Eclipse