Skip to content

This project implements a second- and third-stage bootloader for the Raspberry Pi 3 (Broadcom BCM2837 SoC), developed as an EmbeddedMind showcase.

License

Notifications You must be signed in to change notification settings

EMind-dev/stage0-pi3-bringup

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

stage0-pi3-bringup

Project Overview

This repository contains a comprehensive implementation of System-on-Chip (SoC) bring-up, specifically targeting the BCM2837 of the Raspberry Pi 3. The project demonstrates how to perform SoC bring-up from scratch, implementing all necessary components for system initialization and peripheral management.

Project Objectives

The project aims to illustrate:

  • SoC Bring-up Process: Step-by-step implementation of the BCM2837 SoC initialization process
  • MISRA C:2012 Best Practices: All C modules strictly adhere to MISRA C:2012 guidelines to ensure code safety and reliability
  • Low-Level Assembly Programming: Assembly modules for boot and critical peripheral initialization
  • ARM Cortex-A53 Architecture: Exploitation of ARM Cortex-A53 core-specific features

System Architecture

Target Hardware

  • SoC: Broadcom BCM2837 (Raspberry Pi 3)
  • CPU: Quad-core ARM Cortex-A53 64-bit
  • Architecture: ARMv8-A

Core Components

  1. Boot Sequence: Implementation of the boot process from system reset
  2. Peripheral Initialization: Configuration and setup of primary peripherals
  3. Memory Management: MMU setup and memory space management
  4. Interrupt Handling: Interrupt management system

Code Structure

  • Assembly Modules: Boot sequence handling and low-level hardware initialization
  • MISRA-compliant C Modules: System functionality implementation following MISRA C:2012
  • Header Files: Hardware register definitions and data structures
  • Linker Scripts: Memory configuration and code layout

Technical Features

MISRA C:2012 Compliance

  • Adherence to mandatory and advisory rules
  • Safe and maintainable code
  • Comprehensive documentation of deviations (if present)

Assembly Implementation

  • Custom boot vector
  • Stack pointer initialization
  • System register configuration
  • Critical peripheral setup

Usage

This project serves as an educational reference and template for:

  • Embedded developers working with ARM SoCs
  • Engineers interested in bare-metal system bring-up
  • Students of embedded systems and ARM architectures
  • Professionals requiring MISRA C:2012 compliant code

Development Notes

The project is structured to be easily comprehensible and modifiable, with particular emphasis on code documentation and explanation of fundamental SoC bring-up concepts.

About

This project implements a second- and third-stage bootloader for the Raspberry Pi 3 (Broadcom BCM2837 SoC), developed as an EmbeddedMind showcase.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published