rPi: Update boot process for later Pi firmwares

* The bootprocess is better documented now.
  Put technical info in linker script, user info
  into info.txt
This commit is contained in:
Alexander von Gluck IV
2012-09-09 21:10:16 -05:00
parent 7d362bb34c
commit 1946d374f2
4 changed files with 34 additions and 6 deletions
+1 -1
View File
@@ -7,7 +7,7 @@ HAIKU_BOOT_PLATFORM = raspberrypi_arm ;
# Various hardcoded addresses
#
HAIKU_BOARD_LOADER_BASE = 0x32000000 ;
HAIKU_BOARD_LOADER_BASE = 0x0 ;
#
# Flash image
+12 -2
View File
@@ -1,4 +1,5 @@
Setting up the Haiku boot partition
-------------------------------------
partition 1 -- FAT32, bootable flag, type 'c'
partition 2 -- BeFS, Haiku filesystem, type 'eb'
@@ -7,7 +8,7 @@ The boot partition must contain the following files to boot Haiku:
* bootcode.bin : 2nd stage bootloader, starts with SDRAM disabled
* loader.bin : 3rd stage bootloader, starts with SDRAM enabled
* start.elf: The GPU binary firmware image, provided by the foundation.
* kernel.img: Haiku Loader (haiku_loader)
* haiku_loader: Haiku Loader
* config.txt: A configuration file read by the GPU.
Optional files:
@@ -20,4 +21,13 @@ Additional GPU firmware images, rename over start.elf to use them:
- this is the default
* arm224_start.elf : 224M ARM, 32M GPU split
- (use this for Linux only with no 3D or video processing.
Its enough for the 1080p framebuffer, but not much else)
Enough for the 1080p framebuffer, but not much else)
Building
-------------------------------------
jam -q -sHAIKU_BOOT_BOARD=raspberry_pi -sHAIKU_BOOT_PLATFORM=raspberrypi_arm haiku_loader
config.txt options
-------------------------------------
kernel=haiku_loader
disable_commandline_tags=1
@@ -1,8 +1,14 @@
.section .init
.globl _start
_start:
b jmp_loader
.balign 0x8000, 0
.section .text
/* Start "safe" code area.
* 0x4000 minimum safe area
* defined in boot_loader_raspberrypi_arm.ld
*/
jmp_loader:
/* Start Haiku loader */
@@ -11,10 +11,22 @@ UND_STACK_SIZE = 0;
SECTIONS
{
/*
* Raspberry Pi boot logic:
* start.elf loads the kernel specified in config.txt
* if a dtb exists, it is loaded at 0x100 and the kernel at 0x8000
* else if disable_commandline_tags true, set kernel load address to 0x0
* else load kernel at 0x8000 and put atags at 0x100
*/
. = BOARD_LOADER_BASE;
/* text/read-only data */
.text : {
/* .init is a stub that jumps to code at .text */
.init : {
*(.init)
}
.text 0x8000 : {
CREATE_OBJECT_SYMBOLS
*(.text .text.* .gnu.linkonce.t.*)
*(.plt)