The $9 CHIP Computer Reveals Its Open Source Details
makezine.com
makezine.com
https://olimex.wordpress.com/2015/06/05/how-to-get-in-the-ne...
https://www.kickstarter.com/projects/1598272670/chip-the-wor...
Of course, time will tell...
Personally, I'd rather give my money to guys like Olimex anyway -- a notch more expensive, however these guys are /spotless/ at making everything as open as they can, and in fact, they probably 'suffer' for it as many companies seem to use their (open) designs commercially...
The CHIP uses an Allwinner R8 SoC, which uses a Mali400 GPU (source: http://www.cnx-software.com/2015/06/07/allwinner-r8-module-d...). RPi uses a VideoCore IV GPU.
While there is no open source driver for Mali400 available, it has been partially reverse-engineered (lima). For the VideoCore IV there is an open source driver available, but the SoC on the RPi is special in the sense that when booting the VideoCore IV is the core to start, which later in the boot process starts the ARM core(s). On the VideoCore IV there runs a proprietary OS (probably RTOS) that is based on ThreadX. So most things the open source driver does are simply calls to this RTOS via a mailbox.
Nevertheless the RPI developers market the VideoCore IV GPU as the most open embedded GPU available. Indeed it is the only one, where an official open source driver is available and thus it is more friendly towards bare-metal programmers that want to write their own OS. On the other hand, the RTOS running on the VideoCore IV is a large blob in an instruction set that has not yet been deciphered.
And how big is that whole binary blob running on VideoCore IV?
Good thing there is:
No public documentation (without NDA) is available for the USB controller of the RPi (there is still an open source driver in the Linux kernel for it that is based on this non-public datasheets) made by Broadcom. I personally consider the action that the Linux developers also include drivers based on secret datasheets into the kernel as a violation of the spirit of open source, but I digress.
Also the Raspbian developers (from the Raspberry Pi foundation) include proprietary software into Raspbian, say, Mathematica. While probably useful, this surely isn't open source.
So there are more criteria on which to judge a SoC than whether it is open source, say, whether there are complete and free datasheets (no NDA) available or whether the SoC is also available in small amounts for hackers (Broadcom is said to be very compicated in this area). Or how much open-source the de-facto standard GNU/Linux distribution (since this is what you'll probably want to use) for the SoC is.
TLDR: Openness or open-sourceness is much more complicated.
https://github.com/raspberrypi/firmware/blob/369d99df38de4c3...
All the blobs are in https://github.com/raspberrypi/firmware/tree/master/boot and carry the name start.*\.elf .
There are four versions of this firmware blob that can be used:
start.elf: the default version
start_cd.elf: a minimal version of the firmware that must be used if you set the GPU memory below some threshold, and only supports few features.
start_x.elf: an extended version of the firmware blob which included some extra free codecs (source: https://www.raspberrypi.org/forums/viewtopic.php?f=29&t=1933...).
start_db.elf: A version of start_x.elf with additional debug assertions (source: https://github.com/raspberrypi/firmware/issues/408).
http://cowlark.com/cgi-bin/fossil.cgi/piface/doc/stable/doc/...
It's a bootcode.bin which runs a simple shell via a serial terminal which allows you to do things like up and download data, examine memory, etc. No ARM code involved anywhere! It doesn't initialise the SDRAM yet (although I think I know how).
Right now it's built using a hacky port of the Amsterdam Compiler Kit, which generates lousy code. I've tried porting both gcc and LLVM and ran into a brick wall --- they're both vile. I'm hopefully going to have a go with libfirm soon, which looks more tractable. However, Volker Barthelmann's non-open-source vbcc has experimental (and apparently very good) VC4 support: http://www.compilers.de/vbcc.html
https://github.com/hermanhermitage/videocoreiv
I believe it was figured out from a combination of analysis of the blob, examining the patents (which contain quite a lot of information), trial-and-error, and careful examination of the fragments of VC4 source released by Broadcom (their big source release a year or so back contained quite a lot). I know that at least one person wrote a program which would run arbitrary instructions on the Pi and analyse the state of the registers afterwards, which is a neat trick.
The VC4 is a really nice processor, BTW. Dual core, lots of registers, efficient instruction packing, 64x64x8bit vector unit, integrated single-precision FPU using the integer registers (no double-precision, alas), 1kB on-chip lookup table... but, bizarrely, no adc or sbc instructions, so 64-bit arithmetic is hard. Very weird.
Where can I find it?
Does that mean you can't use the Pi as a dev board for the SoC and then build a product based on that? Or I suppose you'd license the video driver when you go to buy the SoC for production?
Source: working in embedded, trying to fix how we release exactly these things.
I mean it's like wearing pants. It's fine if you do not want to wear pants at home but once you're at work and doing something in a professional context it seems like a reasonable minimum bar to expect everyone to live up to.
That's also why my host /sbin/reboot is "echo Wrong terminal, you idiot"