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)을 실행


실행 결과





댓글 없음:

댓글 쓰기