Skip navigation
Currently Being Moderated

Review : OpenSDA Debug Interface embedded in the Freescale Freedom Development Platform

VERSION 11  Click to view document history
Created on: Sep 13, 2012 5:20 PM by Greg C - Last Modified:  Mar 12, 2013 12:37 PM by Greg C

1. Overview

 

OpenSDA is an open-standard serial and debug adapter. OpenSDA bridges serial and debug communications between a USB host and an embedded target processor. The hardware circuit is based on a Freescale Kinetis K20 family microcontroller (MCU) with 128 KB of embedded flash and an integrated USB controller. OpenSDA features a mass storage device bootloader offering a quick and easy mechanism for loading applications such as flash programmers, run-control debug interfaces, serial to USB converters, and more.

 

 

Sans titre 1.jpg

                                                                                                                                          Open-standard Serial Debug Adapter

                                      • Supports SWD and JTAG debug protocols
                                      • UART serial interface for virtual serial port
                                      • Mass-storage bootloader used to load new applications into the OpenSDA

 

 

 

2. OpenSDA Hardware

 

OpenSDA is controlled by a Kinetis K20 MCU built on the ARM® Cortex™-M4 core. The Kinetis K20 includes an integrated USB controller and can operate at clock rates up to 50MHz. The OpenSDA circuit includes, at a minimum, a status LED and a pushbutton. The pushbutton asserts the Reset signal to the target processor (e.g. a microcontroller, digital signal controller, or a microprocessor) and can also be used to put OpenSDA into Bootloader mode. Signal connections are available for a UART serial channel. SPI and GPIO signals provide an interface to either a JTAG or an SWD debug port on a target processor. The OpenSDA circuit is powered when plugged into a USB Host. In some designs, the OpenSDA can also control the power supply of the target processor.

 

 

 

3. OpenSDA Software

 

OpenSDA software includes a flash-resident USB mass-storage device (MSD) bootloader and a collection of applications. The MSD Bootloader is consistent across all implementations of OpenSDA, but the available applications may vary from one hardware system to another. The following sections describe the MSD Bootloader and the applications which are generally supported by most Freescale evaluation hardware systems.

  

  

  

Sans titre 2.jpg

  

  

  

3.1. MSD Bootloader

 

The OpenSDA MSD Bootloader provides a simple interface for programming and loading OpenSDA Applications. The Bootloader appears as a removable drive with a volume label of “BOOTLOADER” in the Host operating system. An area of flash memory is reserved for one OpenSDA Application. Programming a new application is performed by copying an SDA file (s-record or raw binary file) to the BOOTLOADER drive, which implements a pseudo-FAT16 file system. Status information is provided through text files.

 

 

 

 

Sans titre 10.jpg

                                                                                                                                  Bootloader Overview:

                                    • Flash resident bootloader
                                    • Mass-storage USB device—no custom host drivers required
                                    • Simple copy/paste or drag/drop interface for programming an Application binary file into the flash of the OpenSDA MCU.
                                    • Bootloader runs if there is no Application installed or if forced by user (Reset button pressed during power on)  or host-side software (method depending on Application implementation)

    

      

    

3.2. Mass Storage Device Flash Programmer Application

 

The Mass-Storage Device (MSD) Flash Programmer offers a very easy and convenient flash programming utility for programming applications into the flash of the target processor. Like the MSD Bootloader, the MSD Flash Programming Application emulates a FAT16 file system and enumerates as a mass-storage device. It appears as a removable drive in the Host operating system with a volume label that matches the board name (e.g. FRDM-KL25Z). Raw binary and Motorola S-Record files that are copied to the drive are programmed directly into the target memory device. This is most often the flash of the target microcontroller, but it could also be another memory device such as a serial flash depending on the specific implementation.

The MSD Flash Programmer also provides a USB CDC device that bridges serial communications between the USB Host and a UART serial interface on the target processor. The drivers required to install this USB CDC device on a Windows operating system are embedded within the pseudo file system of the MSD Flash Programmer itself. Therefore, there are no drivers to install. If Windows fails to find the drivers on its own, simple point the OS to the newly installed removable drive and the drivers will be copied from there. Board and flash programming operation status are also available in text files on the removable drive. The same files that are accessible in the MSD Bootloader are also presented in the MSD Flash Programming Application.

 

 

Sans titre 6.jpg

                                                                                                                                   Application Overview:

                                    • Closed source proprietary application
                                    • Controls the serial and debug interfaces to the target MCU
                                    • Mass-storage USB device providing a simple target MCU flash programmer and a virtual serial port (composite device)

                                                                                                                                   Purpose:

                                    • Simple interface for serial communications and reprogramming of the target MCU. Perfect for quick programming of example applications.

                                                                                                                                   Note:

                                    • Can be used to program off-board devices within the same product family as the on-board Target MCU

  

  

  

3.3. P&E Debug Application

 

The P&E Debug Application is a run-control debug interface that controls the JTAG or SWD debug interface to the target controller/processor. It also provides a virtual serial port bridging a USB CDC device to a UART serial interface on the target device. Thus, it provides debugging and a serial port all in one application. Host drivers for this application are provided with several IDE toolchains such as CodeWarrior for Microcontrollers, IAR Embedded Workbench, and Keil MDK. Drivers are also available for download from P&E Microcomputer Systems at http://www.pemicro.com/opensda.

 

 

Sans titre 8.jpg                                                                                                                                   Application Overview:

                                    • Controls the serial and debug interfaces to the target MCU
                                    • P&E Multilink compatible debug interface with CDC virtual serial port (composite device)
                                    • Transparently supported by the P&E’s UNIT library
                                    • Supported by P&Es GDB Server
                                    • Supported by P&Es NGS layer (used by IAR, Keil, Atollic, etc.)

                                                                                                                                   Purpose:  

                                    • Traditional run-control debug interface that is supported by Freescale and Ecosystem Partner IDE tools.

  

  

  

3.4. CMSIS-DAP Debug Application

 

The CMSIS-DAP Debug Application is the interface firmware for a Debug Unit that connects the Debug Port to USB. Debuggers, which execute on a host computer, connect via USB to the Debug Unit and to the Device that runs the application software. The Debug Unit connects via JTAG or SW to the target Device. ARM Cortex processors provide the CoreSight Debug and Trace Unit. CMSIS-DAP supports target devices that contain one (Kinetis family) or more Cortex processors (Vybrid family).

 

 

 

Sans titre 3.bmp     Sans titre 2.jpg

  

                                                        Background

                • CMSIS (Cortex Microcontroller Software Interface Standard) enables consistent and simple software interfaces to the processor and the peripherals.
                • The CMSIS layer provides different components such as :
                  • CMSIS-CORE: provides a consistent interface to Cortex-M processors
                  • CMSIS-DSP: suite of common signal processing functions for use on Cortex-M processors
                  • CMSIS-RTOS: standardized API for RTOS (Real-Time Operating Systems)

  

                                                        CMSIS-DAP

                • Recently ARM introduced a new component in the CMSIS layer: CMSIS-DAP.
                • It provides a standardized way to access the Debug Access Port (DAP) of a target. CMSIS-DAP is implemented on an Interface Chip. This Interface Chip is connected over USB to a debugger running on a host computer and over JTAG (Joint Test Action Group) or SWD (Serial Wire Debug) to the target device. JTAG and SWD are two common ways to debug a target.

 

                                                       Why the need for CMSIS-DAP ?

                • There are several reasons concerning the introduction of CMSIS-DAP
                  • Before the CMSIS-DAP standard, a lot of USB wigglers was implementing their own protocol. With this configuration the host debugger has to be aware of all these different protocols and has to implement all of them. This introduced a lot of fragmentation. CMSIS-DAP provides a standardized interface for debuggers
                  • With the new CMSIS-DAP layer, the host debugger can debug targets over SWD or JTAG without the need to implement these two protocols
                  • The USB connection uses the HID driver class. As HID drivers are built-in in every Operating Systems, there is no need for a specific driver to be installed on the host computer

   
                                                       How CMSIS-DAP can be integrated ? 

                • As mentionned earlier, CMSIS-DAP has to be implemented on an Interface Chip.
                • This chip does the link between the host computer (over USB for instance) and the target that has to be debugged (over SWD or JTAG). 

  

                                                       Overview of the CMSIS-DAP standard

                • Packets are exchanged between the host debugger and the Interface Chip. Basically, the host sends a command and the debug unit sends the response of the command.
                • Different types of commands can be issued by the host
                  • General Commands: request information and control the debug unit. Also used to connect/disconnect the debug unit.
                  • Common SWD/JTAG commands: used for instance to set the clock speed
                  • SWD specific commands: configure the parameters for SWD mode
                  • JTAG specific commands: configure the JTAG device chain
                  • Transfer Commands: read/write CoreSight registers. These commands are independent of the transport (SWD or JTAG)

 

  

                                                       Conclusion

                • CMSIS-DAP provides a standardized interface for debuggers. It will probably become the de-facto stantard which debuggers and debug units will implement.
                • For instance Keil MDK-ARM and Coocox CoIDE, which combine an IDE, debugger and simulation environment already supports CMSIS-DAP.                                                                                                                               

   

 

 

If you need more information concerning the CMSIS-DAP Debug interface or just looking for a simple demo to start evaluate this feature of the Freescale Freedom Development Platform, please read this application note : Keil MTB (Micro Trace Buffer) with OpenSDA (CMSIS-DAP) using the Freedom KL25Z.

 

 

   

3.5. mbed Cloud Computing Application

 

 

The mbed Cloud Computing Application is the fastest way to evaluate and build some prototypes with the Freescale Freedom Development Platform.

The mbed platform provides free software libraries, hardware designs and online tools for professional rapid prototyping of products based on ARM microcontrollers.

The platform includes a standards-based C/C++ SDK, a microcontroller HDK and supported Freescale Freedom Development Boards, an online compiler and online developer collaboration tools. The mbed SDK rely on the CMSIS layer in order to have a common API across different processors.

The project is being developed by ARM, its Partners and the contributions of the global mbed Developer Community.

 

 

 

Sans titre 5.jpg

 

 

 

                                                  Here are some details of what you'll get for basing your next ARM microcontroller powered product on the mbed platform:

 

                                                               Software Development Kit (SDK)

                  • The mbed Software Development Kit (SDK) is an open source C/C++ microcontroller software platform relied upon by tens of thousands of developers to build projects fast. We've worried about creating and testing startup code, C runtime, libraries and peripheral APIs, so you can worry about coding the smarts of your next product.
                  • The SDK is licensed under the permissive Apache 2.0 licence, so you can use it in both commercial and personal projects with confidence.
                  • The mbed SDK has been designed to provide enough hardware abstraction to be intuitive and concise, yet powerful enough to build complex projects. It is built on the low-level ARM CMSIS APIs, allowing you to code down to the metal if needed. In addition to RTOS, USB and Networking libraries, a cookbook of hundreds of reusable peripheral and module libraries have been built on top of the SDK by the mbed Developer Community.

 
                                                               Free Online Development Tools

                  • The mbed Compiler is a powerful online IDE that is free for use with hardware implementing the mbed HDK, and tightly integrated with the mbed SDK and Developer Website. Under the hood, it relies on the industry standard ARM professional C/C++ compiler, pre-configured and tested to generate fast, efficient code without fuss.
                  • Login anywhere to get instant access to your development environment, on Windows, Mac, Linux. You can even work from tablets!
                  • Whilst the mbed Compiler provides you your own private workspace, it is also fully integrated with the mbed.org Developer Website so you can easily import libraries and examples. If you choose to, publishing your own code and collaborating with other mbed users is just a few clicks too. The mbed Compiler also supports full export to different toolchains, in case your project demands it as you go to production.

 
                                                               Hardware Development Kit (HDK)

                  • The mbed Hardware Development Kit (HDK) provides full microcontroller sub-system design files and firmware for building development boards and custom products that benefit from the native support of the mbed SDK and free mbed Online Compiler and mbed Developer Platform.
                  • The HDK specifies all support components and circuits including the mbed Onboard Interface design that provides simple USB drag-n-drop programming and CMSIS-DAP debug interface for the target microcontroller.
                  • Development boards that are already based on the HDK are the quickest way to get started with the mbed platform. We manufacture official mbed Microcontroller modules that are specifically optimised for flexible rapid prototyping, and are available from distributors worldwide. Our partners are now also creating mbed-enabled hardware such as ultra low-cost ARM evaluation boards in the popular Arduino form-factor.

 

                                                               Worldwide Developer Community

                  • Using mbed means a huge shared context with other developers, and that means when you have a question, there is less pre-amble, less explanation and less time reproducing issues, and more time getting answers. We're proud that this has helped us grow an active and friendly community of skilled developers that are collectively helping get prototypes made even faster.
                  • But where it really gets interesting is with code. Our developers are sharing thousands of open source repositories and building an extensive cookbook of recipes that you can reuse to build your products.
                  • We've also made contributing back is easy; you can publish a library to mbed.org with a few clicks in the IDE, and let others build on your hard work. In fact, this is how some of our users end up collaborating on hard problems, and even getting contract work.

 

  

  

If you need more information concerning the mbed platform or just looking for a simple demo to start evaluate this feature of the Freescale Freedom Development Platform, please read the mbed FRDM KL25Z Getting Started Guide.

 

 

 

    

If you need more information concerning the Freescale Freedom Development Platform or just looking for a simple demo to start evaluate the new Kinetis-L family, please visit the Dedicated Area on Element14 Community for the Freescale Freedom Development Platform.

Attributes

Average User Rating
(1 rating)
My Rating:

Rating Saved!

Write a review

  • Comment on your rating

Comments (0)
Add a comment Leave some feedback about this document.

There are no comments on this document.

Bookmarked By (1)

  • No public bookmarks exist for this content.
Close