기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요

S3C2440 보드에 삼성 S5K53BEA 카메라를 포팅하려고합니다.

포팅가이드도 있고, 소스코드도 있는데도

메뉴얼이 커널 2.4용이라서 몇일째 헤매고 있습니다;

몇가지 정말 궁금한 부분이 있어 질문 올립니다

먼저 아래의 메뉴얼에 나와있는데로

2.4용 Makefile을 Make해보았는데

Rules.make파일이 없어서 안된다고 합니다.

참고로 타겟에 포팅된 커널은 2.6입니다.

커널 2.6으로  컴파일해서 그런것 같아서

2.6용 Makefile을 커널디렉토리만 수정해서

컴파일했는데 I2C 관련하여 여러 에러가 뜹니다.

I2C가 무엇이고 어떻게 해야 포팅을 할수 있을까요??


#- 2.4 Makefile  -------------------------------------------
# where the kernel sources are located
KERNEL_DIR := ../../s3c24a0_kernel2.4.20_cee31_dev
TOPDIR     := ../../s3c24a0_kernel2.4.20_cee31_dev

#If you want to Samsung Mega Pixel Camera uncommnet the below line
#and append  "mem=59M" to "CONFIG_CMDLINE" of kernel option
#CAMERA_CONFIGS = -DSAMSUNG_SXGA_CAM
#CAMERA_CONFIGS = -DSAMSUNG_SXGA_V4220
#CAMERA_CONFIGS = -DSAMSUNG_VGA_53BEA
CAMERA_CONFIGS = -DSAMSUNG_SXGA_S5K3AA
#CAMERA_CONFIGS = -DSAMSUNG_UXGA_S5K3BA


###########################################
#SAMSUNG_VGA_S5K53BEA is only for S3C2440
#SAMSUNG_VGA_S5K53BEA=YES
SAMSUNG_SXGA_S5K3AA=YES
#SAMSUNG_SXGA_V4220=YES
#SAMSUNG_UXGA_S5K3BA=YES
###########################################

export-objs        := videodev.o video-driver.o

list-multi        :=

obj-m                := videodev.o videodrv.o imgsensor.o

videodrv-obj    := video-driver.o camif.o camif_fsm.o qt-driver.o
ifeq ($(SAMSUNG_VGA_S5K53BEA),YES)
sensor-obj        := Sensor/53bea_sensor.o
else
ifeq ($(SAMSUNG_SXGA_S5K3AA),YES)
sensor-obj      := Sensor/3aa_sensor.o
else
ifeq ($(SAMSUNG_SXGA_V4220),YES)
sensor-obj      := Sensor/v4220_sensor.o
else
ifeq ($(SAMSUNG_UXGA_S5K3BA),YES)
sensor-obj     :=Sensor/3ba_sensor.o
else
sensor-obj        := Sensor/sensors.o
endif
endif
endif
endif

dummy-obj       = camif.o video-driver.o camif_fsm.o qt-driver.o

here:
        (cd $(KERNEL_DIR); make SUBDIRS=$(PWD) modules)
        @-rm $(dummy-obj)

clean:
        -rm -f *.o .*.o.flags *~

videodrv.o : $(videodrv-obj)
        $(LD) -r -o $@ $(videodrv-obj)

imgsensor.o : $(sensor-obj)
        $(LD) -r -o $@ $(sensor-obj)
        -rm $(sensor-obj)

EXTRA_CFLAGS += $(CAMERA_CONFIGS) -w

include $(KERNEL_DIR)/Rules.make

---------------------------------------------------------------

- 2.6 Makefile --------------------------------------------------

#
#

KERNEL_DIR := ~/kingfish3_26/s3c2440_kernel2.6.10_dev/.
#KERNEL_DIR := ~/cam/s3c2440_kernel2.6.10_dev_camera/.

obj-m           += videodev.o
obj-m           += videodrv.o
obj-m           += imgsensor.o

videodrv-y := video-driver.o camif.o camif_fsm.o qt-driver.o

imgsensor-y := Sensor/3aa_sensor.o

CAMERA_CONFIGS = -DSAMSUNG_SXGA_S5K3AA

EXTRA_CFLAGS += $(CAMERA_CONFIGS) -w

here:
        (cd $(KERNEL_DIR); make SUBDIRS=$(PWD) modules)

clean:
        -rm -f *.o *.ko *.mod.c .*.o.flags .*.cmd *~
        -rm -rf .tmp*
        -rm -f Sensor/*.o Sensor/*.ko Sensor/*.mod.c Sensor/.*.o.flags Sensor/.*.cmd


---------------------------------------------------------------


그리고 혹시 이것과 비슷한 자료를 가지신분은  이멜로 자료좀 보내주시면

정말 감사드리겠습니다.. 이제막시작한 초보학생입니다;; 열심히 해보겠습니다.

혹시해서 포팅 메뉴얼과 소스코드 첨부했습니다

긴글 읽어주셔서 감사합니다^^

고현철

2006.09.27 07:38:53
*.117.46.252

음....i2c때문이라...

i2c는 필립스에서 만든 통신 프로토콜입니다. 칩간 통신에 대한 정의를 해 놓은 것입니다.

필립스의 경우 영상이나, 사운드쪽 칩을 만들기 때문에 나온걸로 생각이 되는데, 주로 영상관련 칩 제어에 많이 쓰입니다.

TV en/decoder나, eeprom, mpeg en/decoder, camera IC 제어에 많이 쓰입니다.

2.4로 해서 되는데 2.6으로 하면 안된다는 얘기는 2.4에서는 i2c루틴이 있고(디바이스 드라이버), 2.6에서는 i2c쪽 드라이버가 포팅이 안되었거나, make menuconfig에서 include를 안 한 상태일겁니다.

aesop용 커널의 경우 i2c를 포팅하였었기 때문에 aesop 커널을 사용한다면 그 부분은 2가지 문제일 듯 싶네요.

1. make menuconfig에서 i2c루틴을 포함하지 않았다.
2. 2.4와 2.6의 i2c driver쓰는 방법이 바뀌었습니다. 해서 2.6 커널을 사용한다면 이전 커널(2.4)에서 작성된 드라이버 소스 중 i2c 구동 부분을 2.6 커널에 알맞게 바꿔줘야 합니다.

고현철

2006.09.27 07:42:52
*.117.46.252

소스를 보니 2.6 커널용도 있는 듯 싶으니.....menuconfig에서 포함 안 시킨 듯 하네요.

참, v4l2(video for linux ver 2)쪽도 포함시켜야 할 듯 하네요.
camera driver 이름을 보니 v4l2용 driver인 듯...

이제현

2006.09.27 07:45:55
*.193.44.18

이 예제에서의 I2C는 카메라 모듈을 제어하기 위한 인터페이스 입니다.
초기화등등 여러가지 일을 하는 것이죠.

만일 SMDK 보드를 사용하고 있다면, 2.4.20 커널로 한번 죽 따라서 해보시고..
아무 문제 없다면, 하나씩 하나씩 2.6 커널로 migration하시는것이 좋을 것 같습니다.

예제 어플리케이션은 qt의 qcop을 이용한 message 처리도 필요하네요.

고현철

2006.09.27 08:44:46
*.117.46.252

이제현님 얘기처럼 일단 2.4.20에서 제 동작하는지 확인한 후
2.6으로 옮겨가면 될겁니다.

동작만 정확히 알고 있다면 v4l2는 무시해도 될겁니다. 예전 기억으로는.....^^

김창연

2006.09.27 18:21:44
*.250.35.153

넵! 바로 실행해보고 결과 올리겠습니다..

그런데 제가 제대로 하고 있는지 모르겠지만, 커널은 이미 컴파일 해서 타겟에 올린
상태입니다.

순서를 잘모르겠습니다.

1: 커널컴파일 -> 포팅 -> 카메라 드라이버 컴파일 -> 커널 재컴파일 ->드라이버 포팅

2: 카메라 드라이버 컴파일 -> 커널컴파일 -> 같이 포팅

1번인지 2번인지 아님 전혀틀렸습니까??

그리고, menuconfig에서 i2c관련하여 어떤 모듈을 체크해야하는지 좀가르켜주세요^^

고현철

2006.09.27 20:24:15
*.117.46.252

음....

1, 2번 둘다 틀렸고요.
menuconfig는 커널마다 틀립니다. 해서 작업자가 알아서 해야하는 부분이고요.
menuconfig -> 커널 컴파일 -> 드라이버 컴파일(모듈로, 될때까지 반복)

리눅스 개발환경에 대해서 좀 더 자세히 보신 후 테스트 해보시기 바랍니다.

김창연

2006.09.28 22:11:48
*.250.35.146

커널2.6용 드라이버소스와 makefile수정후에 파일 다시 올렸습니다.

어제 하루종일 매달렸는데 제자리 걸음이네요;;;

아래는 에러로그 메시지 입니다.

도데체 왜이럴까요???
----------------------------------------------------------------------
[root@paradoxx MiscDriver]# make
(cd /root/workspace/9_27/model1/build/linux; make SUBDIRS=/usr/src/new_work/MiscDriver modules)
make[1]: 들어감 `/root/workspace/9_27/model1/build/linux' 디렉토리
CC [M] /usr/src/new_work/MiscDriver/Sensor/3aa_sensor.o
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:81: error: unknown field `normal_i2c_range' specified in initializer
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:83: error: unknown field `probe_range' specified in initializer
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:85: error: unknown field `ignore_range' specified in initializer
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:86: error: unknown field `force' specified in initializer
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c: In function `s5x532_attach':
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:178: error: structure has no member named `id'
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:183: error: structure has no member named `data'
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c: At top level:
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:303: error: `I2C_ALGO_S3C' undeclared here (not in a function)
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:303: error: initializer element is not constant
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:303: error: (near initialization for `sensor_driver.id')
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c: In function `iic_gpio_port':
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:319: error: `S3C2440_GPECON' undeclared (first use in this function)
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:319: error: (Each undeclared identifier is reported only once
/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.c:319: error: for each function it appears in.)
make[2]: *** [/usr/src/new_work/MiscDriver/Sensor/3aa_sensor.o] 오류 1
make[1]: *** [_module_/usr/src/new_work/MiscDriver] 오류 2
make[1]: 나감 `/root/workspace/9_27/model1/build/linux' 디렉토리
make: *** [here] 오류 2

고현철

2006.09.28 22:19:08
*.117.46.252

i2c 관련 함수들이나 define등이 안되어 있다는 얘기네요....

맞춰주셔야 할 듯....

김창연

2006.09.28 22:21:27
*.250.35.146

방금 확인해 보았는데

메뉴얼에서 알려준 컴파일후에 생성되는 라이브러리

videodev.o, videodrv.o, imgsensor.o 라는 파일이 생성되긴했습니다.

근데 위에처럼 에러가 발생했는데 그대로 사용해도 될까요???

고현철

2006.09.29 05:35:48
*.117.46.252

.o 파일들은 그냥 object들이고 최종적으로는 .ko 파일이 생성됩니다.

위의 에러때문에 실제로 .ko가 안생겨난것일 듯 합니다.

김창연

2006.10.03 21:31:14
*.61.255.117

3개 파일로 되는것같습니다. 감사합니다~^^
List of Articles
번호 제목 글쓴이 날짜 조회 수sort
6188 안드로이드 마이크 입력이 끊어집니다. [25] GloomyDay 2014-04-03 2976
6187 [ODROID] MediaPlayer RTSP 테스트 중입니다. [1] 규야 2010-03-12 2968
6186 SDRAM 설계변경 [2] 조정근 2008-09-19 2960
6185 Android 단말에서 Rndis Host Driver를 사용할 수 있나요? acedon 2013-05-10 2946
6184 Android nand에 포팅시 kernel panic에 대한 질문입니다. [3] 최종환 2009-03-21 2942
» S3C2440 보드에 삼성 CCD 카메라 포팅 질문입니다..[완료] [11] 김창연 2006-09-27 2940
6182 6410 jffs2 사용시 erase block의 의미가 무엇인지요? [3] 윤인성 2009-03-04 2939
6181 [arndale][origen] 커널 2.6이 돌아가는 리눅스 [3] monad 2013-05-02 2931
6180 LX800에 사용할만한 3.5인치 LCD가 [5] 황민순 2008-09-17 2922
6179 S3C6410의 USB 2.0 OTG 질문입니다. [4] 여정휘 2009-02-14 2913
6178 ODROID-T의 App. Heap Memory 부족 문제. [6] 최가이버 2010-07-07 2911
6177 핼프미 VGA칩 TDA8771질문좀 부디 [2] 노상혁 2007-10-31 2905
6176 [완료] xp설치중 usb 주변기기사용불가한가요? [5] 황철진 2007-05-11 2905
6175 [질문]AESOP-LX800 용 네비게이션 선택? [2] 윤덕배 2007-05-25 2902
6174 [u-boot] 1.1.6 에서의 NAND 부트 관련 [2] 황인용 2009-04-11 2899
6173 S3C6410 MLC NAND 질문입니다. [3] 우한규 2009-05-27 2894
6172 [완료] USB DMB 모듈 추천좀 해주세요 [2] 한영민 2007-05-11 2891
6171 7인치 LCD 관련 문의 및 도움 요청 [3] 차준호 2008-05-22 2886
6170 mknod 메이저 마이너 번호에 대해서 궁금한게 있는데요 [1] biokk 2014-02-17 2881
6169 [질문] LAN카드와 해상도 질문드립니다. [2] 김증일 2007-05-09 2880

사용자 로그인