The World Leader in High Performance Signal Processing Solutions Das U-Boot: Blackfin Guts.

Slides:



Advertisements
Similar presentations
Booting the TS-7300 boards VHDL and C. Overview After looking at the general approach to booting machines (generally PCs) we will now look at the TS-7300.
Advertisements

PC bootup Presented by: Rahul Garg (2003CS10183) Rajat Sahni (2003CS10184) Varun Gulshan(2003CS10191)
Program Development Tools The GNU (GNU’s Not Unix) Toolchain The GNU toolchain has played a vital role in the development of the Linux kernel, BSD, and.
Net+OS Initialization Initialization Sequence Initialization Routine Roles ROM Image Compression/Decompression.
Genesis: from raw hardware to processes System booting sequence: how does a machine come into life.
U-Boot and Linux Kernel Debug using CCSv5
Basic Input Output System
Boot Issues Processor comparison TigerSHARC multi-processor system Blackfin single-core.
Contiki A Lightweight and Flexible Operating System for Tiny Networked Sensors Presented by: Jeremy Schiff.
IO Controller Module Arbitrates IO from the CCP Physically separable from CCP –Can be used as independent data logger or used in future projects. Implemented.
System initialisation
Lecture 7 Lecture 7: Hardware/Software Systems on the XUP Board ECE 412: Microcomputer Laboratory.
Software Development and Software Loading in Embedded Systems.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Prardiva Mangilipally
FreeBSD/arm on the Atmel AT91RM9200 Warner Losh Timing Solutions, Inc BSDcan 2006 May 12, 2006 Experiences.
History 8xxROM by Magnus Damm PPCBoot (1999) – v (2000) U−Boot−0.1.0 (2002) extended functionality, new architectures Das U-Boot.
Programming & Development of Mobile & Embedded Systems Lin Zhong ELEC424, Fall 2010.
© 2004 Cisco Systems, Inc. All rights reserved. Managing Your Network Environment Managing Router Startup and Configuration INTRO v2.0—9-1.
Cortex-M3 Debugging System
Shell and Flashing Images Commands and upgrades. RS-232 Driver chip – ST3232C Driver chip is ST3232C Provides electrical interface between UART port and.
COMPUTER SYSTEM LABORATORY Lab4 - Bootloader. Lab 4 Experimental Goal Learn how to build U-Boot bootloader for PXA /10/8/ 142.
U-Boot Debug using CCSv5 In this session we will cover fundamentals necessary to use CCSv5 and a JTAG to debug a TI SDK-based U-Boot on an EVM platform.
Chapter 3.1:Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access.
Exception and Interrupt Handling
hardware and operating systems basics.
Computer Maintenance Unit Subtitle: Basic Input/Output System (BIOS) Excerpted from 1 Copyright © Texas Education Agency, All.
AT91RM9200 Boot strategies This training module describes the boot strategies on the AT91RM9200 including the internal Boot ROM and the U-Boot program.
LPC2148 Programming Using BLUEBOARD
Enabling the ARM Learning in INDIA ARM DEVELOPMENT TOOL SETUP.
Lab 11 Department of Computer Science and Information Engineering National Taiwan University Lab11 - Porting 2014/12/9/ 26 1.
DOS  In the 1980s or early 1990s, the operating system that shipped with most PCs was a version of the Disk Operating System (DOS) created by Microsoft:
1 CS503: Operating Systems Spring 2014 Dongyan Xu Department of Computer Science Purdue University.
AT91SAM9261-EK WinCE 5.0 DEMO ATMEL AT91 Application & Support Group Version 1.O February 2007.
From UEFI Shell to Linux - UEFI Linux BootLoader Zhang Rui Software Engineer Sep 28 th 2011.
Architecture Support for OS CSCI 444/544 Operating Systems Fall 2008.
CHAPTER 3 TOP LEVEL VIEW OF COMPUTER FUNCTION AND INTERCONNECTION
Beagle Board Fast Boot Hui Chen Keji Ren Dec 10 th, 2009 EE382N-4 Project.
Porting Operating Systems Phan Duy Hùng (PhD) ES Lecturer – Hanoi FPT University.
NIOS II Ethernet Communication Final Presentation
Unit - VI. Linux and Real Time: Real Time Tasks Hard and Soft Real Time Tasks Linux Scheduling Latency Kernel Preemption Challenges in Kernel Preemption.
RL78 Code & Dataflash.
January 10, Kits Workshop 1 Washington WASHINGTON UNIVERSITY IN ST LOUIS A Smart Port Card Tutorial --- Software John DeHart Washington University.
SAM9260-EK WinCE DEMO AT91 SAM9 Product Group. Version 1.0 October 2006.
SAM9260-EK WinCE DEMO AT91 SAM9 Product Group. Version 1.0 October 2006.
1.4 Hardware Review. CPU  Fetch-decode-execute cycle 1. Fetch 2. Bump PC 3. Decode 4. Determine operand addr (if necessary) 5. Fetch operand from memory.
AT91 C-startup. 2 For reasons of modularity and portability most application code for an embedded application is written in C The application entry point.
Implementation of Embedded OS Lab3 Porting μC/OS-II.
Computer Maintenance I
MINIX Presented by: Clinton Morse, Joseph Paetz, Theresa Sullivan, and Angela Volk.
ARM 7 & ARM 9 MICROCONTROLLERS AT91 1 AT91RM9200 Software delivery.
Linux Boot Process on the Raspberry Pi 2 1 David Ferry, Chris Gill CSE 522S - Advanced Operating Systems Washington University in St. Louis St. Louis,
졸업 프로젝트 발표 1/74 Trinity Snapshot Boot 날 짜: 팀 명: Trinity
1 Setup and Compile Linux Kernel Speaker: Yi-Ji Jheng Date:
U-boot 실행 Sequence 망고 100 보드로 놀아보자 -8
DATE S. S.. Sandstone The sandstone carries out the following tasks: 1. Set up target platform environment, 2. Load a bootable image into memory, 3. Relinquish.
The World Leader in High Performance Signal Processing Solutions Linux: Blackfin Guts.
Chap. 4 ARM Boot Loader Internals. 2 S3C2500 ARM940T Core module ARM9TDMI CoreIC.
1 Free Electrons. Kernel, drivers and embedded Linux development, consulting, training and support. http//free-electrons.com Embedded Linux system development.
Introduction to Operating Systems Concepts
Homework Reading Machine Projects Labs
ARM Embedded Systems
Computer System Overview
Operating Systems •The kernel is a program that constitutes the central core of a computer operating system. It has complete control over everything that.
Computer Maintenance Unit Subtitle: Basic Input/Output System (BIOS)
Improvement of startup time using Software Suspend - Project Update -
AT91RM9200 Boot strategies This training module describes the boot strategies on the AT91RM9200 including the internal Boot ROM and the U-Boot program.
BIOS Chapter 6.
Computer System Laboratory
Dynamic Binary Translators and Instrumenters
Presentation transcript:

The World Leader in High Performance Signal Processing Solutions Das U-Boot: Blackfin Guts

Agenda Background Boot ROM U-Boot Beyond

Terms Loader Program that loads another, more complex, program Boot ROM The Blackfin on-chip ROM Bootloader / Bootstrap Loader Program that boots the “first program” such as the Linux kernel Bare Metal Stand alone program that runs directly on the processor No operating system

Das U-Boot The "Universal Bootloader" is open source firmware Started in October of 1999 by Dan Malek, supported by Wolfgang Denk (Denx Engineering) as of July 2000 Free Software - full source code under GPL Production quality code base Used as default boot loader by several board vendors Portable across processors and easy to port and to debug Many supported architectures: ARM, Blackfin, m68k, Microblaze, MIPS, NIOS, PowerPC, SuperH, x86, and more More than 260 boards supported by public source tree ~20 Blackfin boards

Boot ROM Power on Check BMODE pins Check OTP (if available) Setup selected boot source Load and process LDR found at boot source Load & execute init block Load blocks (code & data) Initialize filled blocks Pass execution off to LDR U-Boot is a standard LDR Boot ROM boot modes tested every release: Parallel Flash (bypass & LDR) SPI Serial Flash UART NAND

U-Boot LDR Layout Example U-Boot LDR for BF548-EZKIT Block 1 0x : 0xAD6D5006 0xFFA x x ( 16bit-dma-from-16bit ignore first ) Block 2 0x : 0xADAB0806 0xFFA x xDEADBEEF ( 16bit-dma-from-16bit init ) Block 3 0x : 0xAD x03F x00001E4C 0xDEADBEEF ( 16bit-dma-from-16bit ) Block 4 0x00001FF0: 0xAD x x xBAADF00D ( 16bit-dma-from-16bit ignore ) Block 5 0x : 0xAD x03F81E4C 0x xDEADBEEF ( 16bit-dma-from-16bit ) Block 6 0x : 0xADFE0006 0xFFA x xDEADBEEF ( 16bit-dma-from-16bit ) Block 7 0x : 0xAD x03FB20A4 0x0002D340 0x ( 16bit-dma-from-16bit fill final ) Block 2 – initialize block (“initcode”) Block 3/5 – code (.text/.data sections) Block 4 – embedded U-Boot environment Block 6 – L1 code (.l1.text) Block 7 – uninitialized data (.bss sections)

LDR initcode block Enable self refresh if external memory is enabled Suspend to RAM Loading another U-Boot in external memory (debugging / testing) Program clocks Use bfrom_SysControl() if available Otherwise do standard PLL reprogram sequence SIC_IWR, PLL_LOCKCNT, VR_CTL, PLL_DIV, PLL_CTL, SIC_IWR Program memory controller Disable self refresh if needed Check for Suspend to RAM resumption Program EBIU Asynchronous Memory Interface Set EVT1 to U-Boot entry point

Suspend to RAM Handled in LDR init block Check hibernate state in VR_CTL (if supported) Look for magic at address 0x xDEADBEEF Load resume address from 0x Load stack address from 0x Jump to hibernation resume point Linux restores itself from hibernate Restore on-chip memory from external memory Restore peripheral state Etc...

U-Boot Initialization Setup stack pointer Program SYSCFG Enable cycles Enable nested interrupts Initialize C runtime ABI Zero out loop / circular buffer / etc... registers Zero out BSS if not done by Boot ROM Lower execution to EVT15 Enable nested interrupts Setup exceptions, CPLBs, and cache Initialize CEC Initialize environment from its storage Boot up main program based on environment settings Linux kernel Bare metal application

U-Boot hardware use No interrupts are used No exceptions are used Except for CPLB miss to allow caching All CPLB misses are handled dynamically – no hard coded lists per processor that fall out of date or need board tweaking Only peripherals that are explicitly needed are initialized If booting from parallel flash, then initialize it If booting over network, then initialize MAC If booting over IDE, then initialize ATAPI Etc... Everything runs in poll mode No interrupts! Everything runs serially in a single thread

Booting user program Most common behavior is to boot the Linux kernel U-Boot works with “bootable U-Boot images” “uImage” is often the short name Contains flat binary image of program Includes CRC checking Arbitrary load & entry addresses Includes compression (gzip, bzip, lzma) Select boot source Flash: parallel, SPI, NAND, … Mass Storage: CF, USB, IDE, SATA, MMC, SD, … Dynamic: Ethernet, Wireless, Serial, … Load uImage over source Check CRC Decompress Jump to entry point

Booting user program (cont) U-Boot and program need not be in same storage Boot ROM boots U-Boot out of parallel flash, but U-Boot boots Linux off of SD card Linux and root file system need not be in same storage U-Boot boots Linux off of SD card, but Linux uses root file system in NAND flash Every file system format you can think of is supported FAT 12 / 16 / 32 JFFS / JFFS2 YAFFS / YAFFS2 ISO9660 (CDROM) Bad blocks with NAND Behavior is all controlled dynamically through U-Boot console

Board porting made easy Porting to your own board is trivial Lines of specific C code (including comments / whitespace) BF518F-EZBRD – 219 lines BF526-EZBRD – 284 lines BF527-EZKIT – 217 lines BF537-MINOTAUR – 244 lines BF537-SRV1 – 244 lines BF538F-EZKIT – 153 lines CM-BF561 – 125 lines Board specific code self contained include/configs/.h – configuration settings boards/ / – all board code Drivers provided for all major peripherals Customers encouraged to merge with our public tree Automatically updated to latest versions and compile tested

Debugging All debug options are configurable Completely disable for production if you wish “Early Serial Output” Get status messages over UART at every step (including initcode) Verbose CPU crash messages Automatic decoding of core registers SEQSTAT – hwerror & excause IPEND – pending interrupts Automatic trace buffer Decode the hardware trace buffer source / destination Automatic symbol resolution All addresses are decoded to symbol names + offsets Signal JTAG automatically upon crash

Questions ?