망고210 GPIO LED 제어 매뉴얼
LED 제어 GPIO 배치도
배치도에서 보면 아래 2개 LED를 제어를 하는 것입니다. (파란색)
CXV210_v0.3_20120228.pdf 회로도를 보면
GPJ3_7 , GPJ4_0 번 GPIO에 연결이 되어 있음
|
커널 수정
$ ./build_kernel config
|
실행 후
LED Support 를 Unconfiguration합니다.
CONFIG_NEW_LEDS is not set
|
"arch/arm/mach-s5pv210/mach-mango210.c" 파일 수정
|
#ifdef CONFIG_NEW_LEDS
static struct gpio_led mango210_leds[] = {
{ /* */
.name = "led0",
.gpio = S5PV210_GPJ3(7),
.active_low = 1,
.default_trigger = "default-on",
},
{ /* */
.name = "led1",
.gpio = S5PV210_GPJ4(0),
.active_low = 1,
.default_trigger = "heartbeat",
},
};
static struct gpio_led_platform_data mango210_led_data = {
.num_leds = ARRAY_SIZE(mango210_leds),
.leds = mango210_leds,
};
static struct platform_device mango210_leds_device = {
.name = "leds-gpio",
.id = -1,
.dev.platform_data = &mango210_led_data,
};
#endif
|
#ifdef CONFIG_NEW_LEDS
&mango210_leds_device,
#endif
|
위와 같이 수정을 합니다.
GPIO Configuration을 합니다.
CONFIG_DEBUG_FS=y
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
CONFIG_DEBUG_GPIO=y
CONFIG_GPIO_SYSFS=y
|
커널 빌드 후 이미지를 write를 합니다.
안드로이드 수정 하기
해당 GPIO 번호를 알아야 합니다.
글을 참조해서 확인 해 보겠습니다.
안드로이드는 이미 해당 파일이 마운트가 되어 있습니다.
root@android:/ # cat /sys/kernel/debug/gpio
GPIOs 197-204, GPJ3:
GPIOs 206-210, GPJ4:
|
GPJ3_7 , GPJ4_0 번 GPIO에 연결이 되어 있으므로,
GP3_7 은 204
GPJ4_0은 206
입니다.
|
안드로이드
init.mango210.rc 파일에 정의가 되어 있습니다.
service mango_gpio /system/bin/sh /system/etc/mango_gpio.sh
class main
user root
oneshot
|
해당 파일은 소스에서
"device/crazyboys/mango210/mango_gpio.sh"
|
에 위치를 합니다.
수정을 합니다.
echo 204 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio204/direction
echo 1 > /sys/class/gpio/gpio204/value
chmod 777 /sys/class/gpio/gpio204/direction
chmod 777 /sys/class/gpio/gpio204/value
echo 206 > /sys/class/gpio/export
echo out > /sys/class/gpio/gpio206/direction
echo 1 > /sys/class/gpio/gpio206/value
chmod 777 /sys/class/gpio/gpio206/direction
chmod 777 /sys/class/gpio/gpio206/value
|
수정 후 안드로이드를 컴파일 해서 다시 올리기 바랍니다.
mango_gpio.sh 안드로이드 파일 시스템에 올리기
안드로이가 부팅이 되고, 리눅스 PC에서 아래와 같이 확인 할 수 있습니다.
물론, usb otg 케이블은 PC와 연결이 되어 있어야 합니다.
[icanjji@icanjji-pc android]$ lsusb
Bus 002 Device 003: ID 058f:6366 Alcor Micro Corp. Multi Flash Reader
Bus 002 Device 007: ID 18d1:4e22 Google Inc. Nexus S (debug)
|
수정한 mango_gpio.sh파일을 복사를 합니다.
[icanjji@icanjji-pc android]$ cd ../image/
[icanjji@icanjji-pc image]$ cp ../android/device/crazyboys/mango210/mango_gpio.sh .
|
“adb” 파일이 있는 디렉토리에서 실행을 합니다.
$ sudo adb push mango_gpio.sh /system/etc/
|
아래와 같이 에러 발생 시
[icanjji@icanjji-pc image]$ sudo adb push mango_gpio.sh /system/etc/
[sudo] password for icanjji:
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
failed to copy 'mango_gpio.sh' to '/system/etc//mango_gpio.sh': Read-only file system
|
아래와 같이 다시 이미지를 Write하기 바랍니다.
[icanjji@icanjji-pc image]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda2 1918525316 1577669248 243377576 87% /
none 4 0 4 0% /sys/fs/cgroup
udev 2003336 4 2003332 1% /dev
tmpfs 402824 1616 401208 1% /run
none 5120 0 5120 0% /run/lock
none 2014112 76 2014036 1% /run/shm
none 102400 44 102356 1% /run/user
/dev/sda1 96880 120 96760 1% /boot/efi
/dev/sdg1 6999444 48 6999396 1% /media/icanjji/0000-3333
/dev/sdg4 98824 56 93456 1% /media/icanjji/6a0a635a-9668-0235-fa84-2d935fa1cc6d
/dev/sdg2 227712 155668 67336 70% /media/icanjji/57f8f4bc-abf4-655f-bf67-946fc0f9f25b
/dev/sdg3 336496 41612 276668 14% /media/icanjji/777270c2-6912-9b20-ce2e-003df98c2b9b
[icanjji@icanjji-pc image]$ sudo ./sdwriter sdg 210
Mango SD Writer V1.0
Unmount all : success
Partition Create : success
Write Mango210 BL1 : success
Write Mango210 Uboot : success
Write Mango210 Kernel : success
Write Mango210 Ramdisk : success
Android System Create : success
Android Data Create : success
Unmount all : success
Success
|
GPIO 상태 확인 하기
보드를 부팅 후 아래와 같이 명령을 수행하여 확인을 합니다.
root@android:/ # ls -al /sys/class/gpio/gpio204
lrwxrwxrwx root root 2000-02-18 14:39 gpio204 -> ../../devices/virtual/gpio/gpio204
root@android:/ # ls -al /sys/class/gpio/gpio204/
-rw-r--r-- root root 4096 2000-02-18 14:39 active_low
-rwxrwxrwx root root 4096 2000-02-18 14:39 direction
drwxr-xr-x root root 2000-02-18 14:39 power
lrwxrwxrwx root root 2000-02-18 14:39 subsystem -> ../../../../class/gpio
-rw-r--r-- root root 4096 2000-02-18 14:39 uevent
-rwxrwxrwx root root 4096 2000-02-18 14:39 value
root@android:/ # ls -al /sys/class/gpio/gpio206/
-rw-r--r-- root root 4096 2000-02-18 14:43 active_low
-rwxrwxrwx root root 4096 2000-02-18 14:39 direction
drwxr-xr-x root root 2000-02-18 14:43 power
lrwxrwxrwx root root 2000-02-18 14:43 subsystem -> ../../../../class/gpio
-rw-r--r-- root root 4096 2000-02-18 14:43 uevent
-rwxrwxrwx root root 4096 2000-02-18 14:39 value
|
보드에 LED는 모두 켜져 있어야 합니다.
JNI 컴파일 하기
참조하시기 바랍니다.
이클립스 Tool도 설치가 되어야 합니다.
설치는
에서
문서를 참조하세요.
빌드 하기
[icanjji@icanjji-pc jni]$ ndk-build
Install : libmango_standard.so => libs/armeabi/libmango_standard.so
|
GPIO 제어 안드로이드 어플 Import하기
mango210_gpio_led_app_xxx.zip 파일을 적당한 위치에 압축을 풉니다.
Eclipse를 실행합니다.
“Import” 를 선택합니다.
“Existing Projects into Workspace” 를 선택
“Root Directory” 에서 “Browse” 버튼을 클릭,
압축을 푼 디렉토리 선택
New Project Name 에서 Gpio가 보일 것입니다.
“Finish” 버튼을 선택
GPIO 제어 안드로이드 어플 망고210 보드에서 실행하기
안드로이드가 부팅이 된 후 adb 드라이버를 설치를 합니다.
참조하시기 바랍니다.
실행 후 에러가 발생하면
안드로이드 어플을 망고210에서 실행하는 것은
실행하면 됩니다.
또는
이제 Eclipse 에서 -> Run -> Run(Ctrl +F11)을 실행
실행 결과
댓글 없음:
댓글 쓰기