U-boot포팅 네번째 시간 입니다.

이번 시간에는 이더넷 포팅에 대해 다뤄 볼까 합니다.

smdk6410과 달리 Ez-s3c6410 보드는 ax88796b 이더넷 칩을 사용합니다.

U-boot는 여러가지 이더넷 칩을 지원하는데요. 요놈 ax88796b는 없더군요…..

ax88796이란 놈이 있긴한데 아쉽게도 ax88796b와는 다른 칩입니다.

어떻게 포팅을 해야 될지 난감하던 차에 이더넷 칩제조사(Asix)에서

AX88796B Linux u-boot Driver Source  For SMDK2440 platform 을 지원 하더군요….ㅎㅎㅎ

이미지 76.jpg

로그인을 하고 압축 파일을 다운 받아 보니 아래와 같았습니다.

이 파일들을 참고해서 6410에 맞게 추가 해주면 되겠죠?

 이미지 77.jpg이미지 78.jpg  

먼저 Ax88796b.c 파일과 Ax88796b.h  \drivers\net 디렉토리에 복사 합니다.

 

이더넷 설정 부분을 추가 해줘야겠죠?

일단 ez-board 회로도를 열어 이더넷 부분을 살펴보니 아래와 같았습니다.

이미지 80.jpg

이미지 81.jpg

 

이더넷 CS#6410 CS1번 핀에 연결되어 있는걸 볼수 있습니다.

CS1번핀은 어떻게 제어해야 될까요? 6410메뉴얼을 살짝 열어봄니다.

이미지 79.jpg

매뉴얼상에 보니 SROMC Bank1 이라고 되어 있는 부분이 CS#1입니다

어드레스 영역은 0x1800000~0x1fffffff 까지라고 되어있군요~~!!

 

\u-boot.6410\include\configs ez6410.h 파일을 수정 해줍니다.

이미지 91.jpg

 

\u-boot.6410\net eth.c 파일을 수정합니다.

이미지 92.jpg

 이미지 93.jpg

AX88796B Linux u-boot Driver Source 상에는 없지만 추가 해줘야 할 부분이 또 있습니다.

 

\board\ez6410 폴더에 ez6410.c 파일을 열어 수정합니다.

이미지 89.jpg

이미지 90.jpg

  

위에 추가해준 부분은 ez-board에 맞춘 이더넷 설정 부분입니다.

6410매뉴얼을 참고로 설명하자면 SROM_BW_REGSROM BUS& Wait 컨트롤 레지스터입니다.

 이미지 82.jpg

이미지 84.jpg

  

SROM_BC1_REG SROM bank 컨트롤 레지스터 입니다. 

이미지 85.jpg 이미지 86.jpg이미지 87.jpg

잘보시면 수정된부분이 이해 되실겁니다. 결론은 이부분 빠지면 동작안한다는거죠...

 

이제 셋팅은 얼추 끝난 것 같군요….빌드 해보겠습니다.

이미지 94.jpg

 이미지 95.jpg

잘되는듯 싶다가 에러가 하나 발생하는군요….;;;

 

이것저것 원인을 찾다보니 분명 ax88796b.c파일안에 존재하는 함수인데 컴파일러가 인식을 못하네요

한동안 삽질좀 했습니다….결론은 요 부분을 주석 처리해서 급한데로 해결은 했습니다.

 

\drivers\net ax88796b.c 파일을 열어 아래 부분을 주석 처리 해줍니다.

이미지 97.jpg  

이미지 98.jpg

다시 빌드 해봄니다.

이미지 99.jpg

 다행히 컴파일은 잘되는군요….

 

과연 보드에서도 잘 동작할까요? 결과는 다음시간에 테스트 해보겠습니다.

 

to be continue….