Join Now Join Now Home

Post 4

AllBoards600.jpg
 
One of the most important functions of an embedded system is the ability to connect to a variety of external signals. For my smart home energy efficiency dashboard, the signals come from a variety of sensors and use a range of different protocols. Ideally, I'd like to handle these signals in software by creating a custom driver for each signal, or better yet, by configuring an existing driver to connect each sensor. In some cases, the sensors may require additional signal conditioning or interface circuitry to before being connected to the embedded processor board. Sometimes it's appropriate to use a small microcontroller to provide the interface or signal conditioning. This provides additional flexibility, but also requires programming a second processor. Where possible, I like to avoid programming and debugging multiple computer systems. With that in mind, I'm taking a close look at computing system selection.
 
Microsoft has teamed-up with six hardware partners provide a range of computing system options with a variety of different feature options. Special pricing is available for non-commercial use as part of the SPARK promotion. These prices vary from system to system depending on capability and included accessories, and each computing system is ready-to-run out of the box. Ready-to-run means different things to depending on your level of exposure to embedded systems. In most cases, these computers are ready for you to load an operating system onto the device via a bootloader. Many of the configurations of the boards are managed through standard BIOS at power-on. With the exception of the VIA Artigo which doesn't come with RAM or disk storage installed, the computers include the basic components load an operating system and run applications.
 
Deciding which computing system to choose can be an intimidating task. Each vendor offers a different board, and although several use the same processor, the features and peripherals available to the user vary from product to product. Cost and board size are other important factors to consider. The best place to start in the hardware selection process is the vendor websites. Data sheets are available at each website, along with pricing and ordering information. The data sheets provide varying levels of detail concerning each product, and it may be necessary to contact the vendors to get specific questions that aren't covered by the data sheets. To help get you started, I've put together a comparison chart of hardware specifications for all the vendors.
 
SPARKHardwareComp.jpg

 
Download the SPARK Hardware Comparison.pdf

 
So which board is right for you? That's up to you to decide depending on what features fit your product, and what cost fits your budget. Like many choices in life, there are trade-offs here. You can get a system with a Type II compact flash interface at the expense of digital I/O, or get a system with the SATA interface, but no SPI interface. This might not be meaningful to you now, but it warrants discussion as it may have a significant impact on how you develop your project.. Some functions, like I/O can be provided by an external add-on USB or serial device. If you need a Type II compact flash card and digital I/O, the digital I/O can be provided by an external processor via the USB interface.
 
Processors:
Starting with a look at the processors, all of the boards use an x86 compatible CPU from AMD, Marvell, or VIA. If high speed computation is important to you, the VIA C7 runs at the highest clock rate. That doesn't guarantee that your program will run fastest on the C7, but processor speed is a key consideration for straight-up number crunching. The C7 also has 128 KB of L2 cache. This fast-access memory stores your program's most frequently used information, reducing the amount of time required to recall this data for processing. All of the processors have reasonable cache sizes of either 66 KB or 128KB. It is also worth mentioning that all of the processors use DMA channels to move data around the computing system. This is very important. DMA is the computer equivalent of having an autopilot. The CPU can focus on important tasks, like crunching numbers or serving a webpage, while audio is being recorded in the background, for example. Without DMA, the CPU would have to stop crunching numbers in order to grab the latest audio interface data and move these audio samples onto the hard drive.
 
Memory and Storage:
The memory specifications for all the computer systems are not so uniform. The available RAM starts at 64 MB and goes up to 1 GB. Most people are aware of the value of lots of RAM when editing video or running Photoshop on a personal computer, but many might consider 1 GB of RAM outrageous and excessive for an embedded application. Again, the application will drive your selection process. An application that is processing image data, especially video, can consume large amounts of RAM. A 640 x 480 uncompressed color video stream will fill up 1.6 GB of memory each minute. If you intend to buffer video for your application, RAM may be your most important consideration. RAM is just part of the memory specification. You might not care to save any of the acquired video after you pass it through your fancy image analysis algorithm. If you do want to store the video (or audio samples, or temperature data or whatever else) when the power is turned off, make sure to consider the non-volatile memory availability. Many of the boards include onboard flash memory, some of the boards can connect with hard drives through EIDE (SATA), SDIO, or Compact Flash, and all the boards can connect with USB flash drives through their USB host interface. This provides many different methods to extend storage for programs and data regardless of which board you select.
 
Video:
Returning to video for a moment, there have been many times when I've needed to develop an embedded system with the ability to play video, display images, or have a user interact with a GUI. When working in the PC domain using Windows, OSX or Linux, development tools are readily available to create a rich multimedia user experience. Trying to replicate even a small portion of that experience using an embedded system often requires significant effort. For example, in 2006 I created single board computer system based on a Microchip PIC, complete with SD memory and a 128 x 64 monochrome LCD. It took a week of low-level debugging I/O signals just to turn a single pixel on or off in the LCD. After another couple of months, I had a custom operating system running, complete with a font library and a menu-driven graphical user interface. There were a few GUI libraries available for purchase, but they were very expensive ($6000+) and would have still required substantial time to integrate into my application. Today this project would have been much easier, especially since many of the microcontroller venders provide GUI widget libraries and reference designs. Even so, it still takes quite a bit of time to source an LCD, track down the complete datasheets, build interface boards, write and test device drivers, link to the GUI libraries, etc, and most of the third party products are still too expensive for a hobbyist. That development process does not make sense for most people, and I definitely want a better solution for my projects. Fortunately, all of the SPARK computer systems have display output capability. With the Special Computing Gumstix module, a separate board is required. All the other vendors' computer systems provide some combination of a VGA display connector or LCD panel connectors or both. I consider this a much better solution than buying an LCD and building a hardware/software interface from scratch.
 
Inputs and Outputs:
Probably the most complex choice in selecting an embedded system, from my perspective, is selecting among a variety of input and output options. Embedded CPU vendors generally have a catalog of processors with a wide selection of peripheral capabilities meant to facilitate connection to other devices such as sensors or motors. These features are not always integrated into microprocessors, so these systems frequently have a secondary chip or chips that work like translators and traffic cops by converting non-processor compatible signals like sounds into data-bus friendly packets, then move those packets into or out of the microprocessor memory when called upon to do so. Some of these inputs and outputs are familiar: several boards have PS/2 keyboard and mouse interfaces ad all the boards have UARTS for serial communications, with most providing RS-232 level translators. Ethernet is a category of it's own and it is a very important interface for moving data into and away from the computer. Only two of the boards don't have on-board RS-45 connectors for convenient ethernet connection. Analog and digital I/O is a requirement of many embedded projects. Most of the boards have auxiliary digital I/O that can be set up as inputs, outputs, or chip specific functions such as PWM output. These I/O lines are very handy for simple things like turning on an LED or controlling a motor, or more complex tasks such as implementing a non-standard serial communication interface with a sensor. A few of the boards have analog I/O as well via an audio interface. This provides the ability to capture or generate analog signals below 22.05 kHz.
 
Power Consumption:
All this processing takes power. All the computing system data sheets detail maximum power consumption of 12W or less, but most of the time maximum power is not needed. At these low rates of power consumption, and therefore low heat dissipation, fan-free operation is possible, and promoted with all of the boards. Even so, heat dissipation could become an issue if no air circulation is provided and the device is used in a hot environment (think car stereo system). The VIA product has a fan to keep the CPU cool with these limitations in mind.
 
The Watchdog Timer:
I'll mention one final feature before wrapping up this post. No matter how good of a programmer you are, you are dependent on very complex tools. Operating systems, compilers, and libraries contain millions of lines of code that allow you to build your application. The processors and development boards resemble bustling cities built by skilled chip designers, and the potential for a stray signal or line of bad code to lock-up a program is very high. I have become accustomed to using the watchdog timer feature of my processors in every embedded project that I develop, from the simplest LED flasher to medical device prototypes. I'm a little surprised to see that not all of the processors have a watchdog built in, but this functionality can be implemented by a third party chip when necessary.
 
SensorBlockDiagramFull.jpg

 
Now that I am quite familiar with all the hardware offerings, I can make an intelligent decision about hardware selection. For my first project, I want VGA output along with the USB host input in order to run a 7" LCD touchscreen. I also want configurable I/O. The Advantech and Keith & Koep boards meet these requirements and move to the top of the my list for my project needs. Next on my list is the VIA Artigo computer system. Even though it is one of the products that does not have configurable I/O, I'd like to come up with a way to interface external digital I/O using USB or the serial connections. The VIA product is very much like a compact PC and less like an embedded system compared to the other boards. I can take advantage of the computer-like features for this project and have a tool to add I/O to any of the boards. Creating this interface for the VIA Artigo will be useful for my future projects when the perfect peripheral set is not exactly what I want. Hopefully this SPARK hardware discussion provides helpful information to aid in selection of an appropriate board for your projects. My next post will cover putting the hardware to work.

Commentary

Text Comments (0)


2010 Challenge
NOW OPEN!
Round 2 ends in:
  Days
  Hours
  Minutes
  Seconds


Key Dates
  • April 27
    embeddedSPARK
    2010 SUMMER
    Challenge Opens
  • June 15
    R1 Closes
  • June 22
    R1 Winners
    Announced
  • August 31
    R2 Closes
  • September 7
    Winners/Finalists
    Announced
  • September 21
    Three Finalists Compete
    LIVE on Stage at
    ESC in Boston
This site hosted for Microsoft by Smooth Fusion, Inc.