Difference between revisions of "Unit BootRPi"

From Ultibo.org
Jump to: navigation, search
 
(4 intermediate revisions by the same user not shown)
Line 4: Line 4:
 
=== Description ===
 
=== Description ===
 
----
 
----
 +
 +
'''Ultibo Initialization code for Raspberry Pi unit'''
  
 
'''Raspberry Pi'''
 
'''Raspberry Pi'''
Line 11: Line 13:
 
CPU: ARM1176 (ARMv6) (1 @ 700MHz)
 
CPU: ARM1176 (ARMv6) (1 @ 700MHz)
 
   
 
   
Cache: L1 16KB / L2 128KB (Shared with GPU)
+
Cache: L1 16KB/L2 128KB (Shared with GPU)
 
   
 
   
 
FPU: VFPV2
 
FPU: VFPV2
Line 21: Line 23:
 
USB: Synopsys DesignWare Hi-Speed USB 2.0 On-The-Go Controller (DWCOTG)
 
USB: Synopsys DesignWare Hi-Speed USB 2.0 On-The-Go Controller (DWCOTG)
 
   
 
   
LAN: SMSC LAN9512 (SMSC LAN9514 on Model B+ / No LAN on Model A/A+/Zero) (SMSC95XX)
+
LAN: SMSC LAN9512 (SMSC LAN9514 on Model B+/No LAN on Model A/A+/Zero) (SMSC95XX)
 
    
 
    
 
SD/MMC: Arasan (BCM2708)
 
SD/MMC: Arasan (BCM2708)
Line 29: Line 31:
 
Bluetooth: (None)
 
Bluetooth: (None)
 
   
 
   
Other: GPIO / SPI / I2C / I2S / PL011 (UART) / PWM / SMI / Watchdog (PM) / Random (RNG) / Timer ???
+
Other: GPIO/SPI/I2C/I2S/PL011 (UART)/PWM/SMI/Watchdog (PM)/Random (RNG)/Timer
 +
 
  
 
'''Boot RPi'''
 
'''Boot RPi'''
Line 58: Line 61:
  
 
Unaligned Data Access - Disabled
 
Unaligned Data Access - Disabled
 +
  
 
Ultibo switches the processor to System mode for all operations and remains in the Secure world.
 
Ultibo switches the processor to System mode for all operations and remains in the Secure world.
Line 85: Line 89:
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
 
<div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 0px; padding-bottom: 15px;">
<pre style="border: 0; padding-bottom:0px;">procedure Startup; assembler; nostackframe; [public, alias: '_START'];</pre>
+
<pre style="border: 0; padding-bottom:0px;">procedure Startup; assembler; nostackframe; public name '_START';</pre>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Entry point of Ultibo on Raspberry Pi, this will be the very first byte executed and will be loaded by the GPU at address 0x00008000</div>
 
<div style="font-size: 14px; padding-left: 12px;">'''Description:''' Entry point of Ultibo on Raspberry Pi, this will be the very first byte executed and will be loaded by the GPU at address 0x00008000</div>
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
<div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-
Line 102: Line 106:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| See A2.6 "Exceptions" of the ARM Architecture Reference Manual
 
| See A2.6 "Exceptions" of the ARM Architecture Reference Manual
 
|-
 
|-
Line 114: Line 118:
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
{| class="wikitable" style="font-size: 14px; background: white;"
 
|-
 
|-
! '''Note'''
+
! Note
 
| None documented
 
| None documented
 
|-
 
|-

Latest revision as of 01:19, 22 April 2022

Return to Unit Reference


Description


Ultibo Initialization code for Raspberry Pi unit

Raspberry Pi

SoC: Broadcom BCM2835

CPU: ARM1176 (ARMv6) (1 @ 700MHz)

Cache: L1 16KB/L2 128KB (Shared with GPU)

FPU: VFPV2

GPU: Broadcom VideoCore IV (VC4)

RAM: 512MB (256MB on Model A/A+)

USB: Synopsys DesignWare Hi-Speed USB 2.0 On-The-Go Controller (DWCOTG)

LAN: SMSC LAN9512 (SMSC LAN9514 on Model B+/No LAN on Model A/A+/Zero) (SMSC95XX)

SD/MMC: Arasan (BCM2708)

WiFi: (None)

Bluetooth: (None)

Other: GPIO/SPI/I2C/I2S/PL011 (UART)/PWM/SMI/Watchdog (PM)/Random (RNG)/Timer


Boot RPi

The boot loader on the Raspberry Pi will load this code at address 0x00008000 onwards and set the following registers before jumping to this code.

R0 - Zero

R1 - Machine Type (Raspberry Pi or BCM2708 = 0x0c42)

R2 - Address of the ARM Tags structure (Normally 0x0100)

On entry to this code the processor will be in the following state:

World - Secure

Mode - Supervisor (ARM_MODE_SVC)

MMU - Disabled

FPU - Disabled

L1 Data Cache - Disabled

L1 Instruction Cache - Disabled

Branch Predication - Disabled

Unaligned Data Access - Disabled


Ultibo switches the processor to System mode for all operations and remains in the Secure world.

The initialization process enables the MMU, FPU, L1 Cache and other performance optimizations.

Constants


None defined

Type definitions


None defined

Public variables


None defined

Function declarations



Boot functions

procedure Startup; assembler; nostackframe; public name '_START';
Description: Entry point of Ultibo on Raspberry Pi, this will be the very first byte executed and will be loaded by the GPU at address 0x00008000
Note None documented


procedure Vectors; assembler; nostackframe;
Description: ARM exception vector table which is copied to address 0 by the StartupHandler
Note See A2.6 "Exceptions" of the ARM Architecture Reference Manual


procedure StartupHandler; assembler; nostackframe;
Description: Startup handler routine executed to start the Ultibo kernel
Note None documented


Return to Unit Reference