2012-03-26
raspi-toolchain
root@slitaz:~# echo 'main(){}' | arm-bcm2708-linux-gnueabi-gcc -E -v -
Using built-in specs.
COLLECT_GCC=arm-bcm2708-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-bcm2708/bin/../libexec/gcc/arm-bcm2708-linux-gnueabi/4.5.1/lto-wrapper
Target: arm-bcm2708-linux-gnueabi
Configured with: /home/davidung/crosstool-ng/crosstool-ng-1.9.0/.build/src/gcc-4.5.1/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-bcm2708-linux-gnueabi --prefix=/home/davidung/x-tools/arm-bcm2708-linux-gnueabi --with-sysroot=/home/davidung/x-tools/arm-bcm2708-linux-gnueabi/arm-bcm2708-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-cpu=arm1176jzf-s --with-tune=arm1176jzf-s --with-pkgversion=Broadcom-2708 --enable-__cxa_atexit --disable-libmudflap --disable-libgomp --disable-libssp --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-gmp=/home/davidung/crosstool-ng/crosstool-ng-1.9.0/.build/arm-bcm2708-linux-gnueabi/build/static --with-mpfr=/home/davidung/crosstool-ng/crosstool-ng-1.9.0/.build/arm-bcm2708-linux-gnueabi/build/static --with-mpc=/home/davidung/crosstool-ng/crosstool-ng-1.9.0/.build/arm-bcm2708-linux-gnueabi/build/static --with-ppl=no --with-cloog=no --with-libelf=/home/davidung/crosstool-ng/crosstool-ng-1.9.0/.build/arm-bcm2708-linux-gnueabi/build/static --enable-threads=posix --enable-target-optspace --with-long-double-128 --with-local-prefix=/home/davidung/x-tools/arm-bcm2708-linux-gnueabi/arm-bcm2708-linux-gnueabi//sys-root --disable-nls --enable-symvers=gnu --enable-c99 --enable-long-long --with-float=softfp
Thread model: posix
gcc version 4.5.1 (Broadcom-2708)
COLLECT_GCC_OPTIONS='-E' '-v' '-mcpu=arm1176jzf-s' '-mfloat-abi=softfp'
root@slitaz:~# echo 'main(){}' | arm-none-linux-gnueabi-gcc -E -v -
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2011.03/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.2/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/janisjo/arm-linux-lite/src/gcc-4.5-2011.03/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2011 -D__CS_SOURCERYGXX_MIN__=3 -D__CS_SOURCERYGXX_REV__=41 %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2011.03-41' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpc=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-libelf=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.5.2 (Sourcery G++ Lite 2011.03-41)
COLLECT_GCC_OPTIONS='-E' '-v' '-march=armv5te' '-funwind-tables' '-D__CS_SOURCERYGXX_MAJ__=2011' '-D__CS_SOURCERYGXX_MIN__=3' '-D__CS_SOURCERYGXX_REV__=41'
root@slitaz:~# echo 'main(){}' | arm-none-linux-gnueabi-gcc -mtune=arm1176jzf-s
-mcpu=arm1176jzf-s -mfloat-abi=softfp -E -v -
Using built-in specs.
COLLECT_GCC=arm-none-linux-gnueabi-gcc
COLLECT_LTO_WRAPPER=/opt/arm-2011.03/bin/../libexec/gcc/arm-none-linux-gnueabi/4.5.2/lto-wrapper
Target: arm-none-linux-gnueabi
Configured with: /scratch/janisjo/arm-linux-lite/src/gcc-4.5-2011.03/configure --build=i686-pc-linux-gnu --host=i686-pc-linux-gnu --target=arm-none-linux-gnueabi --enable-threads --disable-libmudflap --disable-libssp --disable-libstdcxx-pch --enable-extra-sgxxlite-multilibs --with-arch=armv5te --with-gnu-as --with-gnu-ld --with-specs='%{save-temps: -fverbose-asm} %{funwind-tables|fno-unwind-tables|mabi=*|ffreestanding|nostdlib:;:-funwind-tables} -D__CS_SOURCERYGXX_MAJ__=2011 -D__CS_SOURCERYGXX_MIN__=3 -D__CS_SOURCERYGXX_REV__=41 %{O2:%{!fno-remove-local-statics: -fremove-local-statics}} %{O*:%{O|O0|O1|O2|Os:;:%{!fno-remove-local-statics: -fremove-local-statics}}}' --enable-languages=c,c++ --enable-shared --enable-lto --enable-symvers=gnu --enable-__cxa_atexit --with-pkgversion='Sourcery G++ Lite 2011.03-41' --with-bugurl=https://support.codesourcery.com/GNUToolchain/ --disable-nls --prefix=/opt/codesourcery --with-sysroot=/opt/codesourcery/arm-none-linux-gnueabi/libc --with-build-sysroot=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/libc --with-gmp=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpfr=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-mpc=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-ppl=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-host-libstdcxx='-static-libgcc -Wl,-Bstatic,-lstdc++,-Bdynamic -lm' --with-cloog=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --with-libelf=/scratch/janisjo/arm-linux-lite/obj/host-libs-2011.03-41-arm-none-linux-gnueabi-i686-pc-linux-gnu/usr --disable-libgomp --enable-poison-system-directories --with-build-time-tools=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/bin --with-build-time-tools=/scratch/janisjo/arm-linux-lite/install/arm-none-linux-gnueabi/bin
Thread model: posix
gcc version 4.5.2 (Sourcery G++ Lite 2011.03-41)
COLLECT_GCC_OPTIONS='-mtune=arm1176jzf-s' '-mcpu=arm1176jzf-s' '-mfloat-abi=softfp' '-E' '-v' '-funwind-tables' '-D__CS_SOURCERYGXX_MAJ__=2011' '-D__CS_SOURCERYGXX_MIN__=3' '-D__CS_SOURCERYGXX_REV__=41'
root@slitaz:~# ls /opt/arm-2011.03/arm-none-linux-gnueabi/libc/
armv4t/ etc/ lib/ sbin/ thumb2/ usr/
.
raspi-kernel
Kernel
http://elinux.org/RPi_Software#Kernel
The initial patches (Media:Rpi-linux-patches-3.1.9.tgz) are released against the 3.1.9 kernel - but may also work against later kernels.The kernel is now also available on https://github.com/raspberrypi/linux
[..]
Compiler
The Broadcom processor on Raspberry Pi contains an ARM v6 general purpose processor and a Broadcom VideoCore IV GPU. No data is currently available on other cores (if any) available in the BCM2835.ARM
There is broad compiler support including gcc - please see ARM CompilersThe ARM is capable of around 500 BOGOMIPS [1], 5400 LINPACK KFLOPS with software floating point and 22000 KFLOPS with softfp hardware floating point[2].
The gcc compiler flags which will produce the most optimal code for the RPi are probably (can someone check!):
-mtune=arm1176jzf-s -mfpu=vfp -mfloat-abi=softfp [-marm or -mthumb][..]
http://elinux.org/Rpi_kernel_compilation#compiling
compiling
Next you have to configure the kernel:
cp arch/arm/configs/bcmrpi_cutdown_defconfig .config make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfigThen building the kernel:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- -kYou can use the "-j" flag to improve compilation time. If you have a dual core machine you can use "-j 3", for a quad core machine you can use "-j 6", and so on.
2012-03-24
Slitaz-arm -network
network
1.
# ifconfig lo 127.0.0.1
# ifconfig eth0 10.0.2.15
# route add default gw 10.0.2.2
2.
# ping -c 3 10.0.2.2
PING 10.0.2.2 (10.0.2.2): 56 data bytes
64 bytes from 10.0.2.2: seq=0 ttl=255 time=7.460 ms
64 bytes from 10.0.2.2: seq=1 ttl=255 time=0.308 ms
64 bytes from 10.0.2.2: seq=2 ttl=255 time=0.311 ms
--- 10.0.2.2 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.308/2.693/7.460 ms
3.
# ifconfig eth0
eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56
inet addr:10.0.2.15 Bcast:10.0.2.255 Mask:255.0.0.0
inet6 addr: fe80::5054:ff:fe12:3456/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:358 (358.0 B) TX bytes:804 (804.0 B)
Interrupt:25 DMA chan:ff
.
Slitaz-arm -2
1. download
# wget qemu-1.0.1.tazpkg
# wget qemu-arm-1.0.1.tazpkg
# wget slitaz-arm.img (3.3M)
2. install qemu & qemu-arm
# tazpkg install qemu-1.0.1.tazpkg
# tazpkg install qemu-arm-1.0.1.tazpkg
3. boot
# qemu-system-arm -M versatilepb -cpu arm1176 -kernel slitaz-arm.img &
# wget qemu-1.0.1.tazpkg
# wget qemu-arm-1.0.1.tazpkg
# wget slitaz-arm.img (3.3M)
2. install qemu & qemu-arm
# tazpkg install qemu-1.0.1.tazpkg
# tazpkg install qemu-arm-1.0.1.tazpkg
3. boot
# qemu-system-arm -M versatilepb -cpu arm1176 -kernel slitaz-arm.img &
2012-03-22
Slitaz-arm
slitaz-arm
1.
Kernel version: 3.1.9
Architecture: armv6
2.
# uname -a
Linux slitaz 3.1.9-slitaz #1 Thu Mar 22 12:33:31 UTC 2012 armv6l unknown
3.
# du -sh /
1.6M
4.
# cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 348.97
Features : swp half thumb fastmult edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : ARM-Versatile PB
Revision : 0000
Serial : 0000000000000000
5.
# dmesg | head
Linux version 3.1.9-slitaz (root@slitaz) (gcc version 4.5.2 (Sourcery G++ Lite 2011.03-41) ) #1 Thu Mar 22 12:33:31 UTC 2012
CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
CPU: VIPT aliasing data cache, unknown instruction cache
Machine: ARM-Versatile PB
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 8192
free_area_init_node: node 0, pgdat c0622808, node_mem_map c0640000
Normal zone: 64 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 8128 pages, LIFO batch:0
6.
# busybox | head -3
BusyBox v1.12.0 (2012-03-21 23:44:08 UTC) multi-call binary
Copyright (C) 1998-2008 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
2012-03-06
Slitaz -- raspi-Distributions
Distributions
1. What Linux distros will be supported at launch?
http://www.raspberrypi.org/faqs
[..]
Fedora, Debian and ArchLinux will be supported from the start. We hope to see support from other distros later. (Because of issues with newer releases of Ubuntu and the ARM processor we are using, Ubuntu can’t commit to support Raspberry Pi at the moment.) You will be able to download distro images from us as soon as the Raspberry Pi is released, and we will also be selling pre-loaded SD cards shortly after release.
2. RPi Distributions
http://elinux.org/RPi_Distributions#Distributions
3. Distributions
http://elinux.org/RPi_Software#Distributions
[..]
Source code and binaries for Raspberry Pi will be available at various places from launch, including pre-built Linux distributions.
Raspberry Pi Fedora Remix 14, developed by Seneca College, is the recommended distribution and pre-loaded SD cards with this distribution will be available shortly after the initial launch through the Raspberry Pi Store.
4. Downloads
http://www.raspberrypi.org/downloads
[..]
Fedora 14 Remix
Our recommended distribution for newcomers to Raspberry Pi and day-to-day use.
Torrent raspberrypi-fedora-remix-14-r1.img.gz.torrent
Direct download raspberrypi-fedora-remix-14-r1.img.gz
SHA-1 af24defe109b37435dfab07b7654974ad434c7eb
Default login root/
5. mirror
Raspberry Pi Distribution Downloads
Total number of mirrors: 96
Total estimated bandwidth: 180 Gbits/s
Total number of mirrors in this continent: 1
Total estimated bandwidth for this continent: 75 Gbits/s
File: debian6-17-02-2012.zip
File Size: 797.11 MiB
Raspberry Pi Distribution Downloads
Total number of mirrors: 96
Total estimated bandwidth: 180 Gbits/s
Total number of mirrors in this continent: 1
Total estimated bandwidth for this continent: 75 Gbits/s
File: archlinuxarm-01-03-2012.zip
File Size: 215.73 MiB
6. Raspberry Pi Fedora Remix 14
The Raspberry Pi Fedora Remix 14 was the first version of the Remix released.
SD Card Installation Using the dd Command
http://zenit.senecac.on.ca/wiki/index.php/Raspberry_Pi_Fedora_Remix_Installation
[..]
Steps:
Download the image (link to be provided after mirrors sync up)
.
1. What Linux distros will be supported at launch?
http://www.raspberrypi.org/faqs
[..]
Fedora, Debian and ArchLinux will be supported from the start. We hope to see support from other distros later. (Because of issues with newer releases of Ubuntu and the ARM processor we are using, Ubuntu can’t commit to support Raspberry Pi at the moment.) You will be able to download distro images from us as soon as the Raspberry Pi is released, and we will also be selling pre-loaded SD cards shortly after release.
2. RPi Distributions
http://elinux.org/RPi_Distributions#Distributions
Distributions
Arch Linux ARM | Debian ARM | Fedora ARM | Meego MER | Risc OS | |
---|---|---|---|---|---|
Latest version | 01/03/2012 | Squeeze (16/02/2012) | F14 Remix R1 | ||
First version | 01/03/2012 | Squeeze (16/02/2012) | F14 Remix R1 | ||
Type | Linux | Linux | Linux | Linux (embedded) | ARM RISC OS |
License | OSI GPLv2 | Core: OSI, mixed (GPLv2, BSD, etc) | OSI, mixed (GPLv2, BSD, etc) | OSI, mixed (GPLv2, BSD, etc) | Shared Source |
Memory footprint | ~34 MiB | ||||
Image/Installer | raw image | raw image | Fedora RPM: installer Windows Zip: installer Other Linux: Python script | ||
Packages | 4,416? | [1] | 16,464? | ~320 (core) |
3. Distributions
http://elinux.org/RPi_Software#Distributions
[..]
Source code and binaries for Raspberry Pi will be available at various places from launch, including pre-built Linux distributions.
Raspberry Pi Fedora Remix 14, developed by Seneca College, is the recommended distribution and pre-loaded SD cards with this distribution will be available shortly after the initial launch through the Raspberry Pi Store.
4. Downloads
http://www.raspberrypi.org/downloads
[..]
Debian “squeeze”
Reference root filesystem from Gray and Dom, containing LXDE, Midori, development tools and example source code for multimedia functions.Torrent | debian6-17-02-2012.zip.torrent |
Direct download | debian6-17-02-2012.zip |
SHA-1 | 4bf7a47151ab6f1835be53ec99d8d750861213d4 |
Default login | pi/suse |
Arch Linux ARM
Arch Linux ARM is based on Arch Linux, which aims for simplicity and full control to the end user. Note that this distribution may not be suitable for beginners.Torrent | archlinuxarm-01-03-2012.zip.torrent |
Direct download | archlinuxarm-01-03-2012.zip |
SHA-1 | 94ba748b1d0de704e5c4bd1335570fe1d23b38ba |
Default login | root/root |
Fedora 14 Remix
Our recommended distribution for newcomers to Raspberry Pi and day-to-day use.
Torrent raspberrypi-fedora-remix-14-r1.img.gz.torrent
Direct download raspberrypi-fedora-remix-14-r1.img.gz
SHA-1 af24defe109b37435dfab07b7654974ad434c7eb
Default login root/
5. mirror
Raspberry Pi Distribution Downloads
Total number of mirrors: 96
Total estimated bandwidth: 180 Gbits/s
Total number of mirrors in this continent: 1
Total estimated bandwidth for this continent: 75 Gbits/s
File: debian6-17-02-2012.zip
File Size: 797.11 MiB
Raspberry Pi Distribution Downloads
Total number of mirrors: 96
Total estimated bandwidth: 180 Gbits/s
Total number of mirrors in this continent: 1
Total estimated bandwidth for this continent: 75 Gbits/s
File: archlinuxarm-01-03-2012.zip
File Size: 215.73 MiB
6. Raspberry Pi Fedora Remix 14
- Release date: February 29, 2012
- Fedora package collection version: 14
- Kernel version: 3.1.9
- Architecture: armv5tel
SD Card Installation Using the dd Command
http://zenit.senecac.on.ca/wiki/index.php/Raspberry_Pi_Fedora_Remix_Installation
[..]
Steps:
Download the image (link to be provided after mirrors sync up)
.
2012-03-05
Slitaz -- raspi-git repo
git repo
https://github.com/raspberrypi
1. firmware
https://github.com/raspberrypi/firmware
firmware and opt/vc from original debian sdcard release
2. quake3
https://github.com/raspberrypi/quake3
a baseline Quake 3 which may be used for further development.
3. linux
https://github.com/raspberrypi/linux
kernel source
4. tools
https://github.com/raspberrypi/tools
toolchain and tool to produce kernel.img
5. initial patches
http://elinux.org/images/8/8a/Rpi-linux-patches-3.1.9.tgz
http://elinux.org/RPi_Software#Kernel
The kernel is now also available on https://github.com/raspberrypi/linux
6. bcm2708
http://www.cnx-software.com/2012/01/22/linux-kernel-3-1-9-for-raspberry-pi-released
[..]
The code related to Broadcom BCM2835 processor is referred as bcm2708 in the kernel and I can see committed related to the watchdog timer, the framebuffer, the VCHIQ driver (the driver sending messages to the GPU) and general commits for bcm2708.
For those interested in the messages used to communicate between userspace and the GPU, the VCHIQ driver code is located at drivers/misc/vc04_services in the tree. I haven't studied it yet, but as the platform should support graphics standards such as OpenGL and OpenMAX IL, most people should not really care about this interface as I suppose the OpenGL library (Mesa?) uses this driver.
https://github.com/raspberrypi
1. firmware
https://github.com/raspberrypi/firmware
firmware and opt/vc from original debian sdcard release
2. quake3
https://github.com/raspberrypi/quake3
a baseline Quake 3 which may be used for further development.
3. linux
https://github.com/raspberrypi/linux
kernel source
4. tools
https://github.com/raspberrypi/tools
toolchain and tool to produce kernel.img
5. initial patches
http://elinux.org/images/8/8a/Rpi-linux-patches-3.1.9.tgz
http://elinux.org/RPi_Software#Kernel
Kernel
The initial patches (Media:Rpi-linux-patches-3.1.9.tgz) are released against the 3.1.9 kernel - but may also work against later kernels.The kernel is now also available on https://github.com/raspberrypi/linux
6. bcm2708
http://www.cnx-software.com/2012/01/22/linux-kernel-3-1-9-for-raspberry-pi-released
[..]
The code related to Broadcom BCM2835 processor is referred as bcm2708 in the kernel and I can see committed related to the watchdog timer, the framebuffer, the VCHIQ driver (the driver sending messages to the GPU) and general commits for bcm2708.
For those interested in the messages used to communicate between userspace and the GPU, the VCHIQ driver code is located at drivers/misc/vc04_services in the tree. I haven't studied it yet, but as the platform should support graphics standards such as OpenGL and OpenMAX IL, most people should not really care about this interface as I suppose the OpenGL library (Mesa?) uses this driver.
2012-03-03
raspi - GPU
GPU - bootloader
start.elf: The GPU binary firmware image, provided by the foundation.
http://elinux.org/RPi_Software
[..]
BootRom
The boards do not include NAND or NOR storage - everything is on the SD card, which has a FAT32 partition with GPU firmware and a kernel image, and an EXT2 partition with the rootfs.
We're not currently using a bootloader - we actually boot via the GPU, which contains a proprietary RISC core (wacky architecture). The GPU mounts the SD card, loads GPU firmware and brings up display/video/3d, loads a kernel image, resets the SD card host and starts the ARM.
You could replace the kernel image with a bootloader image, and that would work fine.
[..]
GPU
The GPU provides APIs for Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode.
The GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24 GFLOPs of general purpose compute and features a bunch of texture filtering and DMA infrastructure - the Raspberry Pi team are looking at how they can make this available to application programmers.
The GPU blob is an 18MB elf file, including libraries. It does an awful lot. [3]
http://www.raspberrypi.org/faqs
[..]
Is there a GPU binary?
Yes. The GPU binary also contains the first stage bootloader.
what means “GPU binary”?
Reply ↓
jamesh on September 1, 2011 at 8:19 pm said:
The is a binary blob that runs on the GPU – this is closed source, but there are drivers that run on the Arm that give access to the GPU features ie OpenGLES, OpenVG etc. The device boots the GPU first, the bootloader loads the GPU with this binary blob, then Linux is booted on the Arm.
start.elf: The GPU binary firmware image, provided by the foundation.
http://elinux.org/RPi_Software
[..]
BootRom
The boards do not include NAND or NOR storage - everything is on the SD card, which has a FAT32 partition with GPU firmware and a kernel image, and an EXT2 partition with the rootfs.
We're not currently using a bootloader - we actually boot via the GPU, which contains a proprietary RISC core (wacky architecture). The GPU mounts the SD card, loads GPU firmware and brings up display/video/3d, loads a kernel image, resets the SD card host and starts the ARM.
You could replace the kernel image with a bootloader image, and that would work fine.
[..]
GPU
The GPU provides APIs for Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode.
The GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24 GFLOPs of general purpose compute and features a bunch of texture filtering and DMA infrastructure - the Raspberry Pi team are looking at how they can make this available to application programmers.
The GPU blob is an 18MB elf file, including libraries. It does an awful lot. [3]
http://www.raspberrypi.org/faqs
[..]
Is there a GPU binary?
Yes. The GPU binary also contains the first stage bootloader.
what means “GPU binary”?
Reply ↓
jamesh on September 1, 2011 at 8:19 pm said:
The is a binary blob that runs on the GPU – this is closed source, but there are drivers that run on the Arm that give access to the GPU features ie OpenGLES, OpenVG etc. The device boots the GPU first, the bootloader loads the GPU with this binary blob, then Linux is booted on the Arm.
Raspberry Pi Fedora Remix 14
The Raspberry Pi Fedora Remix 14 was the first version of the Remix released.
- Release date: February 29, 2012
- Fedora package collection version: 14
- Kernel version: 3.1.9
- Architecture: armv5tel
http://zenit.senecac.on.ca/wiki/index.php/Raspberry_Pi_Fedora_Remix_14
Slitaz -- raspi - boot
start.elf: The GPU binary firmware image, provided by the foundation.
0. download util-linux-ng-mount
http://dl.dropbox.com/u/1024195/util-linux-ng-mount-2.19.1.tazpkg
# mount -V
mount from util-linux 2.19.1 (with libblkid support)
1.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# file debian6-17-02-2012.img
debian6-17-02-2012.img: x86 boot sector; partition 1: ID=0xc, starthead 0, startsector 2048, 153600 sectors; partition 2: ID=0x83, starthead 3, startsector 157696, 3256320 sectors; partition 3: ID=0x82, starthead 3, startsector 3416064, 391168 sectors, code offset 0xb8
2.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# parted debian6-17-02-2012.img
GNU Parted 2.4
Using /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
unit s
(parted) print
print
Model: (file)
Disk /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img: 3862528s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 155647s 153600s primary fat32 lba
2 157696s 3414015s 3256320s primary ext4
3 3416064s 3807231s 391168s primary linux-swap(v1)
(parted) unit b
unit b
(parted) print
print
Model: (file)
Disk /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img: 1977614336B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1048576B 79691775B 78643200B primary fat32 lba
2 80740352B 1747976191B 1667235840B primary ext4
3 1749024768B 1949302783B 200278016B primary linux-swap(v1)
(parted) quit
quit
root@slitaz:/media/DATA/raspi/debian6-17-02-2012#
3.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# mount -o loop,offset=1048576 -t vfat debian6-17-02-2012.img /mnt/raspi-fat
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# ls -l /mnt/raspi-fat
total 28072
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm128_start.elf
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm192_start.elf
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm224_start.elf
-rwxr-xr-x 1 root root 16528 Feb 13 18:53 bootcode.bin
-rwxr-xr-x 1 root root 141 Feb 14 18:38 cmdline_testmode.txt
-rwxr-xr-x 1 root root 127 Feb 14 18:52 cmdline.txt
-rwxr-xr-x 1 root root 16412020 Feb 14 18:47 kernel_emergency.img
-rwxr-xr-x 1 root root 3990020 Feb 13 18:53 kernel.img
-rwxr-xr-x 1 root root 314691 Feb 13 18:53 loader.bin
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 start.elf
root@slitaz:/media/DATA/raspi/debian6-17-02-2012#
4.
https://github.com/raspberrypi/firmware/tree/master/boot
firmware / boot
name age history message
..
file arm128_start.elf 6 days ago
file arm192_start.elf 6 days ago
file arm224_start.elf 6 days ago
file bootcode.bin 6 days ago
file cmdline.txt 6 days ago
file kernel.img 6 days ago
file kernel_emergency.img 6 days ago
file loader.bin 6 days ago
file start.elf 6 days ago
5.
http://elinux.org/RPi_Advanced_Setup
[..]
Setting up the boot partition
The boot partition must contain:
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: The OS kernel to load on the ARM processor. Normally this is Linux - see instructions for compiling a kernel.
cmdline.txt: Parameters passed to the kernel on boot.
Optional files:
config.txt: A configuration file read by the GPU. Use this to override set the video mode, alter system clock speeds, voltages, etc.
vlls directory: Additional GPU code, e.g. extra codecs. Not present in the initial release.
Additional files supplied by the foundation
These files are also present on the SD cards supplied by the foundation.
Additional kernels. Rename over kernel.img to use them (ensure you have a backup of the original kernel.img first!):
kernel_emergency.img : kernel with busybox rootfs. You can use this to repair the main linux partition using e2fsck if the linux partition gets corrupted.
Additional GPU firmware images, rename over start.elf to use them:
arm128_start.elf : 128M ARM, 128M GPU split (use this for heavy 3D work, possibly also required for some video decoding)
arm192_start.elf : 192M ARM, 64M GPU split (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)
.
0. download util-linux-ng-mount
http://dl.dropbox.com/u/1024195/util-linux-ng-mount-2.19.1.tazpkg
# mount -V
mount from util-linux 2.19.1 (with libblkid support)
1.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# file debian6-17-02-2012.img
debian6-17-02-2012.img: x86 boot sector; partition 1: ID=0xc, starthead 0, startsector 2048, 153600 sectors; partition 2: ID=0x83, starthead 3, startsector 157696, 3256320 sectors; partition 3: ID=0x82, starthead 3, startsector 3416064, 391168 sectors, code offset 0xb8
2.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# parted debian6-17-02-2012.img
GNU Parted 2.4
Using /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit s
unit s
(parted) print
Model: (file)
Disk /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img: 3862528s
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 2048s 155647s 153600s primary fat32 lba
2 157696s 3414015s 3256320s primary ext4
3 3416064s 3807231s 391168s primary linux-swap(v1)
(parted) unit b
unit b
(parted) print
Model: (file)
Disk /media/DATA/raspi/debian6-17-02-2012/debian6-17-02-2012.img: 1977614336B
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Number Start End Size Type File system Flags
1 1048576B 79691775B 78643200B primary fat32 lba
2 80740352B 1747976191B 1667235840B primary ext4
3 1749024768B 1949302783B 200278016B primary linux-swap(v1)
(parted) quit
quit
root@slitaz:/media/DATA/raspi/debian6-17-02-2012#
3.
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# mount -o loop,offset=1048576 -t vfat debian6-17-02-2012.img /mnt/raspi-fat
root@slitaz:/media/DATA/raspi/debian6-17-02-2012# ls -l /mnt/raspi-fat
total 28072
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm128_start.elf
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm192_start.elf
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 arm224_start.elf
-rwxr-xr-x 1 root root 16528 Feb 13 18:53 bootcode.bin
-rwxr-xr-x 1 root root 141 Feb 14 18:38 cmdline_testmode.txt
-rwxr-xr-x 1 root root 127 Feb 14 18:52 cmdline.txt
-rwxr-xr-x 1 root root 16412020 Feb 14 18:47 kernel_emergency.img
-rwxr-xr-x 1 root root 3990020 Feb 13 18:53 kernel.img
-rwxr-xr-x 1 root root 314691 Feb 13 18:53 loader.bin
-rwxr-xr-x 1 root root 2001244 Feb 17 12:02 start.elf
root@slitaz:/media/DATA/raspi/debian6-17-02-2012#
4.
https://github.com/raspberrypi/firmware/tree/master/boot
firmware / boot
name age history message
..
file arm128_start.elf 6 days ago
file arm192_start.elf 6 days ago
file arm224_start.elf 6 days ago
file bootcode.bin 6 days ago
file cmdline.txt 6 days ago
file kernel.img 6 days ago
file kernel_emergency.img 6 days ago
file loader.bin 6 days ago
file start.elf 6 days ago
5.
http://elinux.org/RPi_Advanced_Setup
[..]
Setting up the boot partition
The boot partition must contain:
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: The OS kernel to load on the ARM processor. Normally this is Linux - see instructions for compiling a kernel.
cmdline.txt: Parameters passed to the kernel on boot.
Optional files:
config.txt: A configuration file read by the GPU. Use this to override set the video mode, alter system clock speeds, voltages, etc.
vlls directory: Additional GPU code, e.g. extra codecs. Not present in the initial release.
Additional files supplied by the foundation
These files are also present on the SD cards supplied by the foundation.
Additional kernels. Rename over kernel.img to use them (ensure you have a backup of the original kernel.img first!):
kernel_emergency.img : kernel with busybox rootfs. You can use this to repair the main linux partition using e2fsck if the linux partition gets corrupted.
Additional GPU firmware images, rename over start.elf to use them:
arm128_start.elf : 128M ARM, 128M GPU split (use this for heavy 3D work, possibly also required for some video decoding)
arm192_start.elf : 192M ARM, 64M GPU split (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)
.
raspi - BCM2835
BCM2835-ARM-Peripherals
http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf
http://www.raspberrypi.org/archives/615
[..]
We've been leaning (gently and charmingly) on Broadcom, who make BCM2835, the SoC at the heart of the Raspberry Pi, to produce an abbreviated datasheet describing the ARM peripherals in the chip. If you're a casual user, this won't be of much interest to you, but if you're wanting to port your own operating system or just want to understand our Linux kernel sources, this is the document for you.
2012-03-02
Slitaz -- Raspi -2
1.
pi@raspberrypi:~$ uname -a
Linux raspberrypi 3.1.9 #2 Sat Feb 18 12:14:02 ICT 2012 armv6l GNU/Linux
2.
pi@raspberrypi:~$ cat /etc/debian_version
6.0.4
3.
pi@raspberrypi:~$ dmesg | head -12
Linux version 3.1.9 (jaufranc@debian) (gcc version 4.4.5 (Debian 4.4.5-8) ) #2 Sat Feb 18 12:14:02 ICT 2012
CPU: ARMv6-compatible processor [410fb767] revision 7 (ARMv7), cr=00c5387d
CPU: VIPT aliasing data cache, unknown instruction cache
Machine: ARM-Versatile PB
Memory policy: ECC disabled, Data cache writeback
On node 0 totalpages: 65536
free_area_init_node: node 0, pgdat c03d22fc, node_mem_map c03ee000
Normal zone: 512 pages used for memmap
Normal zone: 0 pages reserved
Normal zone: 65024 pages, LIFO batch:15
sched_clock: 32 bits at 24MHz, resolution 41ns, wraps every 178956ms
pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
4.
pi@raspberrypi:~$ cat /proc/cpuinfo
Processor : ARMv6-compatible processor rev 7 (v6l)
BogoMIPS : 376.01
Features : swp half thumb fastmult edsp java tls
CPU implementer : 0x41
CPU architecture: 7
CPU variant : 0x0
CPU part : 0xb76
CPU revision : 7
Hardware : ARM-Versatile PB
Revision : 0000
Serial : 0000000000000000
pi@raspberrypi:~$
Slitaz -- Raspberry Pi
Raspberry Pi
An ARM GNU/Linux box for $25. Take a byte!
1.
http://www.raspberrypi.org/
http://elinux.org/RPi-hub
The Raspberry Pi is a credit-card sized computer board that plugs into a TV and a keyboard. It's a miniature ARM-based PC which can be used for many of the things that a desktop PC does, like spreadsheets, word-processing and games. It also plays High-Definition video.
Features
- Broadcom BCM2835 700MHz ARM1176JZFS processor with FPU and Videocore 4 GPU
- GPU provides Open GL ES 2.0, hardware-accelerated OpenVG, and 1080p30 H.264 high-profile decode
- GPU is capable of 1Gpixel/s, 1.5Gtexel/s or 24GFLOPs with texture filtering and DMA infrastructure
- 256MB RAM
- Boots from SD card, running the Fedora version of Linux
- 10/100 BaseT Ethernet socket
- HDMI socket
- USB 2.0 socket
- RCA video socket
- SD card socket
- Powered from microUSB socket
- 3.5mm audio out jack
- Header footprint for camera connection
- Size: 85.6 x 53.98 x 17mm
2. download
Raspberry Pi Releases 1st SD Card Image (Debian)
http://www.raspberrypidownload.co.uk/debian/download/debian6-17-02-2012.zip
http://dl.dropbox.com/u/45842273/zImage_3.1.9
http://dl.dropbox.com/u/1024195/qemu-1.0.1.tazpkg
http://dl.dropbox.com/u/1024195/qemu-arm-1.0.1.tazpkg
3.
# unzip debian6-17-02-2012.zip
debian6-17-02-2012.img
debian6-17-02-2012.img.sha1
4. install qemu-arm-1.0.1
# tazpkg install /pathtodir/qemu-1.0.1.tazpkg
# tazpkg install /pathtodir/qemu-arm-1.0.1.tazpkg
# qemu-system-arm -cpu ? | grep 1176
arm1176
5. start qemu-arm
# qemu-system-arm -M versatilepb -cpu arm1176 -m 256 -hda debian6-17-02-2012.img -kernel zImage_3.1.9 -append "root=/dev/sda2" -serial stdio
Default login pi/suse
$ startx
That's it.