Board Support Package for demo boards
When developing an embedded system, you will be attracted by new system on chip (SoC) with functionality that can significantly improve the overall performance of the final product. Board Support Package for Linux or other operating systems are here to help you taking the best of it.
Most chip manufacturers provide evaluation boards. You can use those to decide whether you want to spend your time and budget on that particular CPU. These boards can also be named demo boards, demo cards or system development kits (SDKs). Such boards usually allows you to get the sense of what it takes to boot, program and run a program.
The SDK (System Development Kit) is usually more complete. It may be part of a package that includes additional softwares but there are no absolute rule here in this mater.the definition changes from one manufacturer to another.Most chip manufacturers provide evaluation boards which you can use to decide whether you want to spend your time and budget on that particular CPU. These boards can also be named demo boards, demo cards or system development kits (SDKs). Such boards usually allows you to get the sense of what it takes to boot, program and run a sample program. The SDK is usually more complete and may be part of a package that includes additional softwares but there are no absolute rule here in this mater and the definition changes from one manufacturer to another.
MCU does include more and more functionalities, this is why this it is crutial to test not only the hardware but also the software that comes with it. The initial BSP from an evaluation board is often the first step for your custom board’s BSP.
The advantages of a Linux based BSP
A Board Support Package (BSP) is a collection of software used to boot and run the embedded system. It is the essential software needed to work with a board. With a proper BSP all you need to do is boot the system and start developping. For demonstration boards, it handles the minimal set of peripherals needed so user can ensure they can leverage the SoC main features and use the components on the board. A BSP is often the first software developed to be used in conjunction with a particular chip or its evaluation card.
The BSP inlcudes, low level boot programs (also know as first stage bootloader) a boot program or “bootloader” (usually the second stage of the boot process), an operating system and the compatible drivers for this specific OS. As drivers are specific to a given operating system, if multiple operating system (e.g., Linux, Zephyr, FreeRTOS, VxWorks, ThreadX) are supported, manufacturers will provide multiple BSP. It will initialize all the internal SoC components, clocks, communication buses, the DDR, the Flash memory and so on. Then it sometimes provides a root filesystem ( also called Rootfs, the file structure needed by an OS to work) and might even include a minimal set of softwares needed for communication or user interactions.
Nowadays, semi-conductor manufacturers often deliver a Linux-based BSP with an evaluation board that contains the complete hardware support for the board. Linux is really popular because it is “free as in free speech” and thus is agnostic between semiconductor providers. Often, semi-conductor vendor maintains a branch of the Linux kernel tree with all the low level support required for they SoC. This is great as it allows you to switch quite easily from one manufacturer to an other as long as you keep Linux a the main embedded operating system (OS).
Create a custom Linux Board Support Package
As Linux is open-source, no one has to pay any fee to use it, therefor it is free to build a custom BSP based on an existing one. And this is where things become great: you can start developing your embedded software on an evaluation board, while designing your own board, then customize your own BPS and run your embedded software with a few to no modifications. Furthermore, there are device drivers for almost any components you will find on the market, it will ease your BSP development, and drasticly reduce your time to market.
Things becomes even greater if all the specific code and drivers for a given CPU are included within the official Linux sources tree. It often means that the code has been tested extensively, that there are many users, that updates will not depend on the good will of a given manufacturing. Instead you will benefit from all the hard work continuously done by the community.
The Cherry on top of the embedded Linux cake is the ecosystem: You will have access to thousands of libraries and open-source software to create your own custom applications. You can use use any language so it is easier to find developers.