60

I've seen the System on Chip of Raspberry Pi referred to usually as "BCM2835" (e.g. on Wikipedia), but sometimes as "BCM2708" (e.g. sources for Linux SPI driver are in bcm2708.c, or in comments to my other question).

Which is right, or are both - why? Specially, if there are inconsistencies in datasheets for both, which shall be understood as "more important"?

akavel
  • 1,216
  • 3
  • 12
  • 15

5 Answers5

24

Further to Steve's answer, there is a discussion here on the git hub issue log for linux drivers discussing how the drivers should be labeled. The pertinent posts are:

popcornmix:

Technically 2708 is the family, and 2835 is a specific implementation. We now know that 2835 is the only implementation in the family that can run linux, (and there won't be new models of this family), so it probably doesn't matter which model is used, although it should be consistent.

lp0:

So it would be reasonable to name all the drivers 2708 but the specific device tree file 2835? (assuming that if there is ever another model of that family that can run linux it would need a different list of devices)

Jon Egerton
  • 3,083
  • 2
  • 22
  • 32
  • Another comment suggests that maybe "BCM2708 is the CPU component which is part of the BCM2835". Some links to first-hand evidence would be nice... (also, I posted this question because I'd like something more than what I've already found in first Google result) – akavel Jun 29 '12 at 11:44
  • 1
    I tried to find some. The broadcom data sheet is linked here: http://www.raspberrypi.org/wp-content/uploads/2012/02/BCM2835-ARM-Peripherals.pdf. However it makes no reference of the BCM2708 number. As far as I can see the only place those two numbers appear together are on posts asking this sort of question. – Jon Egerton Jun 29 '12 at 11:50
22

Actually the discrepancy is due to the designation of the silicon and the chip package. Originally there was the silicon die which is known as BCM2708, all initial development was done around this.

In a stacked 9x9 package with 256MB of DRAM it is then known as BCM2763. (Stacked is when you literally bond the DRAM silicon on top of the processor and put bond wires down onto the substrate)

But when the memory is POP'd (package on package, the DRAM package is attached to the top of the processor package) then it was known as BCM2835, this is the device that then had the ARM enabled.

Later versions of the chip follow the same scheme, there are now three pieces of silicon, BCM2708, BCM2709 and BCM2710 and three packages BCM2835, BCM2836 and BCM2837.

Aurora0001
  • 6,308
  • 3
  • 23
  • 38
GSH
  • 496
  • 3
  • 2
  • I'm assuming that since the Pi 4 and Pi 5 have external DRAM, they dropped the BCM283x names? Because the Pi 4 seems to be exclusively referred to as BCM2711 and the Pi 5 as BCM2712 – Cole Tobin Feb 05 '24 at 12:35
16

Technically 2708 is the name for the family of chips, and 2835 is the specific chip in the Pi. As to which datasheet supersedes the other, I would chose the BCM2835 (specific) over the BCM2708 (family).

Steve Robillard
  • 34,687
  • 17
  • 103
  • 109
  • 1
    Hard citation needed. Another poster suggests that maybe "BCM2708 is the CPU component which is part of the BCM2835". Excuse me, but why am I to believe you, not him? – akavel Jun 29 '12 at 12:56
  • 1
    As the "other poster" - I'd like to say that it was speculation based on the kernel sources. I have no hard evidence either ... and we really should have some sort of canonical (preferably Broadcomm) source answer. – Maria Zverina Jun 29 '12 at 13:09
  • 1
    @MariaZverina In this particular case such a canonical source may not be available from anyone - since even getting full details on the chip requires an NDA. As a result a more pragmatic approach may be called for. Let me ask a question as means of getting the context for the question. What are you trying to do that you can't as a result of this naming question? – Steve Robillard Jun 29 '12 at 16:05
  • @MariaZverina and akavel I just came across this video on YouTube http://www.youtube.com/watch?v=5jEVBK7P1GA of Geert van Leuw talking about the chip in the Pi and he refers to it as the 2835. As a source of information on the Pi hardware I think you will have agree that it does not get much better. – Steve Robillard Jul 16 '12 at 09:58
6

It is worth realizing that the ARM core is not a primary part of the SoC, but an auxiliary core stuck on the side, behind a system MMU. The main (boot) processor is the VideoCore, which performs early initialization, sets up the system MMU and boots up the ARM core.

Most likely bcm2708 refers to the main part of the SoC containing the VideoCore processor and peripherals (look at wikipedia's table of VideoCore SoCs, notice how no bcm27xx part has an ARM core).

Based on broadcom's driver source code release, I actually get the impression all VC4 SoCs are based on the bcm2708, while VC3 is bcm2707. There are are at least three bcm2708 revisions (a0, b0, c0) though, and a0 differs sufficiently to have #ifdefs all over the place and quite a few headers of its own. There's also an exception for "VC4 big island" whose main header is not included, but I can't really find much about it, although this remark is an interesting one.

So it makes sense for drivers to be referring to the 2708 (especially if they were developed by broadcom).

I'm not sure what to make of the rpi2 reporting bcm2709... there are numerous statements that the bcm2835 and bcm2836 SoCs differ only in the ARM subsystem and the peripheral base address (i.e. slightly different system MMU config), so it seems highly likely it is in fact also bcm2708 based, but the info available is rather limited. I wonder if someone just bumped the number to deal with code that assumes bcm2708 implies an ARM11 core (while in fact it doesn't imply any ARM core at all).

Edit: The newly released bcm2836 quad-A7 doc confirms it is also based on the bcm2708.

Matthijs
  • 161
  • 1
  • 2
  • 1
    I believe the BCM2709 is ARMv8. ARMv8 is AArch64 (ARM-64), and it means the hardware has extensions like crc32, pmull, aes, sha1 and sha2. –  Jul 27 '16 at 18:34
  • 1
    Ehm, have you read my answer at all? BCM2708 just refers to the main part of the SoC (VideoCore 4 + peripherals), no ARM. See e.g. broadcom's header release to get an idea of what it includes.

    The BCM2835/6/7 (and many other parts) were then constructed by sticking an arm11/quad-a7/quad-a53 ARM subsystem (respectively) onto its side. This however doesn't have much to do with the rest of the SoC.

    – Matthijs Jul 29 '16 at 10:16
0

My search for this question was prompted by this page

Note the response from command cat /proc/cpuinfo

...

Hardware : BCM2708

Revision : 1000002

slomobile
  • 39
  • 1
  • Hm, interesting! Although, in light of the other answers, I believe it still doesn't solve the situation enough - it can still be both family name, or specific implementation name, or something else... – akavel Aug 31 '12 at 13:29