Commit e368f773985ddcb3b7ac8daa7c96eef7b4e82693

Authored by Gordon Hollingworth
1 parent a76bbdb6

Add a little documentation

Showing 1 changed file with 16 additions and 36 deletions
Readme.md
1 1 # USB boot code
2 2  
3   -This is the USB MSD boot code which should work on the Raspberry Pi model A and the Compute Module.
  3 +This is the USB MSD boot code which should work on the Raspberry Pi model A, Compute Module, Compute
  4 +module 3 and Raspberry Pi Zero.
4 5  
5   -The BCM2835 device has a number of different modes for booting, the most obvious one is the SD card
6   -which looks for a file called bootcode.bin on the first FAT partition of the SD card to boot from.
7   -
8   -The second method it can use is USB, the BCM2835 becomes a USB device which a standard PC (a Windows
9   -or Linux PC or even a Raspberry Pi) will enumerate. The usbbootcode.bin is then squirted down the USB
10   -to the BCM2835.
11   -
12   -This is then executing the second stage boot process that normally looks for a file called config.txt
13   -and start.elf on the SD card and loads start.elf (or whatever version of start you require depending
14   -on the settings in config.txt).
15   -
16   -With usbbootcode.bin it re-enumerates as a device (but this time with a serial number of 1 to distinguish
17   -the second stage from the primary boot) and waits for a message packet from the host. After
18   -The message packet it receives the data (the length is in the message packet), and it then checks the
19   -length of the downloaded information (should be an .elf file either msd.elf or buildroot.elf), if the
20   -length is greater than the size of the elf file, it assumes the rest of the data is a FAT16 image of a
21   -filesystem as created using the Raspberry Pi buildroot target raspberrypi_defconfig
  6 +This version of rpiboot has been modified to work from directories which contain the booting
  7 +firmware. There is a default directory msd/ which contains bootcode.bin and start.elf to turn
  8 +the Raspberry Pi device into a USB Mass Storage Device (MSD).
22 9  
23 10 ## Building
24 11  
25 12 Clone this on your Pi or an Ubuntu linux machine
26 13  
27 14 ```
28   -$ git clone --depth=1 https://github.com/raspberrypi/tools
29   -$ cd tools/usbboot
  15 +$ git clone --depth=1 https://github.com/raspberrypi/usbboot
  16 +$ cd usbboot
30 17 $ sudo apt-get install libusb-1.0-0-dev
31 18 $ make
32 19 $ sudo make install
33 20 $ sudo rpiboot
34 21 ```
35 22  
36   -Checkout the upstream buildroot from git
  23 +## Running your own (not MSD) build
37 24  
38   -```
39   -git clone git://git.buildroot.net/buildroot
40   -```
41   -
42   -Patch with Pi patches (requires raspberrypi/tools from above)
  25 +If you would like to boot the Raspberry Pi with a standard build you just need to copy the FAT partition
  26 +files into a subdirectory (it must have at the minimum bootcode.bin and start.elf). If you take a
  27 +standard firmware release then this will at the very least boot the linux kernel which will then stop
  28 +(and possibly crash!) when it looks for a filesystem. To provide a filesystem there are many options,
  29 +you can build an initramfs into the kernel, add an initramfs to the boot directory or provide some
  30 +other interface to the filesystem.
43 31  
44 32 ```
45   -cd buildroot
46   -patch -p1 < ../tools/usbboot/buildroot.patch
47   -make raspberrypi_defconfig
48   -make
  33 +$ sudo rpiboot -d boot
49 34 ```
50 35  
51   -Note: you'll need superuser password to finish the build and create the image
52   -
53   -Running
  36 +This will serve the boot directory to the Raspberry Pi Device.
54 37  
55   -```
56   -sudo rpiboot -b buildroot/output/images/fatimage
57   -```
... ...