U-boot provides a multistage boot process that initializes the CPU and board resources incrementally at each stage. It begins execution on the CPU in a limited environment and hands off to subsequent stages that gain access to more resources like memory and devices. U-boot supports booting an operating system image from storage like SSD or over the network and offers features like secure boot and hypervisor support.
U-Boot, a boot loader for Embedded boards based on PowerPC, ARM, MIPS and several other processors, which can be installed in a boot ROM and used to initialize and test the hardware or to download and run application
code.
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
This presentation is about U-Boot: the most popular open source, primary boot loader used in embedded devices, as well as it's mechanisms and features.
The respective talk was held by Sam Protsenko (Software Engineer, Consultant, GlobalLogic) at GlobalLogic Mykolaiv Embedded TechTalk #1 on May 25, 2018.
U-Boot, a boot loader for Embedded boards based on PowerPC, ARM, MIPS and several other processors, which can be installed in a boot ROM and used to initialize and test the hardware or to download and run application
code.
Have a quick overview of most of the embedded linux components and their details. How ti build Embedded Linux Hardware & Software, and developing Embedded Products
The U-Boot is an "Universal Bootloader" ("Das U-Boot") is a monitor program that is under GPL. This production quality boot-loader is used as default boot loader by several board vendors. It is easily portable and easy to port and to debug by supporting PPC, ARM, MIPS, x86,m68k, NIOS, Microblaze architectures. Here is a presentation that introduces U-Boot.
This presentation is about U-Boot: the most popular open source, primary boot loader used in embedded devices, as well as it's mechanisms and features.
The respective talk was held by Sam Protsenko (Software Engineer, Consultant, GlobalLogic) at GlobalLogic Mykolaiv Embedded TechTalk #1 on May 25, 2018.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
It describes the MMC storage device driver functionality in Linux Kernel and it's role. It explains different type of storage devices available and how they are handled from MMC driver point of view. It describes eMMC (internal storage) device and SD (external storage) devices in details and SD protocol used for communicating with these devices in Linux.
Often called as the Swiss Army Knife of Embedded Linux, BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. It is written with size-optimization
and limited resources in mind. Here is a presentation that details about BusyBox.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
An unique module combining various previous modules you have learnt by combing Linux administration, Hardware knowledge, Linux as OS, C/Computer programming areas. This is a complete module on Embedded OS, as of now no books are written on this with such practical aspects. Here is a consolidated material to get real hands-on perspective about building custom Embedded Linux distribution in ARM.
A tutorial for beginners who are curious to learn about the Linux boot process. If you have any more doubts, you can contact me through my email given in the slide, or through my blog: mastro77.blogspot.in
This presentation provides an brief introduction about the Embedded LInux using NXP I.MX6 Processor. This gives information about embedded linux architecture & components.
U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues start with overview, features, efforts created by community and future plans.
The U-Boot project has evolved in the time span of over 17 years and so as its complexity and its uses. This has made it a daunting task in getting started with its development and uses. This talk will address all these issues and share development efforts created by the U-Boot community.
In this talk Jagan Teki(Maintainer for Allwinner SoC, SPI, SPI FLASH Subsystems) will introduce U-Boot from scratch with a brief overview of U-Boot history, U-Boot Proper, SPL, TPL, Build process and Startup sequence. He will talk about other preliminaries such as Image booting, Falcon Mode, Secure Boot and U-Boot features like device tree, device overlays, driver model and DFU, etc.
Once giving enough introduction, he will also talk about steps to port U-Boot to new hardware with a demo, along with U-Boot testing process. Finally, he will address and review ongoing development work, issues and future development regarding U-Boot.
Linux Kernel Booting Process (1) - For NLKBshimosawa
Describes the bootstrapping part in Linux and some related technologies.
This is the part one of the slides, and the succeeding slides will contain the errata for this slide.
It describes the MMC storage device driver functionality in Linux Kernel and it's role. It explains different type of storage devices available and how they are handled from MMC driver point of view. It describes eMMC (internal storage) device and SD (external storage) devices in details and SD protocol used for communicating with these devices in Linux.
Often called as the Swiss Army Knife of Embedded Linux, BusyBox combines tiny versions of many common UNIX utilities into a single small executable. It provides replacements for most of the utilities you usually find in GNU fileutils, shellutils, etc. It is written with size-optimization
and limited resources in mind. Here is a presentation that details about BusyBox.
This course gets you started with writing device drivers in Linux by providing real time hardware exposure. Equip you with real-time tools, debugging techniques and industry usage in a hands-on manner. Dedicated hardware by Emertxe's device driver learning kit. Special focus on character and USB device drivers.
An unique module combining various previous modules you have learnt by combing Linux administration, Hardware knowledge, Linux as OS, C/Computer programming areas. This is a complete module on Embedded OS, as of now no books are written on this with such practical aspects. Here is a consolidated material to get real hands-on perspective about building custom Embedded Linux distribution in ARM.
A tutorial for beginners who are curious to learn about the Linux boot process. If you have any more doubts, you can contact me through my email given in the slide, or through my blog: mastro77.blogspot.in
This presentation provides an brief introduction about the Embedded LInux using NXP I.MX6 Processor. This gives information about embedded linux architecture & components.
Introduction to Linux Kernel by Quontra SolutionsQUONTRASOLUTIONS
Course Duration: 30-35 hours Training + Assignments + Actual Project Based Case Studies
Training Materials: All attendees will receive,
Assignment after each module, Video recording of every session
Notes and study material for examples covered.
Access to the Training Blog & Repository of Materials
Pre-requisites:
Basic Computer Skills and knowledge of IT.
Training Highlights
* Focus on Hands on training.
* 30 hours of Assignments, Live Case Studies.
* Video Recordings of sessions provided.
* One Problem Statement discussed across the whole training program.
* Resume prep, Interview Questions provided.
WEBSITE: www.QuontraSolutions.com
Contact Info: Phone +1 404-900-9988(or) Email - info@quontrasolutions.com
Embedded Fest 2019. Руслан Биловол. Linux Boot: The Big Bang theoryEmbeddedFest
Many Linux developers and users know that Bootloader boots Linux Kernel which starts Userspace.
But what is behind that?
Linux Boot process is very similar to the Big Bang which happened in our world: from singularity to the whole beautiful Universe of running Linux processes. What do you think is a black hole equivalent in the Linux? Come to hear about all of that from an engineer who worked on a new processors and boards bringup, Linux boot process modifications and did boot time optimization many times.
Linux Kernel Platform Development: Challenges and InsightsGlobalLogic Ukraine
This presentation is about the main tasks which Linux kernel platform engineers take care of. The talk includes real-life cases which help understand the role of respective specialists and might be helpful to those who consider such change in their careers.
The talk was delivered by Sam Protsenko (Software Engineer, Consultant, GlobalLogic) at GlobalLogic Embedded Career Day #2 on February 10, 2018.
More about GlobalLogic Embedded Career Day #2: https://www.globallogic.com/ua/events/globallogic-kyiv-embedded-career-day-2-materials
Identifying and Supporting 'X-compatible' Hardware BlocksChen-Yu Tsai
An SoC is comprised of multiple IP blocks from various vendors. In some cases the sources or models of these hardware blocks are not documented or marketed by the SoC vendor. Nevertheless, there are only a handful of IP vendors for a given application space. Chances are high that these undocumented blocks are compatible with or even the same as those already supported in the Linux kernel.
This talk goes through the various "X-compatible" hardware blocks we have encountered while adding mainline support for Allwinner SoCs, how we integrated support for these into existing drivers, and hopefully, how to spot them in the future. The hardware ranges from the simplest of UARTs to complicated register-obfuscated HDMI and Ethernet controllers.
I have collected all the necessary information about various hardware blocks of Nvidia Tegra K1 processor and put them together. It would be helpful for those who are/going to work on it by giving the details in a very concise fashion.
This presentations introduces some common protocols used in electronics, and how to sniff/speak them. Then a bit about USB, and some interesting hacks with these things.
Then a bit about openwrt and router hacking.
3. U-boot
• Features
– initialize: Bootstrap CPU, serial console, boot string`
– hardware: detection, test and flash EEPROM
– loading kernel image from: network, SSD, EEPROM
– support secure boot and loading trust software
– loading hypervisor (TYPE1/ TYPE2)
• Supports
– hardware: different architecture, CPU, boards and devices
– software: different file format, flash based file system and
fat file system
4. U-boot history
• 1999: PPCBoot start from MPC860-fads board, PPC CPU
• 2000: network support
• 2002: merge with armboot (support 106 boards PPC/ ARM)
• 2002: x86 support
• 2003: MIP32 MIPS64 support
• 2003: NIOS support
• today: u-boot 1.1.2 , support > 216 boards
5. Boot code initialize these
• initialize components on CPU
– disable: icache, dcache, TLB, MMU
– setting UART
• initialize software context
– Interrupt vector of all mode
– Stack pointer point to iRAM or RAM
• initialize components on board
– System clock controller
– DDR memory controller
• Relocate codes
– move code to proper location (iRAM or RAM) and jump to
it
6. Initial state, few resource with
limitation
CPU
boot
software
Gained resource
software context
UART
7. After initialize devices/ controller on
board
CPU
boot
software
RAM
flash
ether
Gained resource
software context
OS1
OS binary
UART
8. Multi stages then U-boot
• Multistage boot loader
– BL0, BL1, BL2, u-boot
• Why multi stages?
– CPU comes up with bare resource: CPU, iRAM and iROM only
– incremental initialize more resources on every stage
• CPU components (caches, TLB, MMU)
• execution environment: stack, exception vector, interrupt controller
• devices: sys clock, memory, serial IO, network, RTC,
– every stage runs on different text base
• BL0: runs on iROM (vendor fused)
• BL1: runs on iRAM (vendor provided)
• BL2: runs on memory (u-boot SPL version)
• U-boot boot loader: runs on high memory (u-boot)
• uImage: runs on memory (a compressed kernel with de-compressor)
11. armv7/start.S
1) bl save_boot_params
2) set CPU to SVC32 mode
3) set exception table VBAR to _start
4) bl cpu_init_cp15
5) bl cpu_init_cr
6) setup stack to memory and call C function: _board_init_f
reset:
13. cpu_init_cp15 and cpu_init_cr
• cpu_init_cp15
– invalidate TLB, MMU, icache and dcache
• cpu_init_cr
– call smdk5420 board’s lowlevel_init.S
• use iRAM as stack
• read board boot switch and store flag in iRAM
• relocate code if needed
• check every reset switches on board is not set
• read boot string stored on board’s EEPROM
• initialize system clock (system_clock_init)
• initialize memory controller (mem_ctrl_init)
14. board_init_f (f:flash)
• Fill board information into global_data object
– board rate, clock rate, FDT data (hard coded)
– monitor size, ram size, ram base, memory bank size
• Reserve high memory to store
– hardware buffer: TLB, frame buffer, monitor
– software buffer: IRQ stack, heap, program stack and another copy of
global data object
• Call init_sequence function array
– serial_init, console_init, timer_init, disp_banner,
– env_init, dram_init (detect memory size)
• relocate code then call call board_init_r with param:
– pointer of stack
– pointer of copied global_data object
– pointer of heap
15. board_init_r (r: ram)
• Initialize devices and related libraries
– serial console, flash, MMC, ether net
• setup interrupt handlers and enable interrupt
• POST
• Command line main loop
16. ARM trusted boot
• Trust boot
– SOC vendor fuse PUK in BL0 and stored in ROM
– SOC vendor hold the private key that can sign BL1/ BL2
– Trust boot sequence
• CPU runs in secure mode, from BL0
• BL0 initialize bare hardware and verify BL1’s signaure with PUK
• BL1 or BL2 setup necessary protection in secure world, loading trust
software in secure world and perform world switch
• Some trust boot options
– Use OTP (One Time Programming) in SOC to store PUK
• If PUK > OTP memory, store hash of Puk in OTP and store Puk from
flash
– PUK may changed on next stage
17. Secondary CPU enter hyper mode
u-boot
Linux
uImage
decompressor
Primary CPU
DRAM
Secondary CPUs
arch init
….
smp_pen()
1. kick
2. Load and jump to decompressor
• wake up by CPU0
• Install hyper stubs by setting HTBAR
• enter SVC32
• run oridinary kernel SMP init
a) decompress done and jump
b) board init complete
c) SMP code kick Secondary CPU
Primary CPU in kernel Secondary CPU in kernel