Files
raspberrypi/bootloader01
2012-06-28 23:18:23 -04:00
..
2012-06-28 23:18:23 -04:00
2012-06-28 23:18:23 -04:00
2012-06-28 23:18:23 -04:00
2012-05-27 02:31:05 -04:00
2012-05-27 02:31:05 -04:00
2012-05-27 02:31:05 -04:00
2012-06-28 23:18:23 -04:00
2012-06-28 23:18:23 -04:00
2012-05-27 02:31:05 -04:00
2012-06-28 23:18:23 -04:00
2012-06-28 23:18:23 -04:00
2012-06-28 23:18:23 -04:00

See the top level README for information on where to find the
schematic and programmers reference manual for the ARM processor
on the raspberry pi.

Derived from uart02 and code of various ages (yes some from 1996), this
is a very simple bootloader.  Instead of removing, writing, and replcing
the sd card numerous times.  This makes that a bit simpler.  Using the
uart on the card and some sort of uart on the host (see below) you only
need to load the bootloader (kernel.img derived from bootloader01.elf)
one time.  From then on just power cycle the raspberry pi and use the
host loader program (prograspi) to load and start the program under
development on the raspberry pi.

This bootloader sits at 0x200000 so that you have 0x200000 bytes to
develop with.  And that way if you like your program you can just
copy a .bin version to kernel.img on the sd card and use it.  I had
the bootloader closer to 0x0000000 and test programs would be after it
but that means to make a real program for the sd card would be another
link step.  Very easy to change this, both bootloader01.c and prograspi.c
use the same number 0x200000.

On the host you will want to use something like this:
http://www.sparkfun.com/products/718
to connect to the uart pins on the raspi.  Do not connect the raspberry
pi pins directly to a com port on a computer you will fry the board.
The above board happens to have pins in the same order as the raspberry
pi.  On connector P1 on the raspberry pi connect pin 6 to ground on the
usb to serial board.  Pin 8 on P1 to RX on the usb to serial board, and
pin 10 on P1 to TX on the usb to serial board.  I use these
http://www.sparkfun.com/products/8430
to connect the ftdi board to the raspberry pi.  No soldering required,
at least not at the moment.  If down the road the raspberri pi does
not have P1 header pins then there will be some soldering or something
required.

You do not use a dumb terminal program.  The program on the host
that loads your ARM program is called prograspi.  There is a test
program derived from blinker03 called blinker.  Once you have copied
kernel.img to the sd card on the raspberry pi.  You have hooked up
the usb to serial board to the raspberry pi.  Plug the usb into
the usb to serial board and use dmesg to note the /dev/ttyUSBX port.
Plug in the raspberry pi to power it and then run:

./prograspi blinker.hex /dev/ttyUSBX

where /dev/ttyUSBX is the port you are connecting through, it could
be a real serial port if you have a tranciever for the raspberry pi
side. (MAX232 for example).

Now you can go back and try my other examples without the dozens/hundreds
of sd card insertions it took me to get to this point.