'임베디드/Android'에 해당되는 글 9건

  1. 2011.03.25 [android] mang64 ramdisk boot argument(u-boot)
  2. 2011.03.25 [android] 화면에 fps 수치 표시하기
  3. 2011.03.22 [android][error] /dev/pmem, libhgl.so 에러
  4. 2011.03.22 [android][error] BatteryService 패치
  5. 2011.03.22 [android][error] power.c 패치
  6. 2011.03.22 [android][error] can't find any keycharmaps & can't open keycharmaps file
  7. 2011.03.21 [android] HOME key 살리기
  8. 2011.03.21 [android,cupcake] 안드로이드용 파일 시스템 구축 스크립트
  9. 2011.03.04 [android] custom view 기본 구조

[android] mang64 ramdisk boot argument(u-boot)

Mango64 ramdisk nfs boot (u-boot argument)


setenv bootargs 'root=/dev/nfs rw nfsroot=192.168.10.101:/home/shellbt/source/ramdisks/mango64_rootfs ip=192.168.10.104:192.168.10.101:192.168.10.1:255.255.255.0::eth0:off console=ttySAC1,115200n81 ethaddr=00:40:5c:26:0a:5c'

nand read 0x50008000 0x40000 0x300000
bootm 0x50008000

[android] 화면에 fps 수치 표시하기

/frameworks/base/core/Java/android/view/ViewRoot.java 에서 SHOW_FPS값을 true로 변경하면 왼쪽아래 화면 구석에 숫자로 표시된다.

[android][error] /dev/pmem, libhgl.so 에러

안드로이드가 부팅하면서 로그를 보면 /dev/pmem 과 libhgl.so 라이브러리를 못 찾겠다는 에러가 발생하는데, 이 두 개는 large physically contiguous memory와 관계가 있는 부분이기 때문에 현재의 안드로이드용 보드들에서는 별 상관없다.

[android][error] BatteryService 패치

  • 위치 : frameworks/base/services/jni
  • 파일 : com_android_server_BatteryService.cpp
  • 에러메세지 :
    1. E/BatteryService( 1866): Could not open '/junk_battery/class/power_supply/battery/status'

    2. W/BatteryService( 1866): Unknown battery health[2] '100'

  • 패치 내용 :
static void android_server_BatteryService_update(JNIEnv* env, jobject obj)
{
#if 0
    setBooleanField(env, obj, AC_ONLINE_PATH, gFieldIds.mAcOnline);
    setBooleanField(env, obj, USB_ONLINE_PATH, gFieldIds.mUsbOnline);
    setBooleanField(env, obj, BATTERY_PRESENT_PATH, gFieldIds.mBatteryPresent);
   
    setIntField(env, obj, BATTERY_CAPACITY_PATH, gFieldIds.mBatteryLevel);
    setIntField(env, obj, BATTERY_VOLTAGE_PATH, gFieldIds.mBatteryVoltage);
    setIntField(env, obj, BATTERY_TEMPERATURE_PATH, gFieldIds.mBatteryTemperature);
   
    const int SIZE = 128;
    char buf[SIZE];
   
    if (readFromFile(BATTERY_STATUS_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus(buf));
   
    if (readFromFile(BATTERY_HEALTH_PATH, buf, SIZE) > 0)
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth(buf));

    if (readFromFile(BATTERY_TECHNOLOGY_PATH, buf, SIZE) > 0)
        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF(buf));
#else
    env->SetBooleanField(obj, gFieldIds.mAcOnline, true);
    env->SetBooleanField(obj, gFieldIds.mUsbOnline, false);
    env->SetBooleanField(obj, gFieldIds.mBatteryPresent, false);

    env->SetIntField(obj, gFieldIds.mBatteryLevel, 100);
    env->SetIntField(obj, gFieldIds.mBatteryVoltage, 15);
    env->SetIntField(obj, gFieldIds.mBatteryTemperature, 20);

    const int SIZE = 128;
    char buf[SIZE];
   
        env->SetIntField(obj, gFieldIds.mBatteryStatus, getBatteryStatus("F"));
   
        env->SetIntField(obj, gFieldIds.mBatteryHealth, getBatteryHealth("G"));

        env->SetObjectField(obj, gFieldIds.mBatteryTechnology, env->NewStringUTF("Nemus"));
#endif
}



[android][error] power.c 패치

  • 위치 : hardware/libhardware_legacy/power 
  • 파일 : power.c 
  • 에러 메세지 : 
    1. "E/power ( 1866): Failed setting last user activity: g_error=0"
  • 수정내용


    int
    set_screen_state(int on)
    {
    QEMU_FALLBACK(set_screen_state(on));

    //LOGI("*** set_screen_state %d", on);

    initialize_fds();

    //LOGI("go_to_sleep eventTime=%lld now=%lld g_error=%s\n", eventTime,
    // systemTime(), strerror(g_error));

    //if (g_error) return g_error;

    char buf[32];
    int len;
    if(on)
    len = sprintf(buf, on_state);
    else
    len = sprintf(buf, off_state);
    len = write(g_fds[REQUEST_STATE], buf, len);
    if(len < 0) {
    LOGE("Failed setting last user activity: g_error=%d\n", g_error);
    }
    return 0;
    }

[android][error] can't find any keycharmaps & can't open keycharmaps file

- 위 2개 에러는 퍼미션 때문에 생기는 에러
- /system/usr/keychars 안에 있는 모든 파일에 644퍼미션을 주면 해결 된다.

[android] HOME key 살리기

1. 안드로이드 플랫폼 포팅 시.

작업파일 : development/apps/SdkSetup/Android.mk

LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE_TAGS := foo
LOCAL_SRC_FILES := $(call all-subdir-java-files)
LOCAL_PACKAGE_NAME := SdkSetup
LOCAL_CERTIFICATE := platform
include $(BUILD_PACKAGE)

파일 내용을 위와 같이 수정해 주면 
out/target/product/generic/system/app/SdkSetup.apk 파일이 생긴다.
이 파일이 설치되면 keyquard가 동작하게 되면 homekey도 작동하게 된다.

2. sqlite db 파일 수정

작업파일 : data/data/com.android.providers.settings/databases/settings.db
table : secure
column : name컬럼에 "device_provisioned" 의 값을 1로 설정해 주면 된다.

sql :
insert into secure(name,value) values('device_provisioned',1);
or
update secure set value=0 when name='device_provisioned';

 

[android,cupcake] 안드로이드용 파일 시스템 구축 스크립트

아직 작업 중....


-- sd 카드용 디렉토리 생성 스크립트 

#!/bin/sh 
ARGS=1
TARGET_DIR=$1
PWD=`pwd`

if [ $# -ne "$ARGS" ]
then 
    echo "USAGE : `basename $0` [TARGET DIRECTORY]"
    echo $1
    exit 65
fi


cd $TARGET_DIR
mkdir sdcard cache sqlite_stmt_journals
cd $PWD 


-- junk battery 용 스크립트

#!/bin/sh


ARGS=1

TARGET_DIR=$1

PWD=`pwd`



if [ $# -ne "$ARGS" ]

then

    echo "USAGE : `basename $0` [TARGET DIRECTORY]"

    exit 65

fi


make_directory_file() {

    mkdir -p junk_battery/class/power_supply/ac 

    cd junk_battery/class/power_supply 

    mkdir usb battery

#    touch ac/online usb/online battery/stats battery/health battery/present battery/capacity battery/batt_vol battery/batt_temp battery/technology

    echo "100" > ac/online 

    echo "100" > usb/online 

    echo "100" > battery/stats 

    echo "100" > battery/health 

    echo "100" > battery/present 

    echo "100" > battery/capacity 

    echo "100" > battery/batt_vol 

    echo "100" > battery/batt_temp 

    echo "100" > battery/technology

}




cd $TARGET_DIR 

make_directory_file

cd $PWD


[android] custom view 기본 구조

public class touchtest extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MyTouch mt = new MyTouch(this);

setContentView(mt);
}

protected class MyTouch extends View {

public MyTouch(Context context) {
super(context);
}
public void onDraw(Canvas canvas) {
}
}
}
prev 1 next