안녕하세요
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
---------------------------------------------------------------
그리고 혹시 이것과 비슷한 자료를 가지신분은 이멜로 자료좀 보내주시면
정말 감사드리겠습니다.. 이제막시작한 초보학생입니다;; 열심히 해보겠습니다.
혹시해서 포팅 메뉴얼과 소스코드 첨부했습니다
긴글 읽어주셔서 감사합니다^^
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 커널에 알맞게 바꿔줘야 합니다.