According to Moore’s law, the number of transistors in integrated circuits increases exponentially every two years. Gordon Moore originally posited this theory in 1965. Today, it’s still relevant (to a slighter degree). We can have powerful single-board computers such as the Raspberry Pi 4. System on a Chip (SoC) packages such as the BCM2835 allow SBCs processing power that far exceeds the capabilities of supercomputers in the 60s. But what is the BCM2835, and how does it work? The following guide will investigate these questions and provide answers for them.
What is the BCM2835
Raspberry Pi overview featuring BCM2835 chip Source: Wikimedia Commons
The BCM2835 is an SoC that Broadcom Semiconductors developed. As we have briefly mentioned in the introduction, SoC packages such as the BCM2835 make devices such as the Raspberry Pi Zero possible. Additionally, The Raspberry Pi Foundation features the BCM2835 in the Raspberry Pi A, A+, B, B+, and the Raspberry Pi Zero W. Moreover, you can find it in rare models such as the Raspberry Pi Compute Module 1.
Since it’s an older chip package, you’re unlikely to find it in newer microcontrollers or single-board computers. However, its capabilities and peripherals are still worth exploring.
Raspberry Pi B featuring BCM2835 Source: Wikimedia Commons
- Core Processor Architecture: ARM
- Processor Speed: 700 MHz
- Core Processor Sub-Architecture: ARM1176JZF-S processor
- RAM: 512MB
- SODIMM Board Size: 6.5x3.0 cm
- Edge Connector Pins: 200
- On-Board Flash Memory: 4GB eMMC
- GPU: VideoCore IV GPU running at 250MHz
BCM2835 ARM Peripherals
Raspberry Pi Model A that uses BCM2835 SOC
Source: Wikimedia Commons
The BCM2835 accessible peripherals are as follows:
System Timer: This peripheral supplies a single 64-bit free-running counter and four 32-bit counter channels.
Interrupt controller: Sends interrupts to the processor when it receives signals from other peripherals such as the system timer or when any of the status bits are set.
GPIO: The BCM2835 has 534 general-purpose input/output lines. Moreover, these lines equally reside in two different banks. Each GPIO pin has more than one function within the BCM2835 package.
USB: Refers to the universal serial bus core that the VideoCore multimedia processor/GPU utilizes. The BCM2835 uses Synopsys IP’s build.
PCM / I2S Audio: Pulse code modulation/ Inter-IC Sound. The BCM2835 uses this peripheral to present audio. Essentially, it’s an advanced peripheral bus that provides both input and output audio streams and speech sound. It features four interface signals: PCM_CLK (bit clock), PCM_FS (frame sync signal), PCM_DIN (serial data input) and PCM_DOUT (serial data output)
DMA controller: The direct media access/access media controller. It allows other peripherals and I/O devices to access memory directly. Furthermore, it requires little-to-no participation from the CPU as it facilitates this function. You must set it up to use the physical hardware addresses peripherals.
I2C master: The master controller for the I2C/IIC serial bus.
I2C / SPI slave: Acts as the slave for the I2C/IIC serial bus.
SPI (SPI0, SPI1, SPI2): Serial peripheral interface bus. The SPI allows you to connect multiple devices to a single group of pins by allocating them to different corresponding chip-select pins.
PWM: Pulse width modulator. It features dual independent streams with fixed frequencies. UART (UART0, UART1): The BCM2835 features two universal asynchronous receiver transmitters. The first is a mini UART (UART), while the second is a PL011 UART.
BCM2835 vs. BCM2711
BCM2711 Chip Source: Wikimedia Commons
The version numbers may trick you into thinking that the BCM2835 is newer than the BCM2711. However, this is not the case. Once again, Broadcom released the BCM2825 in 2013. Contrastingly, they released the BCM2711 in 2019.
As you may expect, the BCM2711 features many improvements over the BCM3825. For instance, the BCM2711 uses a 64-bit ARMv8-A processor with four arm cores and threads. It has a clock frequency of 1.5 GHz.
On the other hand, the BCM2835 uses a single core and thread 32-bit microprocessor. Once again, it features a clock speed of 700 Mhz. However, it has a turbo capability to boost clock frequencies up to 1 GHz. Unfortunately, this feature is absent from the BCM2711.
Nevertheless, another area where the BCM2711 triumphs over its predecessor are the amount of memory it has. It has a max memory capacity of 8GB, far more than the BCM2835’s 512MB.
These are only some of the most notable differences. The BCM2711 is overall a far more advanced and sophisticated package than the BCM2835. The Raspberry PI Foundation (Raspberry Pi Ltd) uses the BCM2711 in their Raspberry Pi 4 single-board computers. It capitalizes on the improvements of x64 (64-bit) architecture over x86 (32-bit) architecture.
Raspberry Pi with BCM2836/35
What is the BCM2835 library?
The BCM2835 library is a C library that allows you to access GPIO and other peripheral functions on the BCM2835 chip on the RaspberryPi. It will enable you to program the SoC directly.
Can Raspberry Pi run 32-Bit?
Early iterations of the Raspberry Pi used 32-bit processors. For instance, the BCM2835 uses 32-bit microprocessor architecture. Thus, it was able to run the 32-bit operating system. Modern Raspberry Pis are still capable of running 32-bit software and operating systems despite using microprocessors with 64-bit architecture. This capability is due to them being backward compatible with software that uses 32-bit architecture.
Does Raspberry Pi 4 use BCM2835?
The Raspberry Pi 4 does not use the BCM2835. Broadcom has discontinued the BCM2835. The Raspberry Pi 4 uses the BCM2711, a far more robust package.
In this guide, we explored the BCM 2835. If you’re using an older Raspberry Pi, it may be using the BCM 2835 SoC. While it’s an outdated SoC, it’s still valid. Especially for beginners working on small projects such as FM transmitter circuits. You don’t have to purchase a Raspberry Pi to use the Broadcom BCM 2835. Alternatively, you can buy the package separately and connect it to your circuit or PCB.