기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

 

방갑습니다.

 

안드로이드에서 PWM으로 설정/디스플레이/밝기 설정을 할려고 합니다.

 

커널을 수정하고 올려서  pwm 출력이 나오는것은 확인했습니다.

 

그러나 안드로이드의 어디에 연결(수정)을 시켜야 할지 모르겠습니다. 도움부탁드립니다.

(설정 / 디스플레이 / 밝기 설정)

 

//android kernel

//mach-smdk6410.c
static struct platform_pwm_backlight_data smdk_backlight_data = {
 .pwm_id  = 1,
...

};

 

static struct platform_device smdk_backlight_device = {
 .name  = "pwm-backlight",
...

};

 

static void __init smdk_backlight_register(void){
 int ret = platform_device_register(&smdk_backlight_device);
...

}

 

static struct platform_device *smdk_devices[] __initdata = {
...
 &s3c_device_timer[1],
};

static void __init smdk_machine_init(void){
...
 smdk_backlight_register();
}

 

 

//Android-2.2packagesappsSettingssrccomandroidsettingsBrightnessPreference.java

...

  private void setBrightness(int brightness) {
        try {
            IPowerManager power = IPowerManager.Stub.asInterface(
                    ServiceManager.getService("power"));
            if (power != null) {
                power.setBacklightBrightness(brightness);
            }
        } catch (RemoteException doe) {
           
        }       
    }

...

 

 

 


funmoney

2011.07.29 20:29:44
*.169.251.167

안드로이드는 잘 몰라서 Linux 기반에서 조언만 드리겠습니다.

Linux 에서는 Backlight 관련된 것들이 정상적으로 동작하고 있다면

sys 파일 시스템을 통하여 backlight 를 제어 할 수 있습니다.

 

만약, 수정하신 kernel 이 정상이라면 아래의 directory 가 sys 파일 시스템에 있을 것입니다.

/sys/class/backlight/pwm-backlight

이 디렉토리에 있는 brightness 에 밝기 값을 write / read 하면 됩니다. 단 숫자가 아닌 문자열로

write / read 하셔야 합니다.

 

예를 들어 brightness 의 range 가 00 ~ 32 인데 16 으로 설정하고 싶다면

 

fd = open("/sys/class/backlight/pwm-backlight/brightness", ....);

write(fd, "16", 2);

close(fd);

로 해주시면 됩니다.

 

단순히 동작만 확인 하고 싶으시다면

echo / cat 명령으로 write/read 를 대신할 수 있습니다.

 

echo 16 > /sys/class/backlight/pwm-backlight/brightness

cat  /sys/class/backlight/pwm-backlight/brightness

 

Legacy linux 기반에서 설명을 드렸습니다.

김택기

2011.07.30 04:17:36
*.241.151.50

Android의 backlight 밝기 조절은 Application framework의 LightsService를 통해 구현됩니다.

generic android에는 LightService만 구현되어 있습니다.

즉, HAL에 해당하는 부분은 없습니다.

이것은 backlight를 제어하는 방법이 device 마다 그리고 제조사 마다 틀리기 때문입니다.

device에 따라 PWM 제어일 수도 있고, I2C 방식일 수도 있죠...

그리고 같은 PWM이라도 윗분의 답변처럼 sysfs의 파일을 이용할 수도 있고, 다른 방식을 이용할 수도 있습니다.

이건 순전히 driver를 어떻게 만들었느냐에 따라 다른 부분입니다.

 

따라서 원론적으로는 Android의 LightsService를 분석하여 HAL을 직접 작성해줘야 한다입니다.

아래가 Gingerbread를 기준으로 LightsService와 관련된 파일입니다.

frameworks/base/services/java/com/android/server/LightsService.java

frameworks/base/services/jni/com_android_server_LightsService.cpp

 

다만 device 폴더 내에 htc 나 samsung 등과 같은 제조사 폴더가 있다면,

liblight 라는 폴더를 찾아보시면 아마도 참고할 만한  HAL 소스가 있을 겁니다.

 

강희성

2011.07.30 17:02:28
*.67.201.6

Nexus s 플랫폼 코드를 보시면 device/samsung/crespo/liblight 폴더가 백라이트 조절하는 파일입니다.
결국 sysfs 에 값을 써주는 방식으로 동작하는 거라 위 디렉터리에 있는 파일 보시면 쉽게 이해하실수 있습니다. 굳이 플랫폼 코드까지 고치실 필요는 없어보입니다

김태영

2011.08.08 19:50:07
*.95.218.4

답변들을 참고하여 문제를 해결했습니다. 감사드립니다.


init.rc에

#chown system system /sys/class/leds/lcd-backlight/brightness

chown system system /sys/class/backlight/pwm-backlight/brightness


수정하였으며


liblight에서 lights.c를 빌드하여 light.default.so를 생성하여 적용하였더니


정상동작하였습니다. 감사드립니다.


List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6368 flow control에 관해서 여쭤 보고자 합니다. 열심히 2015-06-17 113
6367 android uenvt에 내용을 추가 했는데요 맞는 방법인가요? [1] pedor11 2015-05-20 121
6366 input device에 할당된 버튼키를 제거하고 터미널에서 키보드로 대... [1] 김민욱 2017-05-25 122
6365 camera HAL시 퍼미션을 얻을 수 있는가요? [2] 조신 2015-11-18 147
6364 압력센서 신호처리 관련하여 문의드립니다. [3] kernel_study 2016-11-03 148
6363 [apt pkg server 관련] [2] 밥줘잉 2016-10-20 150
6362 nfs 서버 구축 질문 [4] 김민욱 2017-06-10 164
6361 ACPI Shutdown Signal이 들어갈때의 동작을 변경하고 싶습니다. +... [4] 겟페우스 2017-06-08 165
6360 SoM GPIO 제어 문의 [1] 단순최고 2021-01-25 168
6359 USB GPS를 재부팅 후에도 자동으로 동작하게 하려고 합니다. [3] 겟페우스 2017-06-03 172
6358 touch screen관련 여쭤봅니다. [1] 열심히 2015-07-25 173
6357 virtualbox에 안드로이드가 잘 안도네요 [1] 더미원 2017-03-20 180
6356 2440 보드의 address 신호와 소스상의 주소를 어떻게 이해 하고 있... [2] DavidKim 2015-07-29 181
6355 i.mx6q에서 libvpu.so 라이브러리를 사용하여 link시에 undefined ... [1] 이동희 2019-08-09 182
6354 udev 를 이용하여 /dev 사용권한을 변경할수 있나요? [1] pedor11 2015-11-18 185
6353 키이벤트 관련 질문드립니다. [3] 하하호호하하 2015-10-06 188
6352 Alto 4330 보드에서 sdcard의 리눅스 커널로 부팅하는 방법 [2] 포도씨 2016-11-18 192
6351 밑의 LCD 포팅 질문드렸었는데 추가 질문이 있습니다. [2] ImYeol 2015-08-13 193
6350 check_usb_vfs("/dev/bus/usb") 에러 [1] 생생맥주 2015-01-25 200
6349 smsc9220 질문 file [2] *김종원 2015-07-24 203

사용자 로그인