SlideShare a Scribd company logo
1 of 8
Download to read offline
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




Guidelines for Choosing Bootloaders for Embedded Systems
     By Justin Treon
     Micron Software Engineer
     The selection of bootloaders for embedded systems has expanded since the late 1990s; not
     just in the number of bootloaders on the market, but also in the number of platforms and
     operating systems supported by each bootloader. This article stands as a guide to selecting
     a bootloader for embedded systems to aid in reaching time-to-market goals by reducing
     redundant system, debugging, and feature enablement. Emphasis in the article is placed on
     Linux-compatible bootloaders. However, since viable bootloaders can boot many operating
     systems–from the most basic real-time operating system (RTOS) 1 to a Linux server–this
     guide is relevant for any embedded system.

Bootloader Basics
     The bootloader combines the concept of bootstrapping 2 the system and loading the
     operating system’s kernel into memory with a loader, hence the name “bootloader.” The
     concept of using a small set of code to enable the system on which it runs is based on the
     old U.S. proverb, “to pull one’s self over a fence by one’s bootstraps,” which is an impossible
     task 3. The minimal set of bootstrapping code required to initialize the system is between 50
     to 150 lines of assembly, depending on the architecture and chipset. Despite the small code
     set, the size of modern bootloaders has swelled to more than 256KB to increase their
     portability across multiple boards and architectures. The feature set has also grown and
     bootloaders now include debugging features and the ability to select from multiple images to
     load into memory.
     A full-featured bootloader is not required to boot a system, but strictly speaking, no
     bootloader is required if the bootstrapping code is supplied. In systems with NOR4 Flash or
     other directly-accessible memory, such as phase change memory (PCM 5), the
     bootstrapping code may be added to the beginning of an image that can be accessed
     directly from the nonvolatile memory. To do this, the code must be executed in place (XIP 6)
     directly from the nonvolatile memory. Systems with memory that is not directly accessible
     (NAND 7 Flash) often requires additional bootstrapping code to drive the NAND controller,

     1
         An RTOS is applicable for real-time applications. It enables the execution of real-time events. Examples include Accelerated
         Technology’s Nucleus® and Wind River’s VxWorks®.
     2
         Bootstrapping is the initial boot sequence for minimum functionality, with emphasis on physical memory configurations,
         memory timings, and bus timings.
     3
         http://en.wikipedia.org/wiki/Bootstrapping
     4
         NOR is a nonvolatile storage technology consisting of the parallel alignment of the transistors. It uses hot electron injection for
         programming. In comparison to NAND, the architecture enables faster random reads and slower block writes. NOR is best
         used for code storage.
     5
         PCM is a bit-alterable nonvolatile storage media designed to replace NOR and NAND. Rather than storing a charge in a
         floating cell as in Flash, cells are heated by passage current to form a crystalline or amorphous state to store the bit value.
     6
         XIP code is directly accessed in nonvolatile memory without a shadowed or paged copy in RAM.
     7
         NAND is a nonvolatile storage technology consisting of the serial alignment of the transistors. It uses tunnel injection for
         programming. When compared to NOR, NAND architecture enables faster contiguous data writes due to a faster erase
         speed. Due to reliability, NAND is best used for user data storage.


PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




     handle bad blocks, and copy to RAM. Some systems implement this early stage of
     bootloading in a ROM built into the chipset.

Bootloader Misconceptions
     Most “bootloaders” commonly referenced in the market are not bootloaders at all, but are
     instead a second-stage bootloader used to load the operating system after a first-stage
     bootloader has already bootstrapped the system. The most notable examples of this are
     desktop bootloaders such as Microsoft Windows® Boot Manager (BOOTMGR) and the
     common GRUB loader for Linux. The traditional role of bootstrapping the system is carried
     out on a desktop by the system’s first-stage bootloader. Historically, this has been BIOS and
     its replacement EFI. The concept of using a basic, minimal bootloader to bootstrap the
     system and a full-featured second-stage bootloader is now prevalent in the embedded
     market as well.

Types of Bootloaders
     There are three categories of bootloaders, which are described in detail in the following
     sections:
            •    Pre-bootloader
            •    First-stage bootloader
            •    Second-stage bootloader

     Pre-Bootloaders and First-Stage Bootloaders
     The concept of using a multistage boot system in an embedded system may have originated
     from the need to have a small code segment to initialize the NAND controller of systems that
     solely use NAND for code storage. Without this code segment, the system is unable to
     access its nonvolatile storage. The controller initialization code is typically stored in ROM,
     either on or off the processor. Systems using directly-accessible memory, such as PCM,
     need not use a multistage bootloader since there is no need to load the image into main
     memory before it is executed. However, to secure all stages of the boot process to lock and
     protect the firmware and protect digital rights management, a small pre-bootloader in ROM
     may be used to check the signature of the bootloader or decrypt it, which enables the
     system to start in a secure state.
     Regardless of the origin, some chipset manufacturers provide first-stage bootloaders that
     exceed the feature set of initializing the NAND controller or performing security checksums
     of pre-bootloaders. For example, TI uses a first-stage bootloader called X-Loader 8 that not
     only bootstraps the system beyond that of the on-die ROM code, but also loads a splash
     screen. It can also re-flash the system from other media. However, this stripped-down
     bootloader at less than 64KB lacks a user interface and other features that are common to a
     full-featured bootloader. It is likely that the use of a first-stage and second-stage bootloader
     will increase over time as the number of features in second-stage bootloaders increases.
     However, there is little to no choice when selecting a first-stage bootloader since system
     manufacturers are limited to what is supported by the chipset manufacturer. Systems that do


     8
         Presentation by Nishanth Menon, “Linux without a bootloader,” August 25, 2010:
         https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.ppt


PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




     not have a first-stage bootloader only have a second-stage bootloader. Single-bootloader
     systems are arguably only those with directly-addressable nonvolatile memory.
     Second-Stage Bootloaders
     It may appear that the most important task of a second-stage bootloader is to load the
     kernel of the intended operating system. However, the primary function of the second-stage
     bootloader is to set up system timings and initialize any required peripherals, such as a
     serial port. A second-stage bootloader is often used in a system by itself without a pre-
     bootloader or first-stage bootloader because its functionality exceeds that of first-stage
     bootloaders. Loading the kernel into RAM or jumping directly to the start of the kernel for
     XIP kernel implementation is considered a trivial task compared to correctly setting up the
     RAM timings, Flash timings, system bus configurations, and any system settings that can
     dramatically change the system’s performance and stability. Modern second-stage
     bootloaders are sometimes referred to as boot monitors because they have a command-line
     interface for user interaction and debugging features that exceed bootstrapping the system
     and loading the kernel or operating system 9.
     The bootloader relationship in systems running NOR Flash is illustrated in Figure 1 and
     described in Table 1.




                                  Figure 1. Bootloader Relationship–Simple Case for NOR Flash


     Table 1. Bootloader Relationship–Simple Case for NOR Flash

                        Item                                                         Use
         Bootloader                             Performs all bootstrapping operations, all processor and memory
                                                timings, and basic MMU setup. It also enables peripherals (such
                                                as Ethernet and serial ports) and loads the kernel after performing
                                                architecture-specific kernel requirements.
         Operating System Kernel                Sets up memory management and configures any remaining
                                                peripherals.

     The bootloader relationship in systems running NAND Flash is illustrated in Figure 2 and
     described in Table 2.




                        Figure 2. Bootloader Relationship–Complex Case for NAND Flash with Security



     9
         Building Embedded Linux Systems first edition, page 247.


PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems



     Table 2. Bootloader Relationship–Complex Case for NAND Flash with Security

                      Item                                                           Use
      Pre-Bootloader                          Clears the pipeline, enables the NAND controller, copies the first-
                                              stage bootloader to on-die memory, and performs a security check
                                              of the first-stage bootloader.
      First-Stage Bootloader                  Configures RAM, copies the second-stage bootloader into RAM
                                              with improved NAND management, and performs second-stage
                                              bootloader security.
      Second-Stage Bootloader                 Completes all system timing changes (such as processor, bus,
                                              and memory), performs basic MMU setup, and enables any
                                              remaining required peripherals for the architecture. It also loads
                                              the kernel after performing architecture-specific kernel
                                              requirements and performs a security check on the kernel or
                                              kernel/boot file system image.
      Operating System Kernel                 Sets up memory management, configures any remaining
                                              peripherals, and runs the system in a secure state.

Using Pre-, First-Stage, and Second-Stage Bootloaders in the Same System
     A pre-bootloader, first-stage bootloader, and second-stage bootloader can be used in
     conjunction in a single system. However, depending on the complexity of the system, it may
     not be necessary to include all three. A general guideline for when to use each type of
     bootloader in your system is provided in Table 3:
     Table 3. Guide for When to Use Each Bootloader Type

            Category              Directly Addressable                  Not Directly                 Signed Bootloader
                                      (NOR, PCM)                        Addressable
                                                                      (such as NAND)
      Pre-Bootloader                                                            X                                X
      First-Stage                                                               X
                                                                                                                 X
      Second-Stage                             X                                X

Selecting an Embedded Bootloader
     Architecture support should be the primary concern when selecting a bootloader. Board
     support files and specialty features can be generated if the architecture is supported by your
     bootloader. When considering the importance of architecture support and debugging tools, it
     is surprising that among the numerous bootloaders on the market there are only three viable
     bootloaders of interest: Das U-Boot, BareBox, and RedBoot. Each of these may be used as
     a second-stage or sole bootloader in the system. Other full-featured proprietary and open
     source bootloaders lack the debugging features and driver support that are key to meeting
     time-to-market goals. There are quick-boot bootloaders on the market that boot the system
     faster than these, but by configuring out unused features before compiling the bootloaders
     described in Table 4, the boot-time is reasonable in most cases.




PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems



     Table 4. Embedded Bootloaders

          Bootloader                                                     Description
          Das U-Boot         This “universal bootloader” is arguably the most popular embedded bootloader with
                             the largest array of supported platforms and features. This loader currently supports
                                                                       ®                                         10
                             PPC, ARM, x86, MIPS, AVR32, Blackfin , Motorola 68000, and other architectures .
          BareBox            Originally referred to as “Das U-Boot version 2,” this software was renamed when it
                             no longer supported its predecessor’s legacy board files. This now independent
                             project is typically faster than U-Boot and enables drivers to be easily ported from
                             the Linux kernel to BareBox to reduce development time. This is recommended for
                             chipset manufacturers with new designs and system manufacturers when the
                             instruction set is fully supported. BareBox currently supports PPC, ARM, x86, MIPS,
                             Blackfin, and other architectures. However, it lacks support for Motorola 68000 and
                                                                     11
                             AVR32, which is found in Das U-Boot .
          RedBoot            This bootloader is based on the eCOS RTOS developed by RedHat, but places an
                             emphasis on debugging features. This was originally assumed to become the
                             industry standard, but has been overshadowed by Das U-Boot due to the array of
                             architectures it supports. This is an excellent bootloader for systems that need
                             extensive debugging capabilities or when eCOS support is required for the chipset or
                             reference platform. Before selecting this bootloader, it is advised that you verify
                             whether Das U-Boot or BareBox has better architecture support and related board
                             support with sufficient debugging features. RedBoot currently supports PPC, ARM,
                                                                  12
                             x86, MIPS, and other architectures .

     Just like when making operating system kernel changes, system manufactures should
     always ensure that chipset support features have been submitted and accepted by
     bootloader maintainers and are not a private version maintained solely by the chipset
     manufacturer. A likely consequence of not ensuring this is that the code may not be
     maintained or supported, and may potentially be bug-ridden. As those with Linux kernel
     experience already know, code that is not written well enough to be accepted into the main-
     line Linux kernel is typically not good enough to run on your embedded system. The same is
     true for chipset and board enablement for a given bootloader.

Booting a Linux Kernel without a Bootloader
     Using the build options, functionality can be stripped from a full-featured bootloader like Das
     U-Boot to decrease boot time and reduce the possibility of security loopholes. However,
     minimal boot time is not the design focus of bootloaders intended for command line user
     interaction. There are lightweight bootloaders available, such as Qi that are intended to
     quickly bootstrap the system and load the kernel. However, this has little advantage over
     abandoning the bootloader entirely. Systems running a basic or even a complex RTOS are
     commonly booted without the aid of a bootloader. The same sans-bootloader concept can




     10
          Das U-Boot source code tree: http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=tree;f=arch;hb=HEAD
     11
          BareBox source code repository: http://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD
     12
          eCOS supported hardware: http://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD


PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




     be applied to a Linux kernel by adding the bootstrap code directly to the kernel 13. In doing
     so, boot time is decreased and the system can be made more secure by removing any
     possible security loopholes that may have existed in the bootloader during the development
     phase. Since bootloaders can be stripped and optimized, the key feature to using a kernel
     as the bootloader is to remove the redundancy of generating and maintaining drivers for the
     kernel and the bootloader.
     The concept of using the kernel as the bootloader is furthered by Kexec 14, which is a utility
     that enables the kernel to load a new kernel over itself. In essence, it loads the new kernel
     and performs a high-speed warm reboot without the aid of a bootloader. This is ideal for
     systems that require a recovery mode, system updates, or development systems. A typical
     system may first boot into a basic recovery state. Then, after determining that a system
     upgrade or recovery is not needed, the system will boot into a more full-featured kernel and
     system image using Kexec. A small debug kernel and file system may load in place of a
     debugging bootloader like RedBoot, which has greater debugging capabilities, with the aid
     of tools like Busybox. This tool provides a small, feature-rich set of utilities for embedded
     systems.
     Since the use of this technique is not in the mainline Linux kernel, this is only recommended
     for those enabling a new chipset or developers who need the shortest possible boot time.
     However, those seeking a near-instant boot time should first examine the use of alternative
     compression algorithms, compiling options, and other boot time reduction techniques 15. In
     addition, for systems that do not have directly addressable memory, such as NAND-based
     systems, the minimal pre-bootloader that enabled the NAND controller may not be able to
     handle the task of loading a larger image that may contain bad blocks 16. The pre-bootloader
     implementation must be robust enough to load an image that is not continuous due to bad
     blocks and wear leveling. The kernel image must also contain the algorithm to decompress
     itself or be stored uncompressed. The modern Linux kernel supports images that
     decompress themselves.

Summary
     The bootloader selection criteria are quite different for chipset developers than for system
     designers. Chipset developers may need to implement support for an entirely new
     architecture, rather than simply add drivers for new peripherals. On the other hand, system
     designers are far more likely to need a solution with the most support for their given chipset
     or similar chipset and board, given the constraints of the design cycle. With this in mind, the
     bootloader choice is determined by the situation and not any hard and fast rules. Chipset
     manufactures may want to use a minimal, custom bootloader in ROM and skip the second-
     stage bootloader and boot directly into the kernel to reduce the number of supported

     13
          Presentation by Greg Ungerer, “Linux without a Bootloader,” Embedded Linux Conference 2010:
          http://elinux.org/images/7/7b/LinuxWithoutABootLoader.pdf, http://free-electrons.com/pub/video/2010/elc/elc2010-ungerer-
          linux-without-bootloader.ogv
     14
          Presentation by Magnus Damm, “Kexec Ready for Embedded Linux,” Embedded Linux Conference 2010:
          http://elinux.org/images/2/2f/ELC-2010-Damm-Kexec.pdf. Reboot Linux faster using Kexec:
          http://www.ibm.com/developerworks/linux/library/l-kexec.html
     15
      Boot time reduction techniques: http://elinux.org/Boot_Time
     16
          Presentation by Nishanth Menon, “Linux without a bootloader,” August 25, 2010:
          https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.ppt. ARM Linux kernel boot
          requirements: http://www.arm.linux.org.uk/developer/booting.php


PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




     software packages. However, if the new chipset is an expansion or variant of an existing
     family of processors, Das U-boot is recommend because of the set of tools and reference
     platforms. For companies making reference platforms, RedBoot is an excellent choice given
     that enabling the eCOS RTOS is effectively bundled with the port of the platform. For
     companies manufacturing a final solution, BareBox is recommended for its speed and driver
     portability, as long as the chipset is supported. Das U-Boot is an alternate second choice.




                                            Figure 3. Bootloader Selection Flowchart




PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
Software Spotlight
Guidelines for Choosing Bootloaders for Embedded Systems




About the Author
                                Software engineer Justin Treon brings over seven years of experience
                                in Flash and storage software to Micron. Specializing in embedded
                                Linux and proof-of-concept demonstrations, Justin played a key role in
                                the development of Micron’s Advanced XIP File System (AXFS) and
                                Technology for Memory Optimization (TMO). He also helped develop
                                the world’s first cell phone running Phase Change Memory (PCM).




PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8                                                                        Rev. A, 03/12
© 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the
property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.

More Related Content

Recently uploaded

Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfTechSoup
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designMIPLM
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONHumphrey A Beña
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4MiaBumagat1
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxAnupkumar Sharma
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptxSherlyMaeNeri
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfphamnguyenenglishnb
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...Postal Advocate Inc.
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)lakshayb543
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfErwinPantujan2
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfSpandanaRallapalli
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxPoojaSen20
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17Celine George
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptxiammrhaywood
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinojohnmickonozaleda
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSJoshuaGantuangco2
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxAshokKarra1
 

Recently uploaded (20)

Raw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptxRaw materials used in Herbal Cosmetics.pptx
Raw materials used in Herbal Cosmetics.pptx
 
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdfInclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
Inclusivity Essentials_ Creating Accessible Websites for Nonprofits .pdf
 
Keynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-designKeynote by Prof. Wurzer at Nordex about IP-design
Keynote by Prof. Wurzer at Nordex about IP-design
 
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptxYOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
YOUVE GOT EMAIL_FINALS_EL_DORADO_2024.pptx
 
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATIONTHEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
THEORIES OF ORGANIZATION-PUBLIC ADMINISTRATION
 
ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4ANG SEKTOR NG agrikultura.pptx QUARTER 4
ANG SEKTOR NG agrikultura.pptx QUARTER 4
 
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptxMULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
MULTIDISCIPLINRY NATURE OF THE ENVIRONMENTAL STUDIES.pptx
 
Judging the Relevance and worth of ideas part 2.pptx
Judging the Relevance  and worth of ideas part 2.pptxJudging the Relevance  and worth of ideas part 2.pptx
Judging the Relevance and worth of ideas part 2.pptx
 
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdfAMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
AMERICAN LANGUAGE HUB_Level2_Student'sBook_Answerkey.pdf
 
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
USPS® Forced Meter Migration - How to Know if Your Postage Meter Will Soon be...
 
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
Visit to a blind student's school🧑‍🦯🧑‍🦯(community medicine)
 
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdfVirtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
Virtual-Orientation-on-the-Administration-of-NATG12-NATG6-and-ELLNA.pdf
 
ACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdfACC 2024 Chronicles. Cardiology. Exam.pdf
ACC 2024 Chronicles. Cardiology. Exam.pdf
 
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptxCulture Uniformity or Diversity IN SOCIOLOGY.pptx
Culture Uniformity or Diversity IN SOCIOLOGY.pptx
 
How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17How to Add Barcode on PDF Report in Odoo 17
How to Add Barcode on PDF Report in Odoo 17
 
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptxAUDIENCE THEORY -CULTIVATION THEORY -  GERBNER.pptx
AUDIENCE THEORY -CULTIVATION THEORY - GERBNER.pptx
 
FILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipinoFILIPINO PSYCHology sikolohiyang pilipino
FILIPINO PSYCHology sikolohiyang pilipino
 
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
Model Call Girl in Tilak Nagar Delhi reach out to us at 🔝9953056974🔝
 
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTSGRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
GRADE 4 - SUMMATIVE TEST QUARTER 4 ALL SUBJECTS
 
Karra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptxKarra SKD Conference Presentation Revised.pptx
Karra SKD Conference Presentation Revised.pptx
 

Featured

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Applitools
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at WorkGetSmarter
 

Featured (20)

How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
Unlocking the Power of ChatGPT and AI in Testing - A Real-World Look, present...
 
12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work12 Ways to Increase Your Influence at Work
12 Ways to Increase Your Influence at Work
 
ChatGPT webinar slides
ChatGPT webinar slidesChatGPT webinar slides
ChatGPT webinar slides
 

Swnl bootloaders for_embedded_systems

  • 1. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems Guidelines for Choosing Bootloaders for Embedded Systems By Justin Treon Micron Software Engineer The selection of bootloaders for embedded systems has expanded since the late 1990s; not just in the number of bootloaders on the market, but also in the number of platforms and operating systems supported by each bootloader. This article stands as a guide to selecting a bootloader for embedded systems to aid in reaching time-to-market goals by reducing redundant system, debugging, and feature enablement. Emphasis in the article is placed on Linux-compatible bootloaders. However, since viable bootloaders can boot many operating systems–from the most basic real-time operating system (RTOS) 1 to a Linux server–this guide is relevant for any embedded system. Bootloader Basics The bootloader combines the concept of bootstrapping 2 the system and loading the operating system’s kernel into memory with a loader, hence the name “bootloader.” The concept of using a small set of code to enable the system on which it runs is based on the old U.S. proverb, “to pull one’s self over a fence by one’s bootstraps,” which is an impossible task 3. The minimal set of bootstrapping code required to initialize the system is between 50 to 150 lines of assembly, depending on the architecture and chipset. Despite the small code set, the size of modern bootloaders has swelled to more than 256KB to increase their portability across multiple boards and architectures. The feature set has also grown and bootloaders now include debugging features and the ability to select from multiple images to load into memory. A full-featured bootloader is not required to boot a system, but strictly speaking, no bootloader is required if the bootstrapping code is supplied. In systems with NOR4 Flash or other directly-accessible memory, such as phase change memory (PCM 5), the bootstrapping code may be added to the beginning of an image that can be accessed directly from the nonvolatile memory. To do this, the code must be executed in place (XIP 6) directly from the nonvolatile memory. Systems with memory that is not directly accessible (NAND 7 Flash) often requires additional bootstrapping code to drive the NAND controller, 1 An RTOS is applicable for real-time applications. It enables the execution of real-time events. Examples include Accelerated Technology’s Nucleus® and Wind River’s VxWorks®. 2 Bootstrapping is the initial boot sequence for minimum functionality, with emphasis on physical memory configurations, memory timings, and bus timings. 3 http://en.wikipedia.org/wiki/Bootstrapping 4 NOR is a nonvolatile storage technology consisting of the parallel alignment of the transistors. It uses hot electron injection for programming. In comparison to NAND, the architecture enables faster random reads and slower block writes. NOR is best used for code storage. 5 PCM is a bit-alterable nonvolatile storage media designed to replace NOR and NAND. Rather than storing a charge in a floating cell as in Flash, cells are heated by passage current to form a crystalline or amorphous state to store the bit value. 6 XIP code is directly accessed in nonvolatile memory without a shadowed or paged copy in RAM. 7 NAND is a nonvolatile storage technology consisting of the serial alignment of the transistors. It uses tunnel injection for programming. When compared to NOR, NAND architecture enables faster contiguous data writes due to a faster erase speed. Due to reliability, NAND is best used for user data storage. PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 2. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems handle bad blocks, and copy to RAM. Some systems implement this early stage of bootloading in a ROM built into the chipset. Bootloader Misconceptions Most “bootloaders” commonly referenced in the market are not bootloaders at all, but are instead a second-stage bootloader used to load the operating system after a first-stage bootloader has already bootstrapped the system. The most notable examples of this are desktop bootloaders such as Microsoft Windows® Boot Manager (BOOTMGR) and the common GRUB loader for Linux. The traditional role of bootstrapping the system is carried out on a desktop by the system’s first-stage bootloader. Historically, this has been BIOS and its replacement EFI. The concept of using a basic, minimal bootloader to bootstrap the system and a full-featured second-stage bootloader is now prevalent in the embedded market as well. Types of Bootloaders There are three categories of bootloaders, which are described in detail in the following sections: • Pre-bootloader • First-stage bootloader • Second-stage bootloader Pre-Bootloaders and First-Stage Bootloaders The concept of using a multistage boot system in an embedded system may have originated from the need to have a small code segment to initialize the NAND controller of systems that solely use NAND for code storage. Without this code segment, the system is unable to access its nonvolatile storage. The controller initialization code is typically stored in ROM, either on or off the processor. Systems using directly-accessible memory, such as PCM, need not use a multistage bootloader since there is no need to load the image into main memory before it is executed. However, to secure all stages of the boot process to lock and protect the firmware and protect digital rights management, a small pre-bootloader in ROM may be used to check the signature of the bootloader or decrypt it, which enables the system to start in a secure state. Regardless of the origin, some chipset manufacturers provide first-stage bootloaders that exceed the feature set of initializing the NAND controller or performing security checksums of pre-bootloaders. For example, TI uses a first-stage bootloader called X-Loader 8 that not only bootstraps the system beyond that of the on-die ROM code, but also loads a splash screen. It can also re-flash the system from other media. However, this stripped-down bootloader at less than 64KB lacks a user interface and other features that are common to a full-featured bootloader. It is likely that the use of a first-stage and second-stage bootloader will increase over time as the number of features in second-stage bootloaders increases. However, there is little to no choice when selecting a first-stage bootloader since system manufacturers are limited to what is supported by the chipset manufacturer. Systems that do 8 Presentation by Nishanth Menon, “Linux without a bootloader,” August 25, 2010: https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.ppt PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 3. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems not have a first-stage bootloader only have a second-stage bootloader. Single-bootloader systems are arguably only those with directly-addressable nonvolatile memory. Second-Stage Bootloaders It may appear that the most important task of a second-stage bootloader is to load the kernel of the intended operating system. However, the primary function of the second-stage bootloader is to set up system timings and initialize any required peripherals, such as a serial port. A second-stage bootloader is often used in a system by itself without a pre- bootloader or first-stage bootloader because its functionality exceeds that of first-stage bootloaders. Loading the kernel into RAM or jumping directly to the start of the kernel for XIP kernel implementation is considered a trivial task compared to correctly setting up the RAM timings, Flash timings, system bus configurations, and any system settings that can dramatically change the system’s performance and stability. Modern second-stage bootloaders are sometimes referred to as boot monitors because they have a command-line interface for user interaction and debugging features that exceed bootstrapping the system and loading the kernel or operating system 9. The bootloader relationship in systems running NOR Flash is illustrated in Figure 1 and described in Table 1. Figure 1. Bootloader Relationship–Simple Case for NOR Flash Table 1. Bootloader Relationship–Simple Case for NOR Flash Item Use Bootloader Performs all bootstrapping operations, all processor and memory timings, and basic MMU setup. It also enables peripherals (such as Ethernet and serial ports) and loads the kernel after performing architecture-specific kernel requirements. Operating System Kernel Sets up memory management and configures any remaining peripherals. The bootloader relationship in systems running NAND Flash is illustrated in Figure 2 and described in Table 2. Figure 2. Bootloader Relationship–Complex Case for NAND Flash with Security 9 Building Embedded Linux Systems first edition, page 247. PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 4. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems Table 2. Bootloader Relationship–Complex Case for NAND Flash with Security Item Use Pre-Bootloader Clears the pipeline, enables the NAND controller, copies the first- stage bootloader to on-die memory, and performs a security check of the first-stage bootloader. First-Stage Bootloader Configures RAM, copies the second-stage bootloader into RAM with improved NAND management, and performs second-stage bootloader security. Second-Stage Bootloader Completes all system timing changes (such as processor, bus, and memory), performs basic MMU setup, and enables any remaining required peripherals for the architecture. It also loads the kernel after performing architecture-specific kernel requirements and performs a security check on the kernel or kernel/boot file system image. Operating System Kernel Sets up memory management, configures any remaining peripherals, and runs the system in a secure state. Using Pre-, First-Stage, and Second-Stage Bootloaders in the Same System A pre-bootloader, first-stage bootloader, and second-stage bootloader can be used in conjunction in a single system. However, depending on the complexity of the system, it may not be necessary to include all three. A general guideline for when to use each type of bootloader in your system is provided in Table 3: Table 3. Guide for When to Use Each Bootloader Type Category Directly Addressable Not Directly Signed Bootloader (NOR, PCM) Addressable (such as NAND) Pre-Bootloader X X First-Stage X X Second-Stage X X Selecting an Embedded Bootloader Architecture support should be the primary concern when selecting a bootloader. Board support files and specialty features can be generated if the architecture is supported by your bootloader. When considering the importance of architecture support and debugging tools, it is surprising that among the numerous bootloaders on the market there are only three viable bootloaders of interest: Das U-Boot, BareBox, and RedBoot. Each of these may be used as a second-stage or sole bootloader in the system. Other full-featured proprietary and open source bootloaders lack the debugging features and driver support that are key to meeting time-to-market goals. There are quick-boot bootloaders on the market that boot the system faster than these, but by configuring out unused features before compiling the bootloaders described in Table 4, the boot-time is reasonable in most cases. PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 5. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems Table 4. Embedded Bootloaders Bootloader Description Das U-Boot This “universal bootloader” is arguably the most popular embedded bootloader with the largest array of supported platforms and features. This loader currently supports ® 10 PPC, ARM, x86, MIPS, AVR32, Blackfin , Motorola 68000, and other architectures . BareBox Originally referred to as “Das U-Boot version 2,” this software was renamed when it no longer supported its predecessor’s legacy board files. This now independent project is typically faster than U-Boot and enables drivers to be easily ported from the Linux kernel to BareBox to reduce development time. This is recommended for chipset manufacturers with new designs and system manufacturers when the instruction set is fully supported. BareBox currently supports PPC, ARM, x86, MIPS, Blackfin, and other architectures. However, it lacks support for Motorola 68000 and 11 AVR32, which is found in Das U-Boot . RedBoot This bootloader is based on the eCOS RTOS developed by RedHat, but places an emphasis on debugging features. This was originally assumed to become the industry standard, but has been overshadowed by Das U-Boot due to the array of architectures it supports. This is an excellent bootloader for systems that need extensive debugging capabilities or when eCOS support is required for the chipset or reference platform. Before selecting this bootloader, it is advised that you verify whether Das U-Boot or BareBox has better architecture support and related board support with sufficient debugging features. RedBoot currently supports PPC, ARM, 12 x86, MIPS, and other architectures . Just like when making operating system kernel changes, system manufactures should always ensure that chipset support features have been submitted and accepted by bootloader maintainers and are not a private version maintained solely by the chipset manufacturer. A likely consequence of not ensuring this is that the code may not be maintained or supported, and may potentially be bug-ridden. As those with Linux kernel experience already know, code that is not written well enough to be accepted into the main- line Linux kernel is typically not good enough to run on your embedded system. The same is true for chipset and board enablement for a given bootloader. Booting a Linux Kernel without a Bootloader Using the build options, functionality can be stripped from a full-featured bootloader like Das U-Boot to decrease boot time and reduce the possibility of security loopholes. However, minimal boot time is not the design focus of bootloaders intended for command line user interaction. There are lightweight bootloaders available, such as Qi that are intended to quickly bootstrap the system and load the kernel. However, this has little advantage over abandoning the bootloader entirely. Systems running a basic or even a complex RTOS are commonly booted without the aid of a bootloader. The same sans-bootloader concept can 10 Das U-Boot source code tree: http://git.denx.de/cgi-bin/gitweb.cgi?p=u-boot.git;a=tree;f=arch;hb=HEAD 11 BareBox source code repository: http://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD 12 eCOS supported hardware: http://git.pengutronix.de/?p=barebox.git;a=tree;f=arch;hb=HEAD PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 6. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems be applied to a Linux kernel by adding the bootstrap code directly to the kernel 13. In doing so, boot time is decreased and the system can be made more secure by removing any possible security loopholes that may have existed in the bootloader during the development phase. Since bootloaders can be stripped and optimized, the key feature to using a kernel as the bootloader is to remove the redundancy of generating and maintaining drivers for the kernel and the bootloader. The concept of using the kernel as the bootloader is furthered by Kexec 14, which is a utility that enables the kernel to load a new kernel over itself. In essence, it loads the new kernel and performs a high-speed warm reboot without the aid of a bootloader. This is ideal for systems that require a recovery mode, system updates, or development systems. A typical system may first boot into a basic recovery state. Then, after determining that a system upgrade or recovery is not needed, the system will boot into a more full-featured kernel and system image using Kexec. A small debug kernel and file system may load in place of a debugging bootloader like RedBoot, which has greater debugging capabilities, with the aid of tools like Busybox. This tool provides a small, feature-rich set of utilities for embedded systems. Since the use of this technique is not in the mainline Linux kernel, this is only recommended for those enabling a new chipset or developers who need the shortest possible boot time. However, those seeking a near-instant boot time should first examine the use of alternative compression algorithms, compiling options, and other boot time reduction techniques 15. In addition, for systems that do not have directly addressable memory, such as NAND-based systems, the minimal pre-bootloader that enabled the NAND controller may not be able to handle the task of loading a larger image that may contain bad blocks 16. The pre-bootloader implementation must be robust enough to load an image that is not continuous due to bad blocks and wear leveling. The kernel image must also contain the algorithm to decompress itself or be stored uncompressed. The modern Linux kernel supports images that decompress themselves. Summary The bootloader selection criteria are quite different for chipset developers than for system designers. Chipset developers may need to implement support for an entirely new architecture, rather than simply add drivers for new peripherals. On the other hand, system designers are far more likely to need a solution with the most support for their given chipset or similar chipset and board, given the constraints of the design cycle. With this in mind, the bootloader choice is determined by the situation and not any hard and fast rules. Chipset manufactures may want to use a minimal, custom bootloader in ROM and skip the second- stage bootloader and boot directly into the kernel to reduce the number of supported 13 Presentation by Greg Ungerer, “Linux without a Bootloader,” Embedded Linux Conference 2010: http://elinux.org/images/7/7b/LinuxWithoutABootLoader.pdf, http://free-electrons.com/pub/video/2010/elc/elc2010-ungerer- linux-without-bootloader.ogv 14 Presentation by Magnus Damm, “Kexec Ready for Embedded Linux,” Embedded Linux Conference 2010: http://elinux.org/images/2/2f/ELC-2010-Damm-Kexec.pdf. Reboot Linux faster using Kexec: http://www.ibm.com/developerworks/linux/library/l-kexec.html 15 Boot time reduction techniques: http://elinux.org/Boot_Time 16 Presentation by Nishanth Menon, “Linux without a bootloader,” August 25, 2010: https://gforge.ti.com/gf/download/docmanfileversion/229/3870/linux-without-a-bootloader.ppt. ARM Linux kernel boot requirements: http://www.arm.linux.org.uk/developer/booting.php PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 7. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems software packages. However, if the new chipset is an expansion or variant of an existing family of processors, Das U-boot is recommend because of the set of tools and reference platforms. For companies making reference platforms, RedBoot is an excellent choice given that enabling the eCOS RTOS is effectively bundled with the port of the platform. For companies manufacturing a final solution, BareBox is recommended for its speed and driver portability, as long as the chipset is supported. Das U-Boot is an alternate second choice. Figure 3. Bootloader Selection Flowchart PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.
  • 8. Software Spotlight Guidelines for Choosing Bootloaders for Embedded Systems About the Author Software engineer Justin Treon brings over seven years of experience in Flash and storage software to Micron. Specializing in embedded Linux and proof-of-concept demonstrations, Justin played a key role in the development of Micron’s Advanced XIP File System (AXFS) and Technology for Memory Optimization (TMO). He also helped develop the world’s first cell phone running Phase Change Memory (PCM). PDF: 09005aef84a29fd7/Source: 09005aef84a29fe8 Rev. A, 03/12 © 2012 Micron Technology, Inc. Micron and the Micron logo are trademarks of Micron Technology, Inc. All other trademarks are the property of their respective owners. All information is provided on an “AS IS” basis, without warranties of any kind.