# Embedded System for a image processing task

I initially posted this on SuperUser, but I suspect, this might be a better place to post this (sorry for the double post!): I'm quite a beginner to embedded systems, but am eager to learn more. I've used an Arduino previously and quite recently purchased a Raspberry Pi (but not used it as much). I have numerous questions that I haven't found answers to when using Google, thus the post! I'd appreciate any insight (apologies in advance if my questions seem too naive!).

Recently, I've been working on some image processing code using a few image processing libraries. My code is written using C++ in Visual Studio on Windows XP. My program uses multi-threading capabilities at various stages primarily because some of the processing tasks are quite time consuming. My intention is to transfer this working code and install the back-end libraries (OpenCV, Boost etc.) onto an embedded system that is merely connected to a camera.

1. From my search, it seems that the top of the line, embedded system are at a maximum of 500 Mhz (http://microcontrollershop.com/product_info.php?products_id=3790). This really surprises me, we have i7 Quadcore PCs running at 2.5 Ghz available quite commonly for Laptops/Desktops. Why haven't embedded systems caught up to this increase then? Also they maximum memory I've seen is 500 MB. Again, desktop PCs average at-least 4 to 8 GB commonly. Do we get dual/quad-core embedded systems? What is the top of the line system currently available?
2. To allow for an initial easy transition, I've heard that XP Embedded or Windows Embedded 7 Standard (embedded variant of Win 7) are alternatives. Here is a difference chart. However, I've read at a few places that Windows Embedded 7 has more RAM support and thus I am inclined to it for that reason alone. Can someone add to this please? I know I could use Linux Embedded or VxWorks as well, but at this point I believe I would run into numerous OS related issues with my code if I continued and perhaps the libraries might not be supported ...
3. I've come across PC-104 systems a few times in my searches. Reading about this, it seems to be standard. Are there better alternatives? I'm a little confused with the top-of-the-line ARM processors I've found since I don't think they satisfy the minimum hardware requirements to run the OS (1 GHz x86 or amd64 processor).
4. My main reason to transition to this is to learn something cool in the process and have a dedicated solution that is headless and designed to perform just one specific task (hopefully in a real-time manner).
• If you are looking for i5 or i7 class embedded computers, have a look at things like the AdvancedTCA or CompactPCI platforms. But be prepared for pricing that's out of reach for most hobbyists. – The Photon Feb 22 '13 at 5:55
• You know what kind of image processing you want to do. How much physical space do you have available, and how many watts is your power budget? – Kaz Feb 23 '13 at 3:40
• Kaz: Power and physical dimensions are not a concern for me at the moment. In terms of image processing tasks: I want to take pictures, perform stereo processing on them and generate a 3D Point cloud. – c0d3rz Feb 25 '13 at 20:17

You basically have two possibilities:

• Go for ARM
• Go for Intel (x86/amd64)

It depends how you define your embedded system. There are ARM modules available with four cores, each one running at 1GHz+ (e.g. the Toradex Apalis family is a Multicore ARM Cortex-A9 module but others are available as well).

If you have high requirements regarding RAM and processor speed, probably the better option is to select a Core-i7 or something similar (check out the COMExpress families from e.g. Congatec) and build that into a smaller system.

Now, how do you decide on the right operating system:

• Windows Embedded will only run on x86/amd64 architecture; There is no support for ARM processors. This can be considered as a stripped down version of Windows for PCs.
• Windows Embedded Compact is available for ARM as well, consider it being the typical Mobile Device platform which is often optimized for reduced power consumption. Also, you are able to add your own drivers easily. So if you want to dive really deep down, this might be your preferred choice.
• Thanks for the clarity of classifying the two major options (ARM/ and non-ARM) and the respecitvely supported OS. I also appreciate the recommendation of the COMExpress family, I hadn't seen these before ... – c0d3rz Feb 22 '13 at 20:17

Look at the industrial / "embedded" x86 compatible motherboards containing AMD APUs. en.wikipedia.org/wiki/AMD_Accelerated_Processing_Unit en.wikipedia.org/wiki/List_of_AMD_Accelerated_Processing_Unit_microprocessors

Some motherboards have NVIDIA GPU platforms like the Ions.

en.wikipedia.org/wiki/Nvidia_Ion

www.amd.com/us/products/embedded/apu/Pages/embedded-apu.aspx

Intel has some embedded boards with Intel GPUs on them and various ATOM series processors.

For "basic" image processing you can use the x86 CPU and if you have something that is very parallel you can always run simple pixel / compute shaders or maybe OpenCL on the 'GPU'.

These boards are often in the $150 or less range for consumer models and under$600 or so for the industrial embedded SBC units in low quantities, and they typically have many more GFLOPS CPU performance and GFLOPS single precision GPU performance than a competitive type of media DSP / SOC media processor. The power consumption typically isn't great being in the 2-6W peak range, but that's entirely sufficient for something like a car mounted PC or large battery powered mobile unit or something like that. The nice thing is that you can get the software programmed and tested on a generic desktop PC easily without any painful porting effort to a radically different embedded target.

If you really need smaller size than some fractional ITX form factor or smaller power consumption then you can look at some kind of "tablet" oriented development board that has a multi-core ARM CORTEX A-whatever or similar CPU maybe with a GPU and which can run Linux, Android, Tizen, or something convenient. Freescale's newer i.MX series or TI Pandaboard or some such thing. If you hook up the camera via a USB 2 HS host port going to a webcam or custom USB camera then you don't need much custom GPIO / camera interface ports on the SBC expanding hardware choices and decreasing the custom software burden. Of course several of the units will have a digital parallel interface for a CMOS image sensor too though not all will.

www.freescale.com/webapp/sps/site/prod_summary.jsp?code=IMX53QSB#

www.freescale.com/webapp/sps/site/taxonomy.jsp?nodeId=018rH3ZrDR988D

www.omappedia.com/wiki/PandaBoard

Edit -- here's AMD's nice embedded solutions guide. http://www.amd.com/us/Documents/AMD_Embedded_Solutions_Guide.pdf

A newer high end APU based consumer board (not fanless or least cost) http://www.legitreviews.com/article/2110/1/

So you have your choice of mini-ITX, nano-ITX, other form factor, under 5W power consumption or higher performance/power options, or some of the lower power/performance/size ARM boards. Most have GPUs that can be used for image processing as well as the CPUs, and generally all have the capacity for 512MBy to several GBy of reasonable performance DDRx DRAM for software and images. Some of the mini ITX size consumer boards start around \$79 for motherboard/CPU. You can boot from the network or from USB flash drive for a nice embedded functionality.

There's also the leopardboard or craneboard and such alternatives to pandaboard if you're looking for an older image processing platrorm that's still reasonable.

• Thanks for the reply whatever102904. I was aware of the Pandaboard but not the others. For the moment, size isn't an issue. I've been going through your links and the performance specs do seem better than what I've found myself. Unfortunately, the latter machines are ARM based and do not support Windows Embedded, thus I'm a little hesitant at this point. – c0d3rz Feb 22 '13 at 20:14
• Thanks for the edit. The AMD's embedded solution guide was an extremely informative read and I've also sent out a few emails to some of the vendors ... – c0d3rz Feb 25 '13 at 22:30