The Pi was initially created as a cheap way to get kids into computer science, they didn’t foresee the closed off parts of the processor being an issue towards that goal. They just wanted a cheap computer for kids to learn on that wouldn’t be the end of the world if they broke it. I mean who is gonna want to run an Open Source VideoCore?
THEN, us “grown up” geeks came along and was like “OHHHH, a cheap Linux SBC… Yes Please…” and brought out the initial run on day one.
So ever since then they were kinda stuck with Broadcom unless they wanted to redo a ton with another manufacturer.
To Bens and Raspberry Pis credit, they have managed to get Broadcom more open than they were, Initially we didn’t even have a data sheet for the processor.
Edit: Pre-coffee brain even more prone to typos then when I’m caffeinated…
Working with the same vendor consistently to iterate on a very similar design each time is ideal.
Sorry, my brain is not fully in gear yet. Do you mean the changes between the generations of the Pi?
I've always said that an old PC (but not too old, because retrocomputing has driven up prices then) is probably the best for that. Can be bought for next to nothing or even free, has extensive compatibility with lots of software, and also decades of detailed documentation.
By only have a single platform to support out the box you are getting rid of having to support multiple hardware configurations which could cause headaches for newcomers on day one. Remember it was basically an attempt to remove the roadblocks of getting people into CS. One of those roadblocks is getting people to "hello world".
IMO its a simailar reason to why Arduino worked so well, sure we could push people to using any other microcontrollers but by having single known board (atleast to start with) everyone is in the same boat and makes it eaiser (and cheaper) to offer support and lowers the barrier of entry imo. Basically is solving the fragmentation issue.
Is it the best way to learn? That depends on how you look at things. IMO it makes it a great stepping stone to get into the field which can then lead on to other things/interests, but you will probally learn more earlier on by skipping the "spoon feeding" stage but that (imo) comes with a steeper learning curve which could drive people away from the subject.
I know I delayed my own learning of the NRF platform to start with simply because at the time the toolchain was a PITA to get started with (esp on an unclean machine that had other compilers installed) so on a number of times I got fed up trying to get to "hello world" I would put it down and come back to it at a later time. However that process of less handholding did teach me more about the toolchain.
I generally agree on the simple, common approach being a great draw for Arduino and its related education. I was going through school around the time when arudino took off. IMO, older vendor toolchains were just painful by comparison. Licensed compilers ($$ license), janky IDEs that were death by 1000 cuts, having to learn different port masks (etc) for initializing different microcontrollers, IO libraries for each microcontroller, proprietary programmers (devices to load compiled software to the microcontroller). IMO, this is where FPGAs are largely still stuck in nowadays.
Though it probably wasn't all that bad. My experiences with the bad side of things largely stems from the PIC lineup. I still have trusted configurations of MPLAB + C Compiler that work vs others I just could never get working. Still have the PIC programmer. Some earlier arm tooling (armv6 era) was quite like this, too. Luckily, it has all opened up quite a bit. Either arudino-level ease of use or even drag and drop. The latter did exist in the armv6 era, since I have a Freescale Kinetis that operates like that, minus the simple IDE & compiler of the arduinos.
Simple IDE also means simple install, operation, and licensing to me. There may be a great paid IDE for the Kinetis, but the moment I have to start juggling more logins, node/floating license files, web-only environments, etc, I just remember it as time wasted on superfluous nonsense.
But looking back, back in the day when we had to walk uphill both ways in the snow to compile and write (get off mah lawn! :-P) I'm grateful I did learn "how the glue was made" instead of just using something ready made. But older grumpier me just wants to get shit done so I'm happy those days are pretty much behind me, but I'm ready to dust them off again if it was really needed.
It's also worth remembering that originally the Pi wasn't maker/OSS focused - the goal was to have a computer cheap enough to be used for computing education in schools. In effect a modern day successor to the BBC Micro.
In the context of the goals and constraints the "minor" binary blob required to make it run was irrelevant. Even more so as basically every other similar SoC has exactly the same issue. The Broadcom parts presumably continue to remain competitive for their capability level and so they keep getting used but now thanks to the success of the Pi there is the will and capability of going full OSS.
Creating a computing platform is - no matter the CPU vendor - one hell of an effort, often involving bunches of binary blobs of questionable quality, NDAs, buggy, outdated or plain lacking documentation and lots of money. The more effort you can save yourself (such as by using a product you already have experience with), the better.
Worth noting too that there is an open source driver for Arm's own Mali GPUs.
https://www.collabora.com/news-and-blog/blog/2021/06/11/open...
It's been pointed out elsewhere but briefly there is a VLIW processor (the "VPU") that is initially in charge of the entire boot sequence before handing off control to the main ARM cores; the bootcode.bin firmware for RPi devices is exactly this code. This includes things like bringing up PLLs and the on-board UART before handing off control to the ARM core where "userspace" code runs.
There are many free RISC-V implementations, and several free GPU drivers for various hardware families, but there is no combination of the two in any meaningful sense right now. If I had to guess I'd say ImgTec is probably one of the ones you could expect to pop up in an SoC somewhere, since I doubt ARM or Qualcomm are going to license their GPUs outside their families... ImgTec recently started contributing some code to Mesa but otherwise have historically been pretty hostile. So the immediate speculation doesn't look great at the moment but who knows what could happen.
Arm GPUs are also licensable by anybody, they were x86 phones with them back when those were still a thing.
And the SoC can do all the stuff my Rpi 2b does, and more (has a proper audio codec, for one, real gigabit ethernet, working suspend to ram, etc.), does suspend to ram, accelerated video decoding, and has much more open documentation... Rpi 2b's soc is pretty terrible usability wise comapred to A64.