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


실행 결과





2014년 8월 29일 금요일

망고220 우분투 포팅하기-20140829



망고220 우분투 X Window 실행하기

u-boot와 커널 소스는
을 사용하면 됩니다.






위 2개 글을 보고 우분투 부팅 이미지를 만들면 됩니다.


이미지를 만든 후

부팅 후

apt-get install ubuntu-desktop

인스톨 시 거의 3시간 이상 걸립니다.

그리고, 다시 리부팅하면 아래와 같이 우분투 화면이 보일 것입니다.
처음 부팅이 많은 시간이 걸립니다.

HDMI 출력하는 것도 해 보았습니다.
커널 소스와 u-boot 소스는 곧 공지 하도록 하겠습니다.


실행 결과 아래


VNC 접속하기

apt-get install x11vnc 


설치 후
x11vnc -noxdamage -display :0 -auth /var/run/lightdm/root/:0

실행합니다.

아래와 같이 수행이 됩니다.

root@ubuntu:~# x11vnc -noxdamage -display :0 -auth /var/run/lightdm/root/:0
….

   x11vnc -ncache 10 ...

One can also add -ncache_cr for smooth 'copyrect' window motion.
More info: http://www.karlrunge.com/x11vnc/faq.html#faq-client-caching


29/08/2014 19:51:26 check_xrandr_event():
29/08/2014 19:51:26 Detected XRANDR event at location 'check_xevents':
29/08/2014 19:51:26 check_xrandr_event: no change detected.
29/08/2014 19:51:26 check_xrandr_event: enabling full XRANDR trapping anyway.

윈도우용

Download TightVNC for Windows (Version 2.7.10)

TightVNC 2.7.10 runs basically on any version of Windows (see more details here).


다운로드 하여 설치합니다.
나의 환경은 window7 64bit이므로 아래 파일을 다운로드 받았습니다.

을 설치합니다.

우분투 IP가 192.168.3.3 이므로

eth0      Link encap:Ethernet  HWaddr 00:80:00:23:45:67
         inet addr:192.168.3.3  Bcast:192.168.3.255  Mask:255.255.255.0
         inet6 addr: fe80::280:ff:fe23:4567/64 Scope:Link
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
         RX packets:2832 errors:0 dropped:45 overruns:0 frame:0
         TX packets:1770 errors:3 dropped:0 overruns:0 carrier:0
         collisions:0 txqueuelen:1000
         RX bytes:3586824 (3.5 MB)  TX bytes:163491 (163.4 KB)
         Interrupt:197




Window 화면에서 아래와 같은 그림을 볼 수 있습니다.

2014년 8월 26일 화요일

Mango CR-IOT AT100 이미지 Write 및 Test-2(Zigbee)-20140825


  1. 테스트 하기  


    1. Zigbee 테스트


CR-AT100에 Zigee가 내장이 되어 있습니다.

이미지를 다운로드 하려면, CC-Debugger 보드가 필요합니다.
아래 링크 참조

연결은 보드에 아래와 같이 연결합니다.


PC 프로그램은
참조해서 SmartRF Flash 프로그램을 실행합니다.

CC Debugger 보드에 mini usb cable을 연결, PC에 연결합니다.
CC Debuuger 보드에 LED가 녹색으로 되면, 정상동작하는 것입니다.


프로그램이 실행이 되면 바로 인식을 합니다.

이미지는
에서
Device와 coordinator를 hex파일을 받습니다.

테스트를 하려면 CR-IOT-AT100 보드가 2대가 있어야 합니다.

이미지를 선택합니다.

우선 device 이미지를 받았습니다.


“Perform actions”를 클릭합니다.

정상적으로 수행 결과 아래와 같습니다.


다른 보드에는
bin_coordinator_115200.hex 파일을 다운로드 합니다.



사용할 수 있는 보드는
Gateway Main Board-IOTG100 보드

      1. CR-IOTG100( CPU S5PC210) 보드와  테스트



다운로드가 완료가 된 후
CR-IOT-AT100 : device 바이너리 다운로드
CR-IOTG100 :  coordinator 이미지를 다운로드 합니다.



CR-IOTG100 보드에 CC-Debugger를 연결합니다.
“Zigbee Download Connector”에 연결하면 됩니다.


그리고, 이미지를 Write를 합니다.

터미널 창을 각각 실행합니다.

Gateway Main Board-IOTG100 에 리눅스 이미지 Write하는 방법은

참조하시기 바랍니다.

CR-IOTG100에서 아래와 같이 전원, UART를 연결합니다.



통신하기 위해서 아래와 같이 구성을 합니다.



[root@mangoC210 ~]# ./rs232_test 115200 /dev/ttySAC0
Send Message : CRZ
Send Message : TEST
Send Message :
Received read_message : 0x0:[] 0x0:[] 0x0:[]
위와 같이 입력을 하면 , CR-IOT-AT100에서는 입력한 문자를 출력 해 준다.
메뉴에서 6번키를 누르면
6 is selected

Test_Actuator_ZigBee_Comm() S
actuator_port_setup() done
C is received
R is received
Z is received
T is received
E is received
S is received
T is received


2.4GHz 대역으로 통신을 하게 되는 것입니다.