2013년 8월 5일 월요일

ODROID-XU와 big.LITTLE

오드로이드 포럼에 Exynos5410의 big.LITTLE의 문제에 대해서 글이 하나 있습니다.
http://forum.odroid.com/viewtopic.php?f=65&t=1884

Exynos5410의 CCI-400 버그로 big.LITTLE의 클러스트 마이그레이션밖에 동작하지 않습니다. 그래서 이번에 수정되어 나온 Exynos5420과 비교하며 많은 개발자들이 아쉬워하고 있습니다.

IKS(In-Kernel Switcher)가 동작하는 CPU 마이그레이션과 클러스터 마이그레이션은 차이는 DVFS에 의해 특정 clock으로 올라가면 전체가 A15로 동작하지만 Core별로 A7과 A15를 선택적으로 동작 시킬 수 있다는 것입니다. 따라서 클러스커 마이그레이션과 달리 4개의 core가 다 A15로 동작할 필요가 없기 때문에 전력 효율이 높다는 장점이 있습니다. 하지만 big.LITTLE 설명한 것 처럼 저전력과 관련된 설계이고 오드로이드와 같이 A/C 전원이 항상들어가는 시스템에서는 아무런 의미가 없습니다.
Exynos5250은 A15 dual-core이고 Exynos5410은 A15 quad-core라 생각하시면 간단 할 것 같습니다.

물론 Exynos5420이 더 높은 clock과 GPU 성능이 높습니다. 하지막 아직 상용 제품에 출시 되지 않았습니다. 개발 보드로 나오기 위해서는 더 많은 시간이 필요할 것입니다.




big.LITTLE의 최후 목표인 MP모드는 커널의 scheduler의 재설계의 문제 이기 때문에 CCI의 버그와는 무관한 것으로 이해하고 있습니다. 아직 MP모드로의 실제 동작은 먼 얘기로 알고 있습니다.

Apple에서도 다음 CPU에 big.LITTLE을 사용하다고 합니다. Apple이야 자체 커널이 있으니 잘 해결하겠죠??? Apple의 big.LITTLE의 행보가 기대 됩니다.

참고한 사이트 입니다.
http://gamma0burst.tistory.com/m/613

bluez on ODROID-XU(Android-4.2.2)





ODROID-XU에  USB Bluetooth 가 동작합니다.

아래 소스를 기반으로 merge 하였습니다.

http://gitorious.org/android-bluez

git에서 안 받아 지시면 아래 patch를 적용해 보세요.

https://drive.google.com/file/d/0B5aZmgmqP9rORG1ZbWFIMG9wYU0/edit?usp=sharing

2013년 8월 2일 금요일

Android Multi User on ODROID-XU

ODROID-XU

The world’s first big.LITTLE architecture based bare-board computer. 
• Exynos5 Octa Cortex™-A15 1.6Ghz quad core and Cortex™-A7 quad core CPUs
• PowerVR SGX544MP3 GPU (OpenGL ES 2.0, OpenGL ES 1.1 and OpenCL 1.1 EP)
• 2Gbyte LPDDR3 RAM PoP
• USB 3.0 Host x 1, USB 3.0 OTG x 1, USB 2.0 Host x 4
• HDMI 1.4a output Type-D connector
• eMMC 4.5 Flash Storage

Android 4.2.2

device/hardkernel/odroidxu/overlay/frameworks/base/core/res/res/values/config.xml
    <!--  Maximum number of supported users -->
    <integer name="config_multiuserMaximumUsers">3</integer>











2013년 7월 31일 수요일

JNI int,String array parameter, return value

int array를 parameter로 넘겨기 예제(java->jni)

---------------------------------------------------------------------------------------
java file

public class Test {
    static {
        System.loadLibrary("test");
    }

    public static void func1(int arr[]) {
        native_func1(core);
    }

 private native static void native_func1(int arr[]);


---------------------------------------------------------------------------------------
cpp file

static void native_func1(JNIEnv* env, jobject obj, jintArray arr) {
    int size = env->GetArrayLength(arr);

    jint *value = env->GetIntArrayElements(arr, NULL);

    for (int i = 0; i < size; i++) {
        value[i] = i;
    }
 
    env->ReleaseIntArrayElements(arr, value, 0);
    return;
}

static const JNINativeMethod g_methods[] = { 
    { "native_func1", "([I)V", (void*)native_func1 }, 
}; 
  
---------------------------------------------------------------------------------------
//배열 생성 
int[] arr = new int[4];
//배열 전달
Test.func1(arr);


String array를 return value로 받기(jni->java)

---------------------------------------------------------------------------------------
java file
static jobjectArray native_func2(JNIEnv* env, jobject obj) {
    char *temp[4] = { "apple, "banana", tomato", "melon"};

    jobjectArray ret = (jobjectArray)env->NewObjectArray(4, env->FindClass("java/lang/String"),
            env->NewStringUTF(""));

    for (int i = 0; i < 4; i++) {
        env->SetObjectArrayElement(ret, i, env->NewStringUTF(temp[i]));
    }
    return ret;
}

static const JNINativeMethod g_methods[] = {
    { "native_func2", "()[Ljava/lang/String;", (jobjectArray*)native_func2 },
};


---------------------------------------------------------------------------------------
java file

public class Test {
    static {
        System.loadLibrary("test");
    }

    public static String[] func2() {
        return native_func2();
    }

    private native static String[] native_func2();



---------------------------------------------------------------------------------------
String[] str = new String[4];
str = Test.func2();

2013년 7월 29일 월요일

Ubuntu unity에서 한/영 전환키가 unity 실행키가 안되도록 하기

http://ubuntu.or.kr/viewtopic.php?p=101411

xmodmap -e 'remove mod1 = Hangul'

minicom setting for ODROID USB-UART Module Kit



install minicom

$sudo minicom -s

            +-----[configuration]------+
            | Filenames and paths      |
            | File transfer protocols  |
            | Serial port setup        |
            | Modem and dialing        |
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Serail port setup

=================================================================

    +-----------------------------------------------------------------------+
    | A -    Serial Device      : /dev/ttyUSB0                              |
    | B - Lockfile Location     : /var/lock                                 |
    | C -   Callin Program      :                                           |
    | D -  Callout Program      :                                           |
    | E -    Bps/Par/Bits       : 115200 8N1                                |
    | F - Hardware Flow Control : No                                       |
    | G - Software Flow Control : No                                        |
    |                                                                       |
    |    Change which setting?                                              |
    +-----------------------------------------------------------------------+
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

=================================================================
                                                                             
            +-----[configuration]------+                                     
            | Filenames and paths      |                                     
            | File transfer protocols  |                                     
            | Serial port setup        |                                     
            | Modem and dialing        |                                     
            | Screen and keyboard      |
            | Save setup as dfl        |
            | Save setup as..          |
            | Exit                     |
            | Exit from Minicom        |
            +--------------------------+

Save setup as dfl


dev$ ls -l ttyUSB*
crw-rw---- 1 root dialout 188, 0  7월 29 12:30 ttyUSB0

minicom: Cannot open /dev/ttyUSB0: Permission denied

Just add your user to the dialout group so you have appropriate permissions on the device.

$sudo usermod -a -G dialout $USER

2013년 7월 24일 수요일

How to hide Naviation Bar.

Hide Navigation Bar.

edit build.prop
qemu.hw.mainkeys=1


or

setprop qemu.hw.mainkyes 1
killall system_server


If sdk version is API Level 11(Android 4.2.2), add setSystemUiVisibility function in your Activity.

getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);