Gumstix Overo review

Posted by Cliff Brake on 2010-02-08 | 19 Comments to Read

Based on the interest and number of embedded modules currently available, it appears that the OMAP3 CPU from TI will be very popular in the general purpose embedded Linux market.  One of the OMAP3 modules available is the Overo from Gumstix.  As the company name suggests, this module looks about like a stick of gum, but smaller, as shown in the photo below.  The Gumstix module provides a lot of functionality in a very small package.  It is reasonably priced, and is an excellent way to quickly create a product that has advanced functionality such as a high powered CPU (OMAP3), high speed USB, DSP, 3-D graphics acceleration, etc.  For an example of the OMAP3 performance compared to previous generations of ARM processors, see this article.

Overo size comparison to a US dime

Overo size comparison to a US dime

The module contains all the core components, and can then be attached to a custom baseboard using the two high density connectors shown in the above photo.  There are 70 signals on each of the two connectors.  BEC provides a spreadsheet of the Overo signals to assist in designing a custom baseboard.

Due to the high level of component integration, the Overo has very few components on the module.  As shown in the below photo, there are really only 3 major visible components.  The flash and RAM is stacked on top of the CPU.  The PMIC contains all the required power managment circuitry, as well as Audio and USB interfacing functionality.

Major components on the Gumstix Overo

Major components on the Gumstix Overo

The Overo module must be used with a baseboard.  Gumstix provides several development baseboards.  For production, a custom baseboard is typically created.  The Gumstix baseboards are reasonable cost, so they could be used for prototyping or low volume production if they have the required functionality.  Below is a photo of the Summit baseboard that provides DVI video out, audio, USB host and OTG, and an expansion connector with a number of signals.

Gumstix Summit baseboard (overo is not installed)

Gumstix Summit baseboard (overo is not installed)

Below is the Palo baseboard from Gumstix that can be used to interface with a LCD display.  The Palo board contains a resistive touch screen controller, and circuitry required to interface with a LCD.

Palo baseboard with Overo installed

Palo baseboard with Overo installed

Display connected to Palo baseboard.  Note the tape applied to the display to keep from shorting to components on baseboard.

Display connected to Palo baseboard. Note the tape applied to the display to keep from shorting to components on baseboard.

The Overo does not include an Ethernet controller, so you typically use a USB-Ethernet adapter for development.  Below shows a typical development setup.

Typical USB-Ethernet connection through a USB hub.

Typical USB-Ethernet connection through a USB hub.

One of the things about the OMAP3 that makes it very attractive for embedded development is the amount of software support, and the number of development and production solutions available.  The OMAP3 is very well supported by the OpenEmbedded project, and TI is very active in making contributions to various open source projects.  This greatly increases the quality and availability of advanced software functionality needed to support a complex system like the OMAP3.

Size comparison of several OMAP3 systems

Size comparison of several OMAP3 systems

WIFI and BT antennas connected to Overo module

WIFI and BT antennas connected to Overo module

There are many options for software development with the OMAP3 systems.  Below is a photo of a very simple Qt application.  GTK+ and Enlightenment are other popular GUI toolkits.  With 256MB of both flash and RAM, this is more than enough memory for most embedded applications, and provides plenty of headroom for adding features for future product revisions.  The Overo has the CPU processing capability to run advanced GUI applications with 3-D affects, as well as advanced web application frameworks like web2py that previous generations of ARM CPUs could not effectively run.

A simple Qt application that controls LEDs and reads user switch

A simple Qt application that controls LEDs and reads user switch

The Gumstix Overo provides an excellent value for developing advanced products.  Especially for low volume products, when you compare the effort and time required to develop a full custom OMAP3 solution versus a simple Overo baseboard, using a module can provide significant advantages in terms of time to market, and development cost.

  • Ekrem Hacibektasoglu said,

    Hello

    Your qt led and AD application is very interesting
    could you share me this code

    regards

  • Cliff Brake said,

    Yes, the Qt demo application for the Overo/Palo board can be obtained here: http://svn.bec-systems.com/pub/qt-overo-palo-gpio/

  • Manickam said,

    hello

    I have 2 questions

    1. How do u cross compile Qt code on a x86 for the gumstix overo?

    2. Has anybody integrated a projected capacitive touch screen to the overo fire module along with the chestnut board?

  • Valentin said,

    Hello,

    I am working with the Overo fire with the chestnut board and the LCD touchscreen. I have developed a very small application with QT (a remote UI), and I would to execute my application on the overo. I have been read many tuto and there are some points where I don’t understand.
    I have followed the tuto http://gumstix.net/wiki/index.php?title=Qtopia_core_howto, I am download a most recent qt-opensource version (4.6.3). And after, I don’t understand. Furthermore, I am a novice in Linux… 🙂
    I working with a virtual distribution Debian on Mac osx. I have downloaded OE, and bitbake like it’s write on the Gumstix site.

    Sorry, I am french and I am very bad in english 🙂 But I need HELP !!!!

    Best regards

    Valentin

  • Cliff Brake said,

    Hello, regarding compiling Qt, the OpenEmbedded project already has support for compiling Qt, and that is probably the easiest way. Using the BEC build template, you could do something like:

    git clone git://git.bec-systems.com/oe-build
    cd oe-build
    make setup-gumstix
    source setup-env
    bitbake bec-qt-embedded-image

    After some number of hours you will have images located in: build/angstrom-2008.1/tmp/deploy/glibc/images/overo/ install on your Overo, and you should have Qt.

    I’ll try to post some tutorials in the coming weeks on how to cross compile Qt apps with OpenEmbedded.

    There are a several recent tutorials that may also be helpful:
    http://bec-systems.com/site/637/oe-build-template
    http://bec-systems.com/site/668/creating-a-custom-openembedded-image
    http://bec-systems.com/site/687/installing-omap3-images-on-a-sd-card

  • Andrews said,

    Good morning. I am working with the OveroCom Water, I try to connect two OveroCom to work in parallel. But I just see that the access to the main memory the other system only can be made since the processor.

    That is true?.
    Is there other form to access?.
    Can I access to the main memoria of the processor 1 (P1) since the processor 2 (P2) directly?
    Thanks.

  • Cliff Brake said,

    The Overo has a 16-bit asynchronous bus on its connectors. I don’t know of any way offhand to directly access the memory of a 2nd module, but you could put a fifo between them or something to buffer the data. The Overo Statecoach (connects 7 Overos) connects a network chip to each module and then communicates over the network interface.

  • Andrews said,

    Good morning. I’m working with Overo Water COM and Tobi expansion board. I have a linux O.S working. Now I have developed a new expansion board but with other ethernet controller. I cross-compiled the new ethernet driver and made a new Linux imagen. The question is:
    Is necessary to change the U-boot too?
    Thanks.

  • Cliff Brake said,

    Generally, U-boot changes are required if you need to change the alternate functions of any of the GPIOs. Otherwise, you can do most other things in the kernel.

  • Jhon said,

    Good morning. I’m working with Overo Water Com and Tobi expansion board. Where can I found a example to use the GPIO ports?. Thanks

  • Cliff Brake said,

    You can do something like:

    To export a GPIO:
    echo 123 > /sys/class/gpio/export

    To read the value:
    cat /sys/class/gpio/gpio123/value

    To set the value:
    echo 1 > cat /sys/class/gpio/gpio123/value

  • cooper said,

    Greeting,

    I am working on my overo fire + chesnut43. I connected ds1338 rtc chip to overo. when i do command:

    $ i2cdetect -y -r 3
    0 1 2 3 4 5 6 7 8 9 a b c d e f
    00: — — — — — — — — — — — — —
    10: — — — — — — — — — — — — — — — —
    20: — — — — — — — — — — — — — — — —
    30: — — — — — — — — — — — — — — — —
    40: — — — — — — — — — — — — — — — —
    50: 50 — — — — — — — — — — — — — — —
    60: — — — — — — — — 68 — — — — — — —
    70: — — — — — — — —
    root@overo:~#

    the 0x68 is the address of ds1338 chip.
    i can use ‘i2cset’ command to set adjust the time and date. after i reboot gumstix, the time and date is still correct.

    When i use ‘hwclock’

  • Jhon said,

    Hello.
    How can I developed a C code for gpio contol?
    Is there a example done?

    Thanks.

  • Cliff Brake said,

    Yes, here is an example:

    http://cgit.bec-systems.com/cgit.cgi/qt-overo-palo-gpio/tree/src/gpio.cpp

  • JHON said,

    Hello, thanks for help me.
    I am used the open function
    (fd= open(“/sys/class/gpio/export”, O_RDWR);
    to read the sys/class/gpio file. But i have the next error:
    open(“/sys/class/gpio/”): Permission denied

    I work how root user.

    What can I do?
    THANKS.

  • JHON said,

    Good morning. I’m using the “echo” and “cat” functions to read and write on each GPIO, but now, I wish read or write on a group of pins, for example write the value “001” on gpio0, gpio1, gpio2 in the same instruction.

    what can I do?

    thanks.

  • ermiyas said,

    u can send the values to the pins using the same codes .
    but if u want to send the values to more than one pin u can do somethinglike this:
    u can write a shell script
    devmem2 0x480025xx 0x10 to change the register of the gpio so that the gpiois a normal gpio (mod 4)
    echo 0 > export…. this is user mod exporting
    cd /sys/class/gpio
    cd gpio0
    echo 0 > value
    cd
    devmem2 0x48xxxxx 0x10
    echo 1 > export
    cd /sys/class/gpio/gpio1
    echo 0 > value
    cd
    do the same thing to the third one
    ……

  • Andrews said,

    Hello. I wish to know the function the following pins.
    SYSEN
    WAKEUP
    POWERON
    VBACKUP

    Thanks.

  • andrew said,

    Hello,
    I would like to know if the omap3550 (gumstix) has a high resolution timer.I’ve already looked in the datasheet.But I found nothing. do you have any idea ?
    thanks