Image

What’s the Difference Between a BSP and SDK?

July 1, 2015
On the surface, a board support package (BSP) and a software development kit (SDK) seem to be interchangeable, but several key attributes separate the two.

When embedded developers obtain a board or chip, it’s typically tied to a board support package (BSP) or software development kit (SDK). So what’s the difference between the two? Not all that much upon first glance. That’s because they often contain the same types of items, including documentation about the target platform, run-time support with a matching application programming interface (API), and possibly some support libraries and tools.

Generally, the main difference is that a BSP targets hardware and usually a specific board or family of boards, while an SDK can target hardware or software.

The BSP provides a way to access and configure the hardware using an API supplied with the BSP. These days, this comprises a set of C or C++ header files. A BSP for a microcontroller will often be designed to support “bare metal” applications or those that run without a standard operating system. The application may utilize interrupts and implement its own operating system.

For an SDK, in terms of software, the target may be an API, middleware, or an operating system. Of course, middleware and operating systems can have many APIs for different functional areas. An SDK that targets hardware often includes or supports one or more BSPs.

An SDK often will be built on top of standard interfaces or loaders like a BIOS or a UEFI system (see “Bye Bye BIOS. Hello UEFI”). The latest crop of PC-compatible motherboards use UEFI as well as many embedded motherboards and modules.

Generally, SDKs include more library support than a BSP. A BSP’s libraries more or less support the target, many times providing hooks into hardware accelerators such as encryption support. SDK libraries often feature algorithms not tied to the underlying hardware; for example, an SDK might include an FFT or sorting algorithm.

Another difference between the two is that SDKs will likely hide the underlying hardware, while a BSP exposes it. On top of that, SDKs sometimes get hidden behind new names like Embedded Development Kit (EDK) or similar variations.

In any case, a BSP or SDK is designed to reduce the time to get an application to market. 

About the Author

William G. Wong | Senior Content Director - Electronic Design and Microwaves & RF

I am Editor of Electronic Design focusing on embedded, software, and systems. As Senior Content Director, I also manage Microwaves & RF and I work with a great team of editors to provide engineers, programmers, developers and technical managers with interesting and useful articles and videos on a regular basis. Check out our free newsletters to see the latest content.

You can send press releases for new products for possible coverage on the website. I am also interested in receiving contributed articles for publishing on our website. Use our template and send to me along with a signed release form. 

Check out my blog, AltEmbedded on Electronic Design, as well as his latest articles on this site that are listed below. 

You can visit my social media via these links:

I earned a Bachelor of Electrical Engineering at the Georgia Institute of Technology and a Masters in Computer Science from Rutgers University. I still do a bit of programming using everything from C and C++ to Rust and Ada/SPARK. I do a bit of PHP programming for Drupal websites. I have posted a few Drupal modules.  

I still get a hand on software and electronic hardware. Some of this can be found on our Kit Close-Up video series. You can also see me on many of our TechXchange Talk videos. I am interested in a range of projects from robotics to artificial intelligence. 

Sponsored Recommendations

Comments

To join the conversation, and become an exclusive member of Electronic Design, create an account today!