Channels ▼

Mike Riley

Dr. Dobb's Bloggers

Easy-to-Use ARM System on a Board

May 04, 2012

If you haven't heard of the open platform-friendly, inexpensive Linux-powered computing platform known as Raspberry Pi by now, you will be for years to come. Just as the Altair hailed the era of the personal computer, the Raspberry Pi is ushering in a new era of powerful, stunningly low-cost PCs on a board not much larger than an Arduino Uno. Think of a traditional PC motherboard with integrated graphics, network, and keyboard/mouse (USB) IO shrunken down to the size and slightly higher cost of an Arduino, and you'll get the idea of what the Raspberry Pi is all about.

More Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

Driven by an ARM11 processor, the Raspberry Pi has 256 megabytes of on-board RAM and a hardware-accelerated OpenVG GPU capable of pushing 24 gigaflops of 1080p 30 frame per second goodness. One of the many demos that shipped with the unit I received was an HD video file of the well-known Blender-generated Big Buck Bunny computer animated short. The full-screen video playback of the cartoon was breathtaking. Every detail of every object in every scene was vibrant, sharply focused, and not a hint of aliasing, lag, frame tearing, or artifacts. Each time I showed this portion of the Raspberry Pi demo to family, friends, and tech associates, they couldn't believe such amazing performance was coming from a hardware board that cost less than most.

The Raspberry Pi's only significant omission when compared to a traditional PC motherboard is a real time clock (RTC) or for that matter, a BIOS. But in today's networked world, pulling accurate time off a time server is easy enough to do. Plus, the addition of a clock crystal and a battery to drive it would have inched the cost higher and made the board's footprint unnecessarily larger.

Development Experience

Cold booting the Raspberry Pi using the ARM version of the Debian "squeeze" distribution was fairly peppy. Launching GUI applications does take noticeably longer than a traditional PC, but not unbearably so. Desktop apps are also slower on movement redraw, akin to running the latest release of Ubuntu on a first-generation Pentium PC. Fortunately, if you prefer interacting with the terminal, programs like vi and even the Python interpreter are satisfyingly quick. However, compiling apps with GCC takes quite a long time. One of the first environments I installed after getting oriented to the Raspberry Pi was the Ruby Version Manager (well, I had to "sudo apt-get install git" first), followed by Ruby v1.9.3 compiled from source, followed by the Rails v3.2.3 web framework. It took almost an hour to get to the point of typing "rails –v" to confirm that all went well. But once I had the Rails development environment running, I found the rails app construction experience to be just fine.

And because Python is already installed on the platform, running "sudo apt-get install python-pip" followed by "sudo pip django" installed the latest Django v1.4 web framework much faster than Ruby on Rails, taking under 2 minutes to launch the Python interpreter and type "import django; django.VERSION" to confirm that installation.

Naturally, the RAM constraints restrict Rails and Django apps deployed on the Raspberry Pi from becoming too resource intensive, but I found the hardware excellent for my prototyping and testing needs. Storage wasn't an issue either, thanks to the ability to connect external capacity via the USB port (or if you prefer, an NFS or Samba mount). If you're already comfortable working with Linux, you will have no trouble at all working with the Raspberry Pi.

Future Potential

Electronics enthusiast retailers like Adafruit Industries are already working on hardware extensions to the Raspberry Pi platform that will hook into the board's expansion pins akin to the way PCI boards expand a PC motherboard's capabilities. One of Adafruit's first products along this line is its Prototyping Pi Plate Kit that makes it much easier to wire up DIP chips, LEDs, and sensors to the Raspberry Pi board. As more people leverage these expansion kits, the similarly priced Arduino board and accompanying shields will likely be replaced by the Raspberry Pi ecosystem. I can tell you that after using the Raspberry Pi for over a week, I probably won't buy another Arduino board, unless Arduino raises the bar and produces a board even more powerful with more IO and functionality at an even lower price than the Raspberry Pi. I don't see that happening any time soon.

Recommendation

If you're still reading this review and haven't already ordered your own Raspberry Pi board from an electronics retailer like Element 14, then I recommend you do so now. The delivery waiting list is growing by the day, and the Raspberry Pi community is growing exponentially as a result. The number of exciting uses we'll be seeing over the next few months will be stunning, going far beyond what other embedded electronics products have been able to previously deliver in a such a potent price/performance ratio. Even if your hardware budget is constrained, the Raspberry Pi is a must have for any computing enthusiast. It will blow you away.

Related Reading






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 


Video