페이지

2014년 9월 3일 수요일

망고210 GPIO LED 제어 매뉴얼




  1. 망고210 GPIO LED 제어 매뉴얼



    1. LED 제어 GPIO 배치도


배치도에서 보면 아래 2개 LED를 제어를 하는 것입니다. (파란색)


CXV210_v0.3_20120228.pdf 회로도를 보면


GPJ3_7 , GPJ4_0 번 GPIO에 연결이 되어 있음




    1. 커널 수정


$ ./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를 합니다.





    1. 안드로이드 수정 하기


해당 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

수정 후 안드로이드를 컴파일 해서 다시 올리기 바랍니다.


    1. 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



    1. 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는 모두 켜져 있어야 합니다.


    1. JNI 컴파일 하기


참조하시기 바랍니다.
이클립스 Tool도 설치가 되어야 합니다.

설치는  
에서

문서를 참조하세요.

빌드 하기
[icanjji@icanjji-pc jni]$ ndk-build
Install        : libmango_standard.so => libs/armeabi/libmango_standard.so



    1. GPIO 제어 안드로이드 어플 Import하기  


mango210_gpio_led_app_xxx.zip 파일을 적당한 위치에 압축을 풉니다.

Eclipse를 실행합니다.


“Import” 를 선택합니다.


“Existing Projects into Workspace” 를 선택



“Root Directory” 에서 “Browse” 버튼을 클릭,
압축을 푼 디렉토리 선택


New Project Name 에서 Gpio가 보일 것입니다.

“Finish” 버튼을 선택



    1. GPIO 제어 안드로이드 어플 망고210 보드에서 실행하기


안드로이드가 부팅이 된 후 adb 드라이버를 설치를 합니다.
참조하시기 바랍니다.

실행 후 에러가 발생하면

안드로이드 어플을 망고210에서 실행하는 것은

실행하면 됩니다.
또는
이제 Eclipse 에서 -> Run -> Run(Ctrl +F11)을 실행


실행 결과





댓글 없음:

댓글 쓰기