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

새해 복 많이 받으십시요.


보드 : MDS rebis s3c2440a
커널 : 2.6.13


  2.4 용으로 작성했던 cam driver 를 2.6.13에 붙이고 있습니다.

드라이버를 2.6 스타일로 변경하고 컴파일까지 잘 마무리 되었습니다. 이제 올리면 잘 돌아가겠지 하는 생각으로 insmod cam_driver.ko 를 했는데 전혀 예상치 못한 에러가 발생했습니다.


poplinux@rebis modules]$ insmod cam_driver.ko
Using cam_driver.ko

Unable to handle kernel paging request at virtual address f08000000
pgd = c7b44000
[f08000000] *pgd=00000000
Internal erro: Oops: 5 [#1]
Modules linked in: cam_driver videodev
CPU: 0

PC is at camif_setup_sensor+0x48/0xcc [cam_driver]
LR is at schedule_timeout+0x98/0xbc
.
.
.
.


디바이스 드라이버를 올리면 다음과 같은 순서로 함수가 호출됩니다. (물론 임의로 짠 거여서 중요한 내용은 아닙니다.)

camif_m_in()
camif_init()
camif_setup_sensor()

문제는 camif_setup_sensor() 함수를 실행할 때 레지스터 셋팅을 하는 부분에서 발생됩니다.

camif_setup_sensor(){

rCIRSRCFMT |= (0x1<<31); // by lovejin

}

위와 같이 레지스터 셋팅을 하면 커널 패닉이 발생되는 것입니다.

rCIRSRCFMT 는 aesop 2.6.13 커널엔 없는 내용인데 제가 사용하던 2.4 커널을 참조해서 include/asm/arch/map.h 에 추가했습니다.

include/asm/arch/map.h

/*CAMIF */
#define S3C2440_PA_CAMIF  (0x4F000000)
#define s3C24XX_VA_CAMIF  S3C2410_ADDR(0x00800000)
#define S3C2440_SZ_CAMIF  SZ_1M

#define VA_CAM_BASE    S3C24XX_VA_CAMIF
#define rCISRCFMT   (*(volatile unsigned *)(VA_CAM_BASE+ 0x00))


혹시나 해서 다음과 같이 rBWSCON 레지스터의 값을 찍는 코드를 추가했습니다.


camif_setup_sensor(){

printk("rBWSCON %xn",rBWSCON);
printk("rCIRSRCFMT %xn",rCIRSRCFMT);
rCIRSRCFMT |= (0x1<<31); // by lovejin

}

위와 같이 하면 rBWSCON 값은 잘 찍힙니다. (아 물론 rBWSCON 레지스터는 include/asm/arch/map.h 에 선언해 놓은 상태입니다. )

rBWSCON 값을 읽기도, 쓰기도 잘 되는데 rCIRSRCFMT 레지스터는 읽기도 쓰기도 안되고 커널 패닉이 발생합니다.


혹시 원인이 무엇일까요?


고현철

2007.01.05 11:55:19
*.187.44.150

MMU setting 해주셨나요?

/*CAMIF */
#define S3C2440_PA_CAMIF (0x4F000000)
#define s3C24XX_VA_CAMIF S3C2410_ADDR(0x00800000)
#define S3C2440_SZ_CAMIF SZ_1M

#define VA_CAM_BASE S3C24XX_VA_CAMIF
#define rCISRCFMT (*(volatile unsigned *)(VA_CAM_BASE+ 0x00))


이 부분이 실제 커널에 적용이 되도록 MMU 세팅을 해주셔야 할겁니다.
매핑이 안되어 있으므로 패닉이 발생한 듯 싶습니다.

고현철

2007.01.05 11:55:59
*.187.44.150

mach-aesop2440.c를 보시면 mmu 세팅하는 부분의 iodesc map이 있을겁니다.

그부분을 참조해 보시기 바랍니다.

김유석

2007.01.05 23:38:23
*.106.174.59

네 그 부분을 찾았습니다.

map_desc aesop2440_iodesc[] __initdata ={
{ (unsigned long)S3C24XX_VA_IIS, S3C2410_PA_IIS, S3C24XX_SZ_IIS, MT_DEVICE},
{ (unsigned long)S3C2440_VA_CAMIF, S3C2440_PA_CAMIF, S3C2440_SZ_CAMIF, MT_DEVICE},
};

을 찾아서 위와 같이 추가했습니다.

추가 질문이 있습니다.

다른 레지스터 군들은 (메모리, I2C, USB 등등) 위와 같이 직접 추가를 하지 않았는데도 정상 동작합니다. 그래서 제가 의심했던 것은 더 밑에 있는 struct platform_device *aesop2440_device[] 에 설정을 해 줘야 하는 게 아닌가 라는 생각을 했었습니다.

다른 레지스터 군들은 어느 쪽에서 io mapping을 해 주는 것인가요?

고현철

2007.01.06 21:08:03
*.117.46.252

다른 레지스터군들은 include/asm-arm/arch-s3c2410/map.h 입니다.

대부분은 여기서 하는데, 안되어 있을 경우는 직접 해줘야지요.

김유석

2007.01.06 23:05:00
*.106.174.59

답변 감사합니다.

실은 map.h 에 이미 등록을 해 놓은 상태였습니다.

그 상태에서 CAM 관련 레지스터를 접근하려다가 커널 패닉이 발생한 상태해서 고현철님 조언대로 map_desc 에 따로 등록을 해서 사용하니까 동작한 상황입니다.

그래서 다른 레지스터 군들도 map_desc 에 등록해야 하는게 아닌가 해서 커널 소스를 검색해 보았는데 따로 등록하는 부분을 찾지 못해서 질문 올릴 것이었습니다.

작업 진행하면서 의구심이 해결되면 PDS 에 올리겠습니다.
List of Articles
번호 제목 글쓴이 날짜sort 조회 수
328 T-flash에 SD아답터를 사용하면...[완료] [1] 최정수 2007-01-05 787
» 레지스터 질문 드립니다.[완료] [5] 김유석 2007-01-05 912
326 동영상 강좌 다운받는 곳[완료] [5] 이태간 2007-01-05 1105
325 [질문] aESOP 3rd보드의 메모리 맵 확인. <-[완료] [3] 유태경 2007-01-05 644
324 추가 질문 하나만 더 드릴께요.[완료] [3] 김재우 2007-01-04 689
323 TFTP문제인것 같은데 도움 부탁드립니다.[완료] [1] 김재우 2007-01-04 802
322 [질문] AESOP Package.. <-[완료] [11] 유태경 2007-01-04 818
321 부팅 방법에 관한 질문. [완료] [1] 박기호 2007-01-03 863
320 스피커 및 건전지 소켓 연결방법[완료] [3] 이태간 2007-01-03 1194
319 [질문] TFTP error: 'Permission denied' (0) <= 완료 [4] 김의호 2007-01-03 1057
318 [답변]UDP 데이터 통신에 관한 질문 [1] 최현진 2007-01-03 670
317 UDP 데이터 통신에 관한 질문[완료] [2] 천재욱 2007-01-02 702
316 source /etc/profile 에서 "source" 질문입니다. [5] 이재훈 2007-01-01 736
315 이솝보드내 메모리 메핑관한질문.. [3] 무상 2006-12-30 2411
314 samba 서버 관련 문의...... [5] 최상의 2006-12-30 834
313 FedoraCore6에서 설정 완료하신분 도움 부탁드립니다.[완료] [2] 김재우 2006-12-30 796
312 mkimage 명령은 어떻게 추가하나요?[완료] [3] 조준동 2006-12-30 1113
311 CS8900에서... [완료] [2] 김영곤 2006-12-29 729
310 [부트로고] 부트 로고 바꾸는 법 질문 드립니다. [2] 김유석 2006-12-29 879
309 slackware11.0 doc 설치문서에서 ... 4. aesop 개발환경파일셋팅 ?[완... [4] 조준동 2006-12-28 717

사용자 로그인