Difference between revisions of "Bering-uClibc 5.x - Developer Guide - Appendices - Hardware-Specific Guides"
Davidmbrooke (Talk | contribs) (Added note about VFP) |
Davidmbrooke (Talk | contribs) m (Typo) |
||
Line 18: | Line 18: | ||
===Overview=== | ===Overview=== | ||
The Raspberry Pi Model B has a [http://www.broadcom.com/products/BCM2835 Broadcom BCM2835] "system on a chip" integrated circuit containing an [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0301h/index.html ARM1176JZF-S] CPU which implements the [http://en.wikipedia.org/wiki/ARM11 ARMv6] CPU architecture standard. | The Raspberry Pi Model B has a [http://www.broadcom.com/products/BCM2835 Broadcom BCM2835] "system on a chip" integrated circuit containing an [http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0301h/index.html ARM1176JZF-S] CPU which implements the [http://en.wikipedia.org/wiki/ARM11 ARMv6] CPU architecture standard. | ||
− | * As described [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/I1000175.html here], the ARM1176JZF-S is an ARM1176JZ-S with the addition of a Vector Floating-Point (VFP) coprocessor. This means it can | + | * As described [http://infocenter.arm.com/help/topic/com.arm.doc.ddi0301h/I1000175.html here], the ARM1176JZF-S is an ARM1176JZ-S with the addition of a Vector Floating-Point (VFP) coprocessor. This means it can execute floating-point arithmetic in hardware rather than (only) in software. |
A PDF data sheet for the BCM2835 can be downloaded from [http://dmkenr5gtnd8f.cloudfront.net/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf here]. | A PDF data sheet for the BCM2835 can be downloaded from [http://dmkenr5gtnd8f.cloudfront.net/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf here]. |
Revision as of 20:17, 10 April 2012
Hardware-Specific Guides | ||
---|---|---|
Prev | Bering-uClibc 5.x - Developer Guide |
Contents
Introduction
This page provides guidelines for Bering-uClibc 5.x developers targeting specific hardware devices.
See also the equivalent page in the User Guide for hardware-specific information relevant to Users as well as Developers.
ARM CPU Architecture
Raspberry Pi Model B
Overview
The Raspberry Pi Model B has a Broadcom BCM2835 "system on a chip" integrated circuit containing an ARM1176JZF-S CPU which implements the ARMv6 CPU architecture standard.
- As described here, the ARM1176JZF-S is an ARM1176JZ-S with the addition of a Vector Floating-Point (VFP) coprocessor. This means it can execute floating-point arithmetic in hardware rather than (only) in software.
A PDF data sheet for the BCM2835 can be downloaded from here. The BCM2835 contains a variety of devices and many of these seem to be identified with the string BCM2708 rather than BCM2835, judging by the example boot log from an Alpha board here
Linux Kernel Source
Many of the device drivers for the on-board peripherals are not currently (April 2012) included in the mainstream Linux source tree. The Raspberry Pi foundation have forked the Linux 3.1.9 kernel source and added the necessary drivers and a specific bcm2708 "platform". See the Raspberry Pi Git Hub repository
A consequence of this is that it is not possible to fully support the Raspberry Pi with the standard 3.2.x kernel proposed for Bering-uClibc 5.x. The main options are:
- Patch the 3.2.x kernel to add the additional drivers.
- Build a variant of Bering-uClibc 5.x specifically for the Raspberry Pi, using the 3.1.9 kernel.
Linux Kernel Configuration
TODO - Which configuration settings are required / desirable.
There does not seem to be any standard provision for loading an initramfs (initrd) file when booting the Raspberry Pi. That means we need to embed the Bering-uClibc 5.x initrd into the kernel using the CONFIG_INITRAMFS_SOURCE configuration variable.
Boot Disk Layout
The Raspberry Pi must boot from its SD card and some vital files must be present in the right location.
Refer to the contents of the standard Raspberry Pi disk images from the Raspberry Pi downloads page
The first disk partition must be formatted as a bootable FAT32 filesystem which must contain:
- A file called
start.elf
which contains the GPU binary driver - A file called
bootcode.bin
which contains the second stage bootloader - A file called
loader.bin
which contains the third stage bootloader - A file called
kernel.img
which contains the Linux kernel- This seems to be a standard (uncompressed) Linux kernel
Image
file with a special 32KB prefix. See here
- This seems to be a standard (uncompressed) Linux kernel
- A file called
cmdline.txt
containing the kernel command line
It seems customary to put the files relating to a particular Linux distribution on a second disk partition. We therefore need a second FAT32 disk partition for leaf.cfg
, all the .lrp
Package files etc.
Note that the Raspberry Pi references the first disk partition as /dev/mmcblk0p1
and the second disk partition as /dev/mmcblk0p2
.
Prev | Up |