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-AU1200에 EZ-VTC를 사용하시면 영상을 일반 모니터로 출력할 수 있습니다. 또한 EZ-VTC에서 사용하는 경우를 위해 EZ-CIM은 작은 보드를 함께 제공되고 있습니다.
이 작은 보드에 카메라 보드를 연결한 후, 연결 부분을 납땜하면 수직으로 고정할 수 있습니다. 또한 EZ-VTC에 같은 간격으로 Hole이 준비되어 있습니다. 이 Hole을 이용하여 EZ-CIM을 EZ-VTC보드에 고정할 수 있습니다.
EZ-CIM을 EZ-VTC에 고정한 모습입니다.
이상과 같이 EZ-CIM을 이용하시면 EZ-AU1200에서 카메라를 이용하실 수 있습니다.