Blog


ODROID-X Pre-Production
Posted by pinkodroid on 20 July 2012 at 14:18 pm
We have started the pre-production this week. Here is the latest picture of ODROID-X. 
odroid-x.jpg


The background history of adding a heat sink is this. We have performed Full-HD video decoding test only with software. Which was awesome that small embedded quad-core ARM board can decode Full-HD video. But there was a side effect of heat. It is not the normal use environment. But, some heavy users might try. So we have discussed about adding heat sink with ODROID Forum members. They all loved it. So we have decided to add the heat sink without any extra cost.  
It doesn't affect shipment schedule. Don't worry. 


Thanks, 



ODROID-X

Full-HD Video play with Quad-Core Exynos.
Posted by ODROID on 16 July 2012 at 22:44 pm
A lot of people inquired about the performance of ARM Cortex A9 1.4Ghz Quad-core.

So we decided to show it with high definition video play ability.
Even the Exynos contains hardwired MPEG4/H.264/WMV decoder inside, we tried pure software driven media decoder.

We've tested several different 720p(HD) and 1080p(Ful-HD) video clips with MX player on ODROID-X which has Android 4.0.4.
MX player is one of the best video player in Google Play(Android Market) which is based on the famous FFMPEG media decoder.
They support Multi-core decoding with ARMv7 NEON SIMD feature. It means they utilize the 4 cores in parallel to decode video.

Most of clips could play well with ARMv7 NEON + Multi-core enabled FFMPEG codec library. It is really amazing.
The quad-core can decode Full-HD video even in a small ARM embedded board.
Seek and Sub-title functions are also working well.

Note that most clips contains H.264 video and we could use the hardware accelerated codec too in Android.
But, we performed this test without the hardware accelerator.

Please look into this video.



BTW, we have two issues.
1. Software driven video decoding makes a lot of heat due to heavy computing.
We may need to add a small heatsinks. We will measure the temperature more carefully.

2. 1080p contents in SDHC card doesn't play well due to limited data transfer rate.
720p contents in SDHC are not a problem.
The eMMC storage has no problem because it is fast enough.


So we need more investigation the HW and SW codecs as well as burden of flash strorage access time.




ODROID-X,ODROID-Q

Exynos-4412 ARM Cortex-A9 Quad-Core
Posted by ODROID on 03 July 2012 at 19:45 pm
Hardkernel has just announced new development boards ODROID-Q and ODROID-X which are powered by Samsung Exynos-4412 1.4Ghz processor.

ODROID-Q    Slim, Light, Mobile and Smart soluntion for professional developers.
First shipping will be end of July.
Exynos4412.jpg

ODROID-X    Affordable and attractive platform with 6-ports USB 2.0 host !
First shipping will be end of July.
Exynos4412.jpg



Here is a simple benchmarking result of ODROID-Q with Exynos-4412. We used the Quadrant app.
It is much faster than OMAP/Tegra/Snapdragon series. How amazing! 

Exynos_Benchmark.png


We made interesting videos of ODROID-Q and ODROID-X for the developers.
If you want to enjoy the powerful quad-core processor, dive deep into ODROID!











ODROID-Q,ODROID-X

Application source code for Embedded Android Platform based on ODROID-A4
Posted by odroid on 18 May 2012 at 12:58 pm

Hardkernel has released guide book of Android platform development. 

-   Basic ( Android/Bootloader/Kernel Build and Installation )
-   Intermediate ( Driver / HAL Development )
-   Advanced (GPIO/UART/I2C/ADC access from Android application )

Refer to : http://com.odroid.com/sigong/nf_file_board/nfile_board.php

Kernel source code can be downloaded from this link.
< Kernel source code IO board >

There are also many useful Android application source code to access hardware in Android devices.

Sensor API   < Source code >
Sensors.png


Sensor e-Compass API < Source code >
Sensor-compass1.png


Camera API (preview)   < Source code >
camera.png

Camera Application (Barcode & QR code reader)   < Source code > taken from ZXing project.
Barcode reader.png

Battery gauge API < Source code >
BatteryMonitor.png

Audio API <Source code >
Labbook-AudioIO.png

WiFi & Bluetooth API < Source code >
WiFiAPScan.png

GPIO / IRQ access <Source code >
labbook-KeyInput.png

ADC access <Source code >
labbook-ADC.png

ADC access (Oscilloscope) < Source code >
OdroidOscilloscope.png

UART access (GSP system)  < Source code >
labbook-GPS.png

I2C access (Pressure & Barometer) < Source code >
labbook-Libsensor_BMP180.png

I2C access (GPIO expansion) < Source code >
Labbook-mcp23017.png




ODROID-A4

OpenMP test with ODROID-A4.
Posted by odroid on 30 April 2012 at 17:48 pm
An example of 40 pieces of Fibonacci numbers(sequences).
If you want to know about Fibonacci sequences, refer this link.
http://en.wikipedia.org/wiki/Fibonacci_number


1
2
3
5
8
13
21
34
55
89
144
233
377
610
987
1597
2584
4181
6765
10946
17711
28657
46368
75025
121393
196418
317811
514229
832040
1346269
2178309
3524578
5702887
9227465
14930352
24157817
39088169
63245986
102334155


To find 40 pieces of Fibonacci sequence, we used this code with OpenMP library on ODROID-A4.
fibonacci_omp.c
* CPP type file
#include 
#include 
#include 
#include 
#include         /* for open/close.. */
#include            /* for O_RDONLY */
#include    /* for ioctl*/
#include   /* for lseek() */


int Fibonacci(int n)
{
    int x, y;
    if (n < 2)
        return n;
    else {
        x = Fibonacci(n - 1);
        y = Fibonacci(n - 2);
        return (x + y);
    }
}

int FibonacciTask(int n)
{
    int x, y;
    if (n < 2)
        return n;
    else {
#pragma omp task shared(x)
        x = Fibonacci(n - 1);
#pragma omp task shared(y)
        y = Fibonacci(n - 2);
#pragma omp taskwait
        return (x + y);
    }
}

#define MAX 41
int main(int argc, char * argv[])
{
    int FibNumber[MAX] = {0};
    struct timeval time_start, time_end;

    int i = 0;

    // omp °ü·Ã Ãâ·Â
    printf(\"Number of CPUs=%d\n\", omp_get_num_procs());
    printf(\"Number of max threads=%d\n\", omp_get_max_threads());


    gettimeofday(&time_start, NULL);
#pragma omp parallel
    {
#pragma omp single private(i)
        for(i = 1; i < MAX; i++) {
            FibNumber[i] = FibonacciTask(i);
        }
    }
    gettimeofday(&time_end, NULL);

    time_end.tv_usec = time_end.tv_usec-time_start.tv_usec;
    time_end.tv_sec = time_end.tv_sec-time_start.tv_sec;
    time_end.tv_usec += (time_end.tv_sec*1000000);
    printf(\"Time of Fibonacci with OpenMP : %lf sec\n\", time_end.tv_usec / 1000000.0);

    for(i = 0; i < MAX; i++)
        printf(\"%d \", FibNumber[i]);

    printf(\"\n--------------------------------------\n\");

    return 0;


Here is a Makefile example!
* BASH type file
GCC = /usr/local/arm/ktoolchain-cortexa9-ver2.1-20110815/bin/arm-none-linux-gnueabi-gcc 

#Fibonacci: Fibonacci.c
#    $(GCC) -o Fibonacci $< -lgomp -lpthread -fopenmp -lm -static 
Fibonacci_omp: Fibonacci_omp.c
    $(GCC) -o Fibonacci_omp $< -lgomp -lpthread -fopenmp -lm -static -O3


Please note the toolchain for OpenMP could be downloadable via in this link.
http://www.kandroid.org/board/board.php?board=toolchain&command=body&no=15

You also need to change the kernel option to activate dual-core all the time, refer Page16~17 of this document.
http://com.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&tag=&bid=96


Test result !
We could know the dual-core utilized calculation of Fibonacci is 1.6 times faster than single-core.
* BASH type file
root@android:/system/bin
# ./Fibonacci                                         
Time of Fibonacci with recursion : 7.862591 sec
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269
2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986
102334155
--------------------------------------
root@android:/system/bin
# ./Fibonacci_omp                                     
Number of CPUs=2
Number of max threads=2
Time of Fibonacci with OpenMP : 4.878260 sec
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765
10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269
2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986
102334155
--------------------------------------







ODROID-A,ODROID-PC,ODROID-A4