Embedded Linux Conference Europe 2012

Embedded Linux Conference Europe 2012

Embedded Linux Conference Europe 2012 Sascha Hauer <[email protected]> Slide 1 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Agenda ● Tour through barebox ● Devicetree ● Multiplatform Bootloader ● barebox live demo Slide 2 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Tour through barebox ● Basic hardware initialization (SDRAM, clocks) ● Startup ● User Interface ● Start operating system ● Update ● Initial hardware bringup Slide 3 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 What does a bootloader need? Motivation - A bootloader should: ● be configurable ● be scriptable ● have a maintainable codebase ● have a driver model ● have real filesystem support ● not require people to know memory layout of a board ● be able to see every type of device as a file ● be able to start itself second stage Slide 4 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 barebox Busybox – The swiss army knife of embedded Linux Barebox – The swiss army knife for bare metal Slide 5 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 barebox barebox ● Started as U-Boot-v2 in July 2007 as a fork of U-Boot- 1.2.0 ● Renamed to barebox in December 2009 ● Evolves with ~140 commits / month ● - 92 boards ● - 8 architectures: ARM, Blackfin, Mips, Nios2, Openrisc, sandbox, X86 Slide 6 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Kconfig From basic SRAM config to full blown barebox – without touching code Slide 7 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Lowlevel init ● Setup the minimum requirements for barebox, not more ● Usually this means setting up SDRAM ● Ideally this would be the only board specific code ● Often written in assembly ● Barebox allows to write this code in C ● Optionally reset vector is under board control Slide 8 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Initcalls / driver model ● Barebox starts up using initcalls ● Board / SoC code registers devices ● Drivers probe based on devices found ● Heavily inspired by Linux Kernel driver model Slide 9 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 User interface Autoboot based on ● Informations from the SoC ● Console ● Menu ● Input devices ● LEDs Slide 10 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Menu support ● The menu can be instantiated from C or the commandline ● Allows executing arbitrary commands / scripts from menu items shell for experts, menu for convenience and occasional user Slide 11 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Loading Kernel From: ● TFTP, NFS ● (SPI) NOR flash, NAND flash ● SD/MMC ● UART ● USB Mass Storage ● FAT ● UBI All accessible as files Slide 12 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Starting Kernel barebox has a single boot command supporting ● zImages ● uImages ● barebox images ● devicetrees ● initrd files Slide 13 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Booting: fast ● ARM needs the MMU for datachaches, so barebox has generic MMU support for ARM ● The block layer has a LRU caching mechanism ● Autoboot timeout 0 still allows interruption Slide 14 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Updating Update strategies are project specific Scripting 'cp' command Building blocks for a project specific update conept Slide 15 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Hardware bringup Memcpy, memset, memcmp md Tab completion gpio_* magicvar mw iomem clk_dump filetype time devinfo clk_* Slide 16 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 barebox in 128Kb ● Freescale i.MX51 babbage - Networking support with tftp, dhcp, ping and dns - MMC/SD read/write support - FAT read/write support - Stack unwinding - Kallsyms - Almost full command set ● Phytec i.MX27 pcm038 - Networking support with tftp, nfs, dhcp, ping and dns - CFI NOR flash support - NAND flash support - Stack unwinding - Almost full command set Slide 17 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 barebox in 128Kb ● TI OMAP3 BeagleBoard - Networking support with tftp, ping dhcp, dns - USB support - USB network adapter support - NAND support - MMC/SD support - FAT read/write support - Almost full command set ● TI OMAP3 BeagleBoard xload config (33k) - NAND support (ro) - MMC/SD (ro) - FAT support - Noninteractive build Slide 18 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree support ● Unlike PC hardware SoCs are not discoverable Before the devicetree migration the hardware description was in C-Code inside the Kernel. That's what barebox still does ● Using devicetrees allows separation of the hardware description from the code ● Using devicetrees is becoming the standard way to start the kernel on ARM, PowerPC and other architectures Slide 19 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree The devicetree has to be written for every new board anyway - Let's use it for barebox aswell Slide 20 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree Binary blob (dtb) Slide 21 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree Unflatten tree Slide 22 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree now with devicetree Common code devicetree Board specific code startup code Slide 23 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Devicetree ● Separate code from board data ● Make binaries more universally usable ● By using devicetrees we can reuse the same Kernel binary for different hardware variants Slide 24 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Towards a multiarch bootloader now with devicetree multiarch Common code devicetree Board specific code startup code Slide 25 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Multiplatform multiarch Barebox update handler Boot device Slide 26 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Multiplatform (replace barebox with kernel) Linux Common code startup code devicetree Slide 27 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Livedemo Now for the demo... Slide 28 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Thank you very much website: http://www.barebox.org IRC: #barebox Project Mailing List: http://lists.infradead.org/mailman/listinfo/barebox Sascha Hauer <[email protected]> Slide 29 - © Pengutronix - http://www.pengutronix.de - 08.11.2012 Automount support ● Allows to automatically detect and mount devices when first accessed ● Allows to probe devices only when they are needed First, add automountpoint: # automount /mnt/tftp 'ifup eth0 && \ mount -t tftp \ $eth0.serverip /mnt/tftp' Then, simply access files, barebox will mount in the background: # cp /mnt/tftp/zImage /zImage Slide 30 - © Pengutronix - http://www.pengutronix.de - 08.11.2012.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    30 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us