Difference between revisions of "Unit BootRPi"
(Created page with "Return to Unit Reference === Description === ---- ''To be documented'' === Constants === ---- ''To be documented'' === Type definitions === ---- ''To...") |
|||
(8 intermediate revisions by the same user not shown) | |||
Line 5: | Line 5: | ||
---- | ---- | ||
− | '' | + | '''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 === | === Constants === | ||
---- | ---- | ||
− | '' | + | ''None defined'' |
=== Type definitions === | === Type definitions === | ||
---- | ---- | ||
− | '' | + | ''None defined'' |
=== Public variables === | === Public variables === | ||
---- | ---- | ||
− | '' | + | ''None defined'' |
=== Function declarations === | === Function declarations === | ||
---- | ---- | ||
− | |||
+ | '''Boot functions''' | ||
+ | |||
+ | <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 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 class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <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 Vectors; assembler; nostackframe;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' ARM exception vector table which is copied to address 0 by the StartupHandler</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | See A2.6 "Exceptions" of the ARM Architecture Reference Manual | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <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 StartupHandler; assembler; nostackframe;</pre> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Description:''' Startup handler routine executed to start the Ultibo kernel</div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | ! Note | ||
+ | | None documented | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
Return to [[Unit_Reference|Unit Reference]] | Return to [[Unit_Reference|Unit Reference]] |
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';
Note | None documented |
---|
procedure Vectors; assembler; nostackframe;
Note | See A2.6 "Exceptions" of the ARM Architecture Reference Manual |
---|
procedure StartupHandler; assembler; nostackframe;
Note | None documented |
---|
Return to Unit Reference