2009년 6월 25일 목요일

android kernel porting try #6

uart에서 막혀서 몇일 동안 밤낮을 전패하며

어디가 잘못됬나 알아봤지만 답을 알 수 없었다.

처음에는 uart쪽에 문제가 있는 것으로 생각을 하여 /drivers/serial/serial_core.c, pxa.c 파일을 체크해보고 수정을 해보려고 했다.

그리고 빌드 순서와 커널 올라가는 순서가 같은 줄 알고 그 부분에 대해 디버깅을 위해

printk문을 써가면 노가다 성으로 알아보려고 했으나 큰 성과가 없었다.

그러다가 빌드할때 컴파일되는 파일들을 일일히 찾아 살펴보았다.

그러다가 원래 올라가 있었던 2.6.15버전의 커널과 비교해 볼것을 생각해내었고

/arch/arm/mach-pxa/mainstone.c 파일을 비교해보니 그 파일에 device들에 대해 설정을 해준것이 보였고 현재 빌드 시도 중인 안드로이드 커널과 비교를 하여 수정을 해주었다.

두 파일의 내용은 비슷한듯 하지만 버전이 차이가 많이 나서 그런지 차이점도 많았다.

그래서 조금씩 비슷하게 수정을 해보았다. 수정을 한 후 다시 빌드를 하여 보드에 올려보았다.



이와 같이 uart는 통과가 되었으나 다시 멈추었는데 이번에는 커널패닉이라는 에러 메시지를 출력하고 멈춰버렸다.

이 에러가 처음에는 메모리 관련 에러라고 생각을 잘못하였다가 프레임버퍼 문제인지 파악하여 세븐코아 안드로이드 포팅 문서에 있는 /drivers/video/pxafb.c, pxafb.h 프레임버퍼 파일 수정을 적용해 주었다.

바로 적용을 해주었으나 컴파일시 에러가 발생하였고 확인해보니 그 문서에 있는 것은 2.6.27버전에서의 수정이어서 2.6.29버전은 바로 적용을 해줄수는 없고 수정을 해줘야했다.

그 구문의 위치를 파악하여 구문을 조금씩 수정해서 파일을 수정해 주었고 에러메시지가 나오지 않게 모든 에러들을 잡아 주었다.

그 후 다시 빌드를 하여 보드에 zImage를 올려보았으나 조금 변화가 있었으나 커널 패닉이 발생하였다.

댓글 없음:

댓글 쓰기