Candy wrote:
You do get access to the SDIO interface.
SDIO is NOT SD memory card interface. It's first. Second, - I don't see even SDIO in the list of accessible interfaces. It's a mode of operation of an SD controller, which doesn't seem to be accessible directly, normally.
Add to that that the Ethernet controller is attached to the USB controller, which you do get access to, and that the wifi/bluetooth chip is attached to the second SDIO interface that you also have control of, and your argument falls completely flat.
Not it doesn't. On a normal ARM machine, you have every peripheral accessible, and it's done a normal way. For example, you see (in the TRM) - we have 3 SD/MMC controllers, their bases are <bases>, here, their version compliance and capabilities are <blablabla>, see, it's their block scheme, SD controller is SDA HC compliant, so go read that, it's how it works, or, if it's not SDA compliant (it not necessarily should), - here is its HC interface, here is register description, every bit is described. Finally, good manuals give you programming guides, notes and algorithms' block schemes - you have all the set of information to do a real hardware programming, you really program that peripheral - isn't this the joy of OS development? When I first programmed SD controller, it was on the Mips Creator CI20, it's controller had all that descriptions. I didn't look anywhere else except jz4780 TRM (the SoC) and SD specification. And it succeeded almost instantly! The only thing, I screwed up the bus width, chose 4 bits, whereas only one line was configured. Just one bug and then it worked! It was amazing. And why it was so successful? because there was satisfactory description of how to do that. And that was SD controller programming. Not VC mailbox programming. That's the difference.
There is no such thing on RPi. Instead you only program ARM MCU, on a closed VC machine, and that ARM MCU is a toy, allowed to do a very small set of platform control.
Please also note that on x86/x64 systems you always retain a SMM that can contort anything you do and deny you access to literally everything. It can even emulate whole devices for you. This is not worse than x86 - and I will argue it's actually better.
Not fair comparison. In reality, that legacy SMM doesn't hide from you almost 90% of peripherals like VC does. Doesn't hide system address space of the CPU, turning it into an MCU. It runs at the same CPU at all. SMM is an auxiliary thing, what does it really control? Fan speed, CPU throttling? Anyway, it's a system management component of the FW, we might say, it's a BIOS's variant of the UEFI runtime services, roughly speaking, every FW exposes runtime services to the OS, it's not even close to what VC does, SMM doesn't stick its nose into peripherals it has nothing to do with. By the way, on real ARM machines, you can do DVFS - dynamic voltage frequency scaling by yourself, whereas RPi only lets you play with I2C, UART and GPIO!
For sure - "so much better".
This is the worst approach ever devised. I just thought, what if everybody else in the ARM landscape will start to mimick this idiocy? It's very uncomfortable. I hope they won't do that, because otherwise, I have no will to even look at that crippled down thing.