안녕하세요! 이번에 가입하게 되었습니다.
커널 포팅중에 문제가 생겨서 이렇게 질문 드립니다.
BCM5358(MIPS) 칩에 2.6.32 버전을 포팅중입니다.
위 칩에는 2.6.22 버전이 이미 올라가있는데요, 2.6.32로 업그레이드를 하고 있습니다.
chip 아키텍쳐 관련 소스는 2.6.22 버전과 동일한 것을 사용하여 컴파일을 했습니다.
문제는 커널 부팅 도중 중간에서 멈추는데요. console 드라이버를 초기화 하는 함수 부근에서 멈춰버립니다.
계속 디버깅 및 분석을 하고 있습니다만...
나름 지금까지 진행한 결과를 보면...
local_irq_enable( ) 을 설정하지 않으면, 콘솔이 enable됐다고 메시지가 뜨면서 넘어갑니다.
그 뒤에 멈추는데, calibreate_delay( )에서 멈춰버립니다. MIPS단위로 CPU 성능을 측정하는 함수인데, 여기서 멈추네요..
이 함수를 제거하면 쮹 더 진행을 하면서 signals_init( )까지 진행을 하고 kernel panic이 발생하고 멈춰버립니다.
물론 local_irq_enable( )을 제거해야 가능합니다.
즉 local_irq_enable( )을 세팅을 하면 중간에서 멈춰버리는데요.. 이 함수가 인터럽트을 활성화 해주는 함수인데...
왜 저 함수만 활성화 시키면 멈추는지 참 알기가 어렵네요. 이걸로 보면 CPU의 인터럽트 관련 세팅이 잘못됐다고 봐야하는데...
전에 정상적으로 부팅된 Chip 아키텍쳐 소스를 가져다 썼고, Chip 소스는 수정된게 없습니다.
여기서 질문은...
1) CPU 인터럽트 관련 설정이 잘못되면 위와 같은 증상이 나타나는지요?
2) 위와 같은 증상이 인터럽트 설정이 잘못됐다고 봐야 하는게 맞을까요?
3) 만약 인터럽트 설정이 잘못된 거라면.. 어떤 부분을 봐야 할지..? 다른 부분이 잘못 설정이 됐다면 어떤부분을 봐야할지?
MIPS계열은 처음이라 경험도 부족해서 어렵네요^^ 고수님들의 많이 조언 및 답변 부탁드립니다.
장시간동안 디버깅중이라 점점 지쳐가기도 합니다ㅎㅎ
큰 도움 주신분께는 제가 찾아가서 저녁 사드립니다.(정말입니다^^)
댓글 0
.