본문 바로가기
IT/RTEMS

Sparc 계열을 위한 RTEMS 커널 컴파일 하기

by SH_SH 2016. 9. 30.




RTEMS 커널을 빌드하기 위해서는 Sparc RTEMS Cross Compiler(RCC)와 RTEMS 커널 소스가 필요합니다.


Sparc RCC와 커널 소스는 Gaisler의 홈페이지(http://gaisler.com/index.php/downloads/compilers)에서 받을 수 있습니다.

이외의 버전은 RTEMS github(https://github.com/RTEMS/rtems)에서 받을 수 있습니다.


RCC의 설치 및 설정은 이전글인 "Ubuntu에서 LEON 용 RTEMS Corss Compiler (RCC) 설치하기" 를 참고하시면 됩니다.


현재 안정화 버전은 4.10이므로 4.10을 기반으로 진행합니다. 

(4.11 이상의 버전에서는 source-builder 라는 툴을 사용해서 커널을 컴파일할 수 있어서 좀 더 편리해진 것 같습니다.)


RTEMS에서의 커널 컴파일은 크게 2가지로 나누어집니다.

1. 커널 bootstrap

2. 커널 configure 및 make


1. 커널 bootstrap

커널 bootstrap 과정은 커널에서 파일을 추가, 삭제하거나 변경된 경우에만 진행하면 됩니다. 이외의 경우는 configure 과정을 바로 진행하면 됩니다.

bootstrap 과정은 아래의 3가지 명령어를 통해 클린-생성-bootstrap 과정을 진행하게 됩니다. 

생성 과정에서는 *.am 파일들과 같이 bootstrap에 필요한 파일을 생성합니다.


아래의 과정은 RTEMS 커널 디렉터리로 이동한 후 진행하면됩니다.

  $ ./bootstrap -c

  $ ./bootstrap -p

  $ ./bootstrap 


 bootstrap 과정은 아래의 스크린샷과 같이 진행되며 약 5~10분 정도 소요됩니다. 만약, bootstrap 과정 중에 문제가 발생해도 끝까지 진행되므로 마지막에 정상적으로 진행되었는지 확인할 필요가 있습니다.

./bootstrap -c


./bootstrap -p


./bootstrap



2. 커널 configure 및 make

1에서 진행한 bootstrap 과정이 정상적으로 끝나면 커널 소스 디렉터리에서 나와 새로운 디렉터리를 만들도록 합니다.

저는 leon3를 타겟으로 하기때문에 leon3라는 디렉터리로 만들었습니다. 


우선 bootstrap 과정에서 생성된 configure 파일을 통해 커널을 설정해주어야 합니다. 

여기서 중요한 부분은 자신의 RCC가 bashrc에 잘 적용되어있는가입니다. 


configure 과정은 자신이 원하는 부분에 따라 다를 수 있으므로 configure 내용을 확인하고 진행하는 것이 좋을듯합니다.

저는 아래와 같이 configure을 하였습니다.


   $../rtems-4.10/configure --target=sparc-rtems --enable-rtemsbsp=leon3 --enable-posix --disable-samples --disable-tests


configure 과정에서 필요한 부분은 target 부분으로 자신의 RCC에 맞추어 설정해야합니다. 만약 RCC가 sparc-rtems4.10-xxx 라면 타겟에 sparc-rtems4.10 과 같이 적어주어야합니다. 

그리고 rtemsbsp 를 지정하지 않으면 leon3, erc32등의 다수의 bsp를 컴파일할 수 있고 특정 bsp들로만 구성하고 싶으면 --enable-rtemsbsp="erc32 leon3"와 같이 작성하면됩니다.

나머지의 옵션들은 작성하지 않으면 기본설정으로 설정 및 컴파일 되게됩니다.


configure 과정은 약 30초 내외로 진행되고 정상적으로 마치면 아래와 같이 출력됩니다.



configure 과정을 거치면 아래와 같은 파일이 생성됩니다.



이후 make 명령어를 입력하여줍니다. make 과정은 약 5~10분 정도 소요됩니다.


   $make


make 과정중에서 오류가 발생하지 않으면 아래와 같이 종료됩니다.



이제 make install을 입력합니다.


   $make install


make install 과정이 정상적으로 끝나면 아래와 같이 종료됩니다.



모든 단계를 마치면 아래와 같은 파일들이 생성된것을 볼 수 있습니다. 여기서 kernel 내용이 들어있는 부분은 sparc-rtems 디렉터리 입니다.



해당 디렉터리를  cp 혹은 mv  명령어를 통해 RCC가 설치된 폴더의 sparc-rtems에 덮어씌워주면 모든 과정이 끝납니다.


   $cp -r sparc-rtems /opt/rtems-4.10


만약 cp 과정을 없애고 싶으면 configure 단계에서 make install 경로를 설정해주면됩니다.