Mi impression for first version of RPi B and RPi 2 B+ was good.
Once I became familiar with the hardware and the philosophy of handling data trees and control through overlays, I detected two problems: the fragility of the SD card in the face of power failures, and the slow speed of this device type.
As a result, I focused the applications on running in memory, I arranged an alternative buffer power supply system with a signal for a controlled shutdown of all systems, and sufficient power autonomy time for it to be completed.
Simultaneously, I installed an adapter for each of the SDIO bus systems where the SD card and eMMC memory were connected. Initially, I started using a secondary, high-quality storage via SPI.
However, SPI was slow and power-intensive; the four signals—MISO (Master In Slave Out, sends data), MOSI (Master Out Slave In, receives data), SCK (Serial Clock receiver to tx sync), and CS (Chip Select from SPI Bus)—did not provide the necessary data transfer speed.
I had to deal not only with the adaptation to 3.3V, but also with the 1.8V adaptation, which allowed me, after modifying the kernel, the boot overlays, and other elements, to use the other four SDIO lines that allowed it to work faster and at a much higher speed, with UHS units instead of DS/HS, through said SDIO communication interface.
You can configure SDIO Clock(25Mhz-208Mhz) to media at GPIOs 22(CLK),23(CMD),24(DAT0),25(DAT1),26(DAT2),27(DAT3), on SD host/eMMC or pinout. Token commands are 48 bit on SPI mode, one bit(DS/HS,3.3V) or four bits(UHS, 1,8V) data lines.
The result was acceptable, for the stack of RPi units, their connections to physical and logical applications, but as @J_J_Sloan points out, it’s pretty, and going through that effort again when they switched to a superior architecture, with a different ABI, wasn’t convenient to continue, and I didn’t use the new RPi versions, except for the RPi Zero, which carries the BCM from my development version.
RPi’s went through those systems: RTOS, Alpine, Debian, BSD derivatives, and many others, even some university practice OSs (ZeOS) for computer science students.
Now they’re just a memory, stored away, that should still work. It was great learning so much, dedicating countless hours to that hobby. They sit next to the Stellaris Launchpad LM4F120, Beagle Bone Black, Beagle Bone, Arduino Uno, Arduino Mega, Atmel ATTYNY44A and 817-XMINI, Onion Omega, Onion Omega2, Nvidia Jetson TX2, Jetson Nano, and other development systems and devices I’m currently testing.
But everything has its time and place. I appreciate what it have given me, and I continue to move forward, because otherwise I would still be writing code in FORTRAN and COBOL on the DIGITAL PDP-11, or on the VAX8200, and then in BASIC with my Sinclair ZX81, and then Spectrum, or MSX, before the 8086 architecture with MS-DOS arrived at my country, Catalonia.
As they say, it was nice while it lasted, but that’s water under the bridge now. These were learning experiences for every situation. Time was passed XD