EZ-AU1200을 위한 카메라 보드 EZ-CIM이 나왔습니다. 현재는 EZ-AU1200에서만 사용할 수 있지만, (주)FALINUX에서는 앞으로 다른 EZ-보드를 위한 카메라 보드를 준비 중이라고 합니다.

CMOS 카메라 모듈을 사용했는데, 해상도가 매우 높고 훌륭합니다. EZ-CIM보드를 EZ-AU1200에 연결하여 LCD화면에 출력한 모습을 캡쳐해 보았습니다. 아래 사진을 클릭하시면 더 큰 사진을 보실 수 있습니다.

제공되는 프로그램은 개발자를 위하여 카메라 디바이스 드라이버까지 모두 소스를 제공하고 있습니다. 제공되는 소스를 어떻게 컴파일하고 예제 파일을 실행하는 방법에 대해 정리해 보았습니다.

커널 소스 준비 및 타겟보드에 맞추어 컴파일하기

EZ-CIM 디바이스 드라이버 파일을 만들기 위해서는 커널 소스가 필요합니다. 이미 커널 소스를 가지고 있고, 컴파일까지 되어 있다면 디바이스 드라이버 컴파일 하기로 이동하십시오.

커널 소스가 없는 분은 포럼의 자료실EZ-AU1200을 선택하시고 Kernel 링크를 이용하시면, 커널 버전에 따라 linux-2.x.x.tar.gz 링크가 있습니다. 이 링크를 이용하여 소스를 구하실 수 있습니다.

내려 받은 파일을 적당한 디렉토리에 풀어 놓으신 후, 타겟보드가 사용하는 커널에 맞추어 커널 소스를 먼저 컴파일하셔야 합니다. 소스 컴파일 방법은 "EZ-보드 통합 메뉴얼::커널 이미지 제작 및 설치"를 참고하여 주십시오. 아래는 커널을 컴파일하는 방법 중 EZ-AU1200에 대한 내용입니다.

]# make distclean                  // 모든 환경 설정 및 컴파일 결과를 삭제
]# ./falinux-config.sh ez-au1200   // 미리 준비된 기본 설정 파일로 환경값을 생성
]# make menuconfig                 // 커널 설정 변경(필요 시 실행)
]# make clean
]# make zImage                     // 커널 이미지 생성
                   .... 중략 ....
                   
ipsel-linux-objcopy -O srec arch/mips/boot/compressed/images/zImage
arch/mips/boot/compressed/images/zImage.srec mipsel-linux-objcopy
-O binary arch/mips/boot/compressed/images/zImage arch/mips/boot/compressed/images/zImage.bin
]# 

디바이스 드라이버 컴파일 방법

커널 소스가 준비되어 있다면 EZ-CIM의 디바이스 드라이버 소스 디렉토리로 이동합니다. Makefile 내용 중에 KDIR변수 값에 커널 소스가 있는 디렉토리로 변경합니다. 변경한 후에는 아래의 내용에 따라 컴파일을 실행합니다.

]$ cd dev-au12xx-cim
]$ vi Makefile

#
# kernel 2.6 driver Makefile
#
obj-m  := dev-au12xx_cim.o
dev-au12xx_cim-objs := au12xx_cim.o

KDIR  := /home/jwjw/kernel/linux        // 커널 소스 디렉토리로 변경 후 저장
PWD    := $(shell pwd)

default:
        $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
        cp -f $(obj-m:.o=.ko) /nfs/fg/cim/.


clean :
        rm -rf *.ko
        rm -rf *.mod.*
        rm -rf .*.cmd
        rm -rf *.o
        
]$ make clean
]$ make
            ... 컴파일 완료 ...
]$ $ ls -al
합계 172
drwxrwxr-x 3 jwjw jwjw  4096 10월 11 12:22 .
drwxrwxr-x 5 jwjw jwjw  4096 10월  7 18:23 ..
-rw-rw-r-- 1 jwjw jwjw 21033 10월 11 12:22 .au12xx_cim.o.cmd
-rw-rw-r-- 1 jwjw jwjw   283 10월 11 12:22 .dev-au12xx_cim.ko.cmd
-rw-rw-r-- 1 jwjw jwjw 11432 10월 11 12:22 .dev-au12xx_cim.mod.o.cmd
-rw-rw-r-- 1 jwjw jwjw   216 10월 11 12:22 .dev-au12xx_cim.o.cmd
drwxrwxr-x 2 jwjw jwjw  4096 10월 11 12:22 .tmp_versions
-rwxrwxr-x 1 jwjw jwjw   275 10월 11 12:12 Makefile
-rwxrwxr-x 1 jwjw jwjw     0  9월  5 17:18 Module.symvers
-rwxrwxr-x 1 jwjw jwjw 29747 10월  7 17:33 au12xx_cim.c
-rw-rw-r-- 1 jwjw jwjw 18140 10월 11 12:22 au12xx_cim.o
-rwxrwxr-x 1 jwjw jwjw  1610  9월  5 17:18 au12xx_cimctrl.h
-rwxrwxr-x 1 jwjw jwjw  5893  1월 29  2008 au12xx_cimreg.h
-rw-rw-r-- 1 jwjw jwjw 19124 10월 11 12:22 dev-au12xx_cim.ko     // 디바이스 드라이버가 만들어 졌습니다.
-rw-rw-r-- 1 jwjw jwjw   482 10월 11 12:22 dev-au12xx_cim.mod.c
-rw-rw-r-- 1 jwjw jwjw  1680 10월 11 12:22 dev-au12xx_cim.mod.o
-rw-rw-r-- 1 jwjw jwjw 18301 10월 11 12:22 dev-au12xx_cim.o
]$

insmod 명령을 이용하여 디바이스 드라이버를 커널에 올립니다.

디바이스 드라이버 컴파일 방법

커널 소스가 준비되어 있다면 EZ-CIM의 디바이스 드라이버 소스 디렉토리로 이동합니다. Makefile 내용 중에 KDIR변수 값에 커널 소스가 있는 디렉토리로 변경합니다. 변경한 후에는 아래의 내용에 따라 컴파일을 실행합니다.

]$ insmod dev-au12xx_cim.ko
 dev_au12xx_cim: module license 'DUAL GPL/BSD' taints kernel.
 mode: SIM101B-CCIR656(RAW)-320x240
 register device au12xx_cim 0.30 OK (major=238)
]$

카메라 뷰어

디바이스 드라이버가 만들어 졌으니 카메라 영상을 EZ-보드로 출력해 보겠습니다. 보드를 구매하시면 동봉된 프로그램 중에 "app-cam/viewer" 에 있는 프로그램을 이용하시면 됩니다. 그러나 실행하기 위해서는 app-cmos-sim101b 디렉토리에 있는 파일을 빌드하여 생성한  "app-sim101b" 파일이 필요하므로 먼저 app-sim101b부터 생성하겠습니다.

]$ cd app-cmos-sim101b                       // app-cmos-sim101b 디렉토리로 이동
]$ make                                      // app-cmos-sim101b를 빌드
]$ cp app-cmos-sim101b ../app-cam/viewer     // 뷰어 샘플이 있는 곳으로 복사
]$ cd ../app-cam/viewer                      // 뷰어 샘플 디렉토리로 이동
]$ make
]$ ./app-viwer vga                           // 카메라 영상을 640x480 크기로 출력
Camera vIewer V0.6  Oct 11 2008
____________________________________________________________________
  ./app-viwer [qvga|vga] 

COMS Sensor SIM101B init
...........................................................................................................................................................................................
write reg count 187
select mode VGA   640x480
.........
write reg count 9
 fb: 800 x 600
 mode: SIM101B-CCIR656(RAW)-640x480
 frame 640 x 480

EZ-VTC와의 연결

EZ-AU1200EZ-VTC를 사용하시면 영상을 일반 모니터로 출력할 수 있습니다. 또한 EZ-VTC에서 사용하는 경우를 위해 EZ-CIM은 작은 보드를 함께 제공되고 있습니다.

이 작은 보드에 카메라 보드를 연결한 후, 연결 부분을 납땜하면 수직으로 고정할 수 있습니다. 또한 EZ-VTC에 같은 간격으로 Hole이 준비되어 있습니다. 이 Hole을 이용하여 EZ-CIM을 EZ-VTC보드에 고정할 수 있습니다.

EZ-CIM을 EZ-VTC에 고정한 모습입니다.

이상과 같이 EZ-CIM을 이용하시면 EZ-AU1200에서 카메라를 이용하실 수 있습니다.