Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

BeagleBone Black Bootloaders

3,114 views

Published on

BeagleBone Black Bootloaders

Published in: Technology
  • Be the first to comment

  • Be the first to like this

BeagleBone Black Bootloaders

  1. 1. © 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. BeagleBone Black Bootloaders
  2. 2. 2© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What to Expect? BBB Memory Organization Beagle Booting Process W's of X-Loader BSP in X-Loader W's of U-Boot BSP in U-Boot
  3. 3. 3© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. BBB Memory Organization DDR 512MB ROM Internal RAM 64KB SOC BeagleBone Black 0x80000000 0x40200000 0x402F0400 EMMC 4GB Ext. MMC
  4. 4. 4© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. General Booting of BeagleBoard ROM Code Internal ROM X-Loader Internal SRAM Internal ROM U-Boot External DDR Kernel External DDR
  5. 5. 5© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. BBB Images ROM Code X-Loader SOC BeagleBone Black ROM Internal RAM DDR u-boot bbb.dtb uImage Ramdisk/initrd (Ramdisk Boot)
  6. 6. 6© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. X-Loader
  7. 7. 7© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. W's of X-Loader First stage bootloader for Beagle Board Derived from u-boot – the second stage bootloader Named as MLO (Memory Loader) in filesystem. Runs in an internal SRAM Loads the second stage bootloader i.e. U-Boot
  8. 8. 8© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Let's Get Down to Source Code
  9. 9. 9© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. X-Loader Code Flow cpu/armv7/start.S reset() Disable IRQ & FIQ. Switch to supervisor mode Low Level Initialization cpu_init_cp15() Invalidate and disable Instruction & data Cache Disable MMU cpu/armv7/lowlevel_i nit.S lowlevel_init() arm/lib/crt0.S _main() C Runtime setup arm/lib/spl.c board_init_f() Early Board Setup Clear BSS and jump to board_init_r() Common/spl/spl.c board_init_r() Load the u-boot
  10. 10. 10© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. X-Loader for BBB Board configuration include/configs/am335x_evm.h CPU dependent code arch/arm/cpu/armv7/*.c arch/arm/cpu/armv7/lowlevel_init.S arch/arm/lib/crt0.S arch/arm/cpu/armv7/am33x/board.c arch/arm/lib/spl.c Board dependent code Board/ti/am335x/board.* Board independent code common/spl/spl.c
  11. 11. 11© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot
  12. 12. 12© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. W's of U-Boot Universal Bootloader (U-Boot) An Open Source Bootloader With minimal changes, can be ported for any board GRUB/LILO Designed with x-86 in mind Huge in Size Needs to be changed drastically for porting on other architecture
  13. 13. 13© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Source Tree arch – Architecture dependent Code board – Board dependent Code common – Environment & Command Line Code doc – Documentation drivers – Device specific Drivers fs – File System support Code include – Headers lib – Compression, Encryption related Code net – Minimal Network Stack tools – U-Boot Utilities (mkimage is here)
  14. 14. 14© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Initialization Details Bootloader starts its execution from flash /RAM Hardware Diagnostics, like POST, … Configuring the CPU speed, MMU setting, etc Memory setup & initialization Setting up interfacing ports like serial, VGA, … Sets up the address of the boot parameters
  15. 15. 15© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Configuration Creating a configuration file for the board Adding a Kconfig file in 'board/<vendor>/<board> with below info: Architecture CPU Board Vendor (May be NULL) SoC (May be NULL)
  16. 16. 16© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Configuration Output Configuration files for use in C Sources include/generated/autoconf.h spl/include/generated/autoconf.h (For SPL) include/config.h include/configs/<board>.h Configuration files for Makefile include/config/auto.conf spl/include/config/auto.conf (For SPL) include/autoconf.mk
  17. 17. 17© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Let's Get Down to Source Code
  18. 18. 18© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Code Flow cpu/armv7/start.S reset() Disable IRQ & FIQ. Switch to supervisor mode Low Level Initialization cpu_init_cp15() Invalidate and disable Instruction & data Cache Disable MMU cpu/armv7/lowlevel_i nit.S lowlevel_init() arm/lib/crt0.S _main() C Runtime setup arm/lib/board.c board_init_f() Early Board Setup Calculate Addresses (SP, Dest, GD) for Relocation Call the board initialization functions Arch/arm/lib/reloc ate.S relocate_code() General Relocation arm/lib/crt0.S _main() Clear BSS, Setup GD and jump to board_init_r() arm/lib/board.c board_init_r() Final Board Setup Board/it/am335x/board.c board_init() Board specific device setup env_relocate() Setup Environment common/main.c main_loop() Boot the kernel or give out the u-boot shell
  19. 19. 19© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Let's Check What is the starting point of u-boot? Where is the address of the Environmental Variables set? Where is RAM initialized? Which file is the interface between the architecture dependent code & board dependent code? Where is serial initialized? From where is the kernel invoked? And what are the parameters passed to the kernel? Where is default environment defined? where is the board dependent file for BBB? Where is the configuration file for BBB? Where is the architecture number set? Where is the pin multiplexing done? From where does the boot delay comes?
  20. 20. 20© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot BSP Board configuration include/configs/am335x_evm.h CPU dependent code arch/arm/cpu/armv7/*.c arch/arm/cpu/armv7/lowlevel_init.S arch/arm/lib/crt0.S arch/arm/lib/relocate.S arch/arm/cpu/armv7/am33x/board.c arch/arm/lib/board.c Board dependent code Board/ti/am335x/board.* Board independent code common/* driver, fs, common(cmd, flash, env..)
  21. 21. 21© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Porting Implies adding a new Board to U-Boot That entails Adding board specific code at the right places Adding the new board directory under board/ with Makefile Initialization Code for the Board Kconfig file Adding the new board header under include/configs/ with Configuration for the Board
  22. 22. 22© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. U-Boot Porting Hands On Add the configuration file .h in include/configs Add the Kconfig file at board/<vendor>/<soc>/ Modify the arch/arm/Kconfig to add the menu item for the board and source the board dependent Kconfig file Add the board dependent file at board/<vendor>/<soc>/ Modify the path for linker script at include/configs/<config_name.h> In the linker script, add the path for built_in.o for the board. Add the defconfig file in configs folder. Add atleast CONFIG_ARM and CONFIG_TARGET_<BOARD>
  23. 23. 23© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. What all have learnt? BBB Memory Organization Beagle Booting Process W's of X-Loader BSP in X-Loader W's of U-Boot BSP in U-Boot
  24. 24. 24© 2015-17 SysPlay Workshops <workshop@sysplay.in> All Rights Reserved. Any Queries?

×