When designing a new system, you might find yourself drawn to a new processor with features that can make a real difference in the final product.
Most semiconductor vendors will provide an evaluation board that you can use to evaluate whether or not you want to invest your time and money into that particular processor or processor family. These boards are also referred to as demonstration boards (a.k.a. “demo boards”) or System Development Kits (SDKs), depending upon how complex they are. An evaluation or demo board is usually enough to get to know what it’s like to boot up, program, and test a snippet of example code on the new processor. The SDK is typically more involved and might be part of a system that includes add-on modules, but there is no standard term for any of these. Any vendor can name their board an eval board, demo board or an SDK regardless of the completeness or complexity, so be sure to read the description or watch a video on the board or kit before you purchase it. The terms demo, eval, board, and kit are often interchangeable with no discernable difference in function or form.
Decades ago, vendors used to provide the chip as a free sample but it was up to the engineer to breadboard the device and bring it up themselves. Sometimes an EEPROM with boot-up code would be present, or sample code would be given in the documentation, but it was assumed that the engineer would be able to get an MCU chip up and running with little more than a datasheet. Increasing complexity in MCUs has created an increasing need for everything from preinstalled boot-up code to free development tools so an engineer can spend less time getting to the point where he or she can start coding.
The Out of Box Experience
The truth is that silicon is useless without software and vice versa. As processors and Systems-on-chip (SoCs) got more complex, vendors realized that they might sell more chips if they made their product easier to work with. The Out-of-Box-Experience (OOBE) became a focus so that users could get the evaluation board up and running within minutes of opening the box with crystal clear instructions, pre-programmed source code examples for simple actions like blinking an LED, and even free development tools to get the engineer started as soon as possible.
The Board Support Package
A Board Support Package (BSP) is used to start up and run the embedded target processor and is fundamental software for use with the evaluation board and its OOBE. The BSP does not include much more than what is needed to support a minimum number of peripherals on an eval board; only enough so that the user can at least demonstrate that the SoC peripherals work and that the SoC can be easily programmed to carry out the main features that the vendor advertises. A board support package is one of the first software packages that is developed for use with a particular chip or its evaluation board. The BSP has a boot-up program called the “bootloader” or a boot manager, and there’s a different BSP for different operating systems since the BSP contains drivers that enable the peripherals to communicate with the operating system. The BSP provides a file structure and will initialize several systems, including the processor, any communication buses, clocks, and memory, as well as start up the boot loader. The BSP may also initialize peripherals and set some environmental parameters for working with the embedded operating system (OS).
Semiconductor vendors today will often provide a Linux-based BSP with the eval kit hardware that includes a full suite of peripheral support, enabling all types of external ports that the SoC supports. Linux is popular because as open source, it is “free” and therefore somewhat agnostic in terms of showing favoritism between the various semiconductor OS partners. Therefore, using a Linux BSP avoids showing any favoritism between OS vendors, especially if the semiconductor vendor is maintaining a branch of the Linux kernel tree for its own processor architecture.
Another advantage to using Linux is that it requires no royalties for the vendor to pay if they include it in the eval kit, and Linux is open sourced so that anyone can subsequently alter it to fit their particular project needs. The BSP often includes the bootloader (e.g., Das U-Boot, Barebox, etc.), a Hardware Abstraction Layer (HAL) or an embedded OS (e.g., Linux, ThreadX, Integrity® RTOS, VxWorks), peripheral drivers, and various utilities.
Not all boards have BSPs, however. The Yocto Project has a BSP developer’s guide for making BSPs, and states that the BSP “…is concerned with the hardware-specific components only. At the end-distribution point, you can ship the BSP combined with a build system and other tools. However, it is important to maintain the distinction that these are separate components that happen to be combined in certain end products.”