Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 04 Jun 2012 17:37:26 -0700
From:      Bakul Shah <bakul@bitblocks.com>
To:        Torfinn Ingolfsen <torfinn.ingolfsen@getmail.no>
Cc:        freebsd-arm@FreeBSD.org
Subject:   Re: Support for Raspberry-PI 
Message-ID:  <20120605003726.7AC04B827@mail.bitblocks.com>
In-Reply-To: Your message of "Mon, 04 Jun 2012 22:51:32 %2B0200." <20120604225132.cff152c4.torfinn.ingolfsen@getmail.no> 
References:  <CAB3Sx6f7TPkfAfsmS_SWch5kGkyxv9=43nV66ToDRQmG4vv9ug@mail.gmail.com> <4F533E46.1070105@freebsd.org> <20120603201229.3fd31c98.torfinn.ingolfsen@getmail.no> <4FCBC564.3060404@freebsd.org> <20120604172053.D4674B827@mail.bitblocks.com> <4FCCFFD8.9020800@gmail.com> <20120604185718.A7C8EB827@mail.bitblocks.com> <20120604225132.cff152c4.torfinn.ingolfsen@getmail.no>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 04 Jun 2012 22:51:32 +0200 Torfinn Ingolfsen <torfinn.ingolfsen@getmail.no>  wrote:
> On Mon, 04 Jun 2012 11:57:18 -0700
> Bakul Shah <bakul@bitblocks.com> wrote:
> 
> > Because no bsd runs on the raspi as yet but linux does!  There
> > is no u-boot or netboot on it either. The GPU loads a file
> > called kernel.bin from a FAT partition.  So the idea is you
> 
> FWIW, these are the files on said FAT partition (from the Debian 6.0.4 image 
> for the Pi):
> root@kg-v7# ls /mnt
> arm128_start.elf    boot_enable_ssh.rc    issue.txt        loader.bin
> arm192_start.elf    bootcode.bin        kernel.img        start.elf
> arm224_start.elf    cmdline.txt        kernel_emergency.img
> 
> I don't know if start.elf, bootcode.bin or loader.bin is the actual "first st
> age" loader.
> start.elf is just a copy of one of the armXXX_start.elf files; this sets up h
> ow much 
> memory (of the 256 MB) for the CPU and how much for the GPU.

There is a Raspi forum thread on config.txt that lays out the
boot sequence but not in one place and it is evolving. Basically:

1. Stage 1 boot is in the on-chip ROM. Loads stage2 in the L2 cache!
2. Stage 2 is bootcode.bin. Enables SDRAM and loads stage3
3. Stage 3 is loader.bin.  Knows about elf format and load start.elf
4. start.elf loads kernel.img (+ it is the main gpu code).
   It reads config.txt, cmdline.txt and bcm2835.dtb
   If the dtb file exists, it is loaded at 0x100 & kernel @ 0x8000
   Else if disable_commandline_tags is set load kernel @ 0x0
   Else if load kernel @ 0x8000 and put ATAGS at 0x100
   See Issue 16 in https://github.com/raspberrypi/linux/issues
5. kernel.img, is the *first* thing that runs on the ARM
   processor.

So this is simpler -- you don't really need u-boot to load the
kernel.  Some sort of loader would be handy to be able to net
boot or local boot one of multiple OSes but for kernel
development you need not wait for that.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120605003726.7AC04B827>