Raspberry Pi is probably the most popular single-board computer of all time. The computer comes from British non-profit organization Raspberry Pi Foundation, headquartered Caldecote. By the time of its introduction, it represented the cheapest SBC on the market. Raspberry Pi B represents the second generation of this minicomputer (a successor to Raspberry Pi A) and newly brings the pair of USBs and 100Mbit Ethernet interface.
Raspberry Pi B is based on a SoC (system on chip) with the model designation Broadcom BCM2835. It conceals one ARM1176JZFS core (ARM11) standardly clocked at 700MHz. ARM1176JZFS core is based on the ARMv6 architecture, and includes hardware FPU and VFP extension (more about ARM extensions at ARMv6 vs ARMv7 ). SoC also contains VideoCore IV GPU clocked at 250MHz (24 GFLOPS), supporting OpenGL ES 2.0 or hardware encoding/decoding H.264 1080p30. Video output is provided by HDMI 1.3a (supporting audio over HDMI) and by composite analog output using RCA (cinch) connector. Analog video output utilizes an integrated DAC converter in the BCM2835. Another analog output is stereo audio output. There is, however no more DACs on BCM2835, so both audio channels are condemned to use PWM outputs of SoC. For smoothing of the PWM signal, it passes through RC filter, which, however, also limits the maximum achievable frequency. Thus, the sound quality is poor as well as the output power. BCM2835 SoC is directly connected to MIPI-CSI and DSI interfaces via differential busses. SoC is also directly driving 26 GPIO pins on the main GPIO header. You can find all of the most common busses on this header – I2C, SPI, I2S, UART (UART is used for the Linux terminal by default). GPIO pins are using 3.3V TTL logic levels and are not 5V tolerant. When GPIO pins are used to drive some actuators, you could also encounter a problem with an internal pull resistors. Some of the GPIO pins are pulled-down, some are pulled-up by default. Default pin state (state when board is powered up) is not quite easy to setup and transient states during the system boot (before your application takes over the control) could be a problem. RAM chip is DDR3 and is mounted directly on top of SoC BCM2835 package.
The Raspberry Pi B main new feature is the implementation of LAN9512 chip, a USB hub and 100Mbit Ethernet controller in one package. This chip is therefore behind both of RPi B innovations (which differs it from the RPi A) – a pair of USBs and 10/100 Ethernet. LAN9512 is connected to the BCM2835 SoC again via USB. This, of course, represents a bottleneck (one USB line transfers a pair of equally fast USBs + Ethernet).
The power supply for SoC and the entire board is solved by three linear regulators (1.8V, 2.5V and 3.3V). Power circuit is therefore not very energy-effective (over 30% of the energy is dissipated as a heat). Supply voltage is provided via dedicated micro USB connector and passes through 1.1A resettable fuse (polyswitch).
|CPU||single-core ARM1176 at 700MHz|
|I/Os||RJ45 for 10/100 ethernet, HDMI (full size), MIPI-CSI for camera, DSI connector for display, 1x micro USB for power, 2x USB2.0 host, 26pin GPIO header, 3.5 jack for audio out, RCA for analog video out|
Consumption measurement was performed without connected USB peripherals. Used OS is Raspbian Wheezy, started to console.
|halted board||0.57W (114mA)|
|system idle (LAN disconnected)||1.75W (350mA)|
|system idle (LAN connected)||2.05W (410mA)|
|CPU at 100% (LAN connected)||2.3W (460mA)|
Raspberry Pi B requires an operating system capable of running on ARMv6 architecture with Thumb and VFPv2 extensions. Raspberry Pi Foundation has released a new modified port of Debian operating system for this specific configuration, called Raspbian. Raspbian is specifically based on Debian armhf (which was originally targeted for ARMv7 – Thumb-2 and VFP3D16). Modified system among other things, includes proprietary GPU drivers for the VideoCore IV, many Device tree overlays for controlling various peripherals or utilities for easy configuring of RPi. The system includes a graphical desktop environment LXDE. Raspbian uses its own package repository to ensure compatibility with the custom system build.
For purposes of software development you can choose from the classic range of programming languages available on Linux. Although Python is sometimes perceived as the preferred language for RPi (Python IDE is pre-installed and Python is recommended by RPi creators), there is no problem to develop natively in C/C++ or use anything else. For example popular IDE Code::Blocks (available in the official repository) works at RPI fairly smoothly. Of course, you can use gcc (g++) directly and compile only via terminal. Compiling on such slow machine, however, is not very comfortable (most likely the reason why interpreted languages scoring on RPi) and it worth considering rather using of cross compiler running on some more powerful machine. Thanks to wide and productive community there is lot of libraries for controlling of GPIO ports (Pigpio, WiringPi or RPi.GPIO). Also many “drivers” (overlays or kernel modules) are available for various external circuits. Very easy is also to use the buses on GPIO header (I2C, I2S, SPI, UART).
There are many other available alternative operating systems, respectively their ports like Ubuntu mate, OSMC, OpenELEC or OpenWrt. Different systems are often dedicated to serve some specific purpose and are intended for use of RPi as embedded device.
Working on on it…
Raspberry Pi B is now not belonging among the fastest or the cheapest single board computers. Due to use of linear stabilizers it is also not well suited for low power (battery powered) applications. It could be also noted that the mounting holes on the board are oddly (asymmetrically) positioned are not compatible with any other future RPi model. Raspberry Pi B thus can be considered obsolete. For new designs it could be recommended to use a newer Raspberry Pi B+.