Psst, kid... Wanna learn how to hack?
The £25 computer to teach youngsters real computing skills
Analysis Despite all the excitement and expectation encompassing the RaspberryPi, the most remarkable thing about this low-power credit card-sized computer is its price tag: little more than £20 for a fully functional system capable of, among many things, 1080p video playback and hardware-accelerated graphics.
The British-designed Pi is being heralded as the saviour of modern IT education in UK classrooms, one that will raise a new generation of young bedroom hackers - in the old sense of the word 'hacking', that is, to ingeniously cobble stuff together to make cool new things.
The UK needs to pull its socks up to equip youngsters with the skills they need to survive in a world that is thoroughly hooked on web-connected technologies and yet poorly inoculated against digital disease. The RaspberryPi's engineers want to give kids some cheap and educational kit that won't break or turn into a nightmare to maintain.
But, putting politics aside for a moment, what really grabs your attention is how small and cheap the damn thing is. How this feat of engineering is possible is easy to answer, though: creating a computer that's deliberately priced to be as affordable as a school textbook is all about having the right connections - and we don't just mean the wiring on a PCB.
The Pi is powered by a 700MHz ARM-compatible processor with hardware support for OpenGL ES 2.0 and Blu-ray-grade playback (1080p30 H.264), and features 256MB of RAM, TV, HDMI and audio outputs, a USB port, a Flash memory card slot, 100MBit Ethernet and a number of I/O pins for a serial port and general purpose hacking. This is all fitted on a low-cost 85.60mm x 53.98mm board that's about 20mm high, weighs 40g and is powered from a 5V supply.
No, you haven't clicked through to an El Reg story from mid-2000. Remember, this is a tiny bit of kit aimed at getting hackable technology into the hands of anyone who can afford $35 (£22), and, er, a telly and assorted peripherals. However, parents won't have to worry about the home PC getting wrecked by their teenagers' handmade software, cash-strapped school labs could be kitted out for less than £1,000, and kids can begin to toy with a system that draws a single watt and is easier to develop tightly written software on than today's nightmare of software frameworks and compilers.
It's also a handy price tag for geeks and hackers, especially those tempted by the recent rash of announcements from the ARM scene, who have been put off by the reassuringly expensive price tags and the lack of availability of development boards to date. The pre-production RaspberryPi is in the hands of about 50 beta testers at the moment, and the first production run of 10,000 units is expected to go on sale in December.
So how do you make something so small and cheap?
First of all, the RaspberryPi's processor is really designed for mobile products: it's a gaming and multimedia graphics chip - the Broadcom BCM2835 - with an ARM1176JZF-S core and floating-point maths unit bolted inside for good measure.
The GPU, Broadcom's Videocore IV, has capabilities equivalent to a first-gen Xbox, and has its own proprietary instruction set and architecture that is closely guarded by Broadcom; the compiler for it is not available. But the ARM side is a standard v6 core that is well supported by GCC, ARM GNU/Linux and various other open and closed source developers.
Therefore you get high-end mobile graphics capabilities, and a general purpose processor thrown in for free, inside a small system-on-a-chip package that doesn't need any cooling, even after eight hours of HD video playback, which can play Quake 3 in 1920x1080. Soldered directly on top of the processor package is the RAM, which along with the lack of a cooling fan saves an immense amount of space and some cost.
Next, there's no onboard battery-backed clock, which is used to maintain a real-time record of the time and date when the board is switched off. On the Pi, the operating system must grab these settings from the web or network (using NTP) or get the user to type them in after power-on.
The USB and Ethernet hardware is packed into one chip, the SMSC LAN9512; there are no other clunky buses present that are found on larger motherboards, no PCIe or SATA IDE for example to take up space.
The SD card slot can be found underneath this pre-production RaspberryPi board
There's no onboard chunky flash memory: when the board is powered up, the GPU starts executing instructions from a small boot ROM that locates the GPU's firmware and a kernel for the ARM core in a FAT16 or FAT32 partition on the memory card or USB drive plugged into the Pi. Once the firmware and kernel are running, the operating system can be booted from the memory card, USB drive or over the network.
The reliance on removable boot memory also ensures the kit can't be bricked, not even by the most inquisitive or vindictive schoolchildren.
There's also no Wi-Fi chipset, although you're welcome to try a USB or Ethernet-connected adapter to get your Pi hooked up to your wireless network (or wait for Wi-Fi functionality to be added, maybe). The Pi's engineers have also placed connectors wherever it suits their design: you get a compact and cheaper six-layer PCB (or possibly four-layer in future), but it resembles a mad electronic spider with all sorts of cables spiralling out from it. Not all the I/O lines are taken from the processor; some are located near the centre of the chip package and extending those out to a user-accessible header would cost too much.
Next page: Productivity on the cheap
Way to miss the point
In school they are NOT ALLOWED to program the machine in case they bugger them up. They are an expensive resource that need to be maintained.
This device give them the ability to bugger it up to their hearts content. You just need to re-image the SD card and you are back to square one. No IT support needed. And even if you somehow break the hardware - its $35 so not going to break the bank.
You are right - it is just another Linux board. But it's CHEAP and therefore more accessible. But because its JALB (c) it can run almost any language you want for free. Unlike all those school computers running Windows. And there is the software angle. Yes, its all down to the software, but you need a device to write software on, and this is a good one.
And I think you are wrong about the market for low level coding skills declining. We are constantly needing low level coders, and there simply are not enough good ones. There is a constant demand for software for low level devices as so much stuff has some sort of SW requirement nowadays. There is also the fact that a good low level coder is generally better at high level coding and debugging because they have a better understanding of how the device works under the skin. A low level coder can work at the high level. Not the other way round.
PRINT "Hello, world! "
They were a lot more polite than I ever was.
This is a fantastic idea. I'll buy one to support them even if I can never make the time to tit about with it,
"Come on people, this is 2011, not 1981. The "nightmare of frameworks and compilers" is what allows 90% of developers to earn a living programming."
You don't become a successful civil engineer or architect by being ignorant of basic materials science. Knowing the acceptable loading factors and stress ranges is kind of crucial: get it wrong and your building will fall down. You can delegate this low-level work once you've reached the heady heights of building major skyscrapers, but understanding the basic foundational elements of your line of work is most emphatically not optional.
Programming is the same: there's a big difference between knowing a handful of APIs, and knowing how a computer actually *works*. And the only certain way to learn the latter is to try doing it. In a low-level language like assembly language, or C. (I'm not aware of any CPUs that can do OOP at the assembly language level, so procedural it is.)
Knowing how a computer "thinks" is the only way to really understand programming at a deep level. It helps no end in debugging. It also comes in handy if you have to code for constrained platforms and embedded devices, as well as in situations where optimisation skills are useful. (E.g. in game development.)
If you'd suggested an environment like Unity (www.unity3d.com), I'd agree with you, but JS in a *browser*? Seriously?
of only teaching high level coding is bloatware; and don't we all love that!
And yet you already use Broadcom product everyday. In your iPhone, HTC, Nokia, in your laptop, your desktop, in your router, in the switches used on the internet backbone.
If you don't want to use their product, don't use the internet.