본문 바로가기

RTEMS5

RTEMS 태스크의 실행 과정 RTEMS 어플리케이션에서 태스크의 실행은 rtems_task_start 함수를 통해 진행된다. 해당 함수는 커널에서 아래와 같은 과정으로 진행된다.- RTEMS 어플리케이션 레벨에서 태스크의 정보를 인자로 받음- RTEMS 어플리케이션 레벨의 함수는 RTEMS 커널의 Core 함수중 Thread 관련 함수를 호출 좀 더 자세하게 함수 호출 과정을 살펴보면 아래와 같다.rtems_task_start 함수는 _Thread_Start 함수를 호출하고, 해당 함수는 _Thread_Ready 함수를 호출한다. 해당 부분은 dormant 한지 if문을 통해 확인하고 호출된다. _Thread_Start 함수에서는 태스크의 entry_point를 성정하고, _Thread_Ready 함수는 _chain_append_u.. 2016. 9. 30.
RTEMS 커널에 파일 추가 혹은 삭제하기 RTEMS 커널에 파일을 추가 혹은삭제를 하면 기본적으로 존재하는 Makefile을 수정하고 이를 반영시켜서 커널을 bootstrap 해주어야합니다. 만약 rtems-4.10/cpukit/score/inline에 test.h라는 파일을 추가하였다면 rtems-4.10/cpukit/score/Makefile.am 파일을 수정해야합니다.해당 파일 외의 Makefile.in이나 preinstall.am은 bootstrap 과정에서 툴에의해 자동적으로 생성되는 파일이므로 수정할 수 없습니다. RTEMS 커널 내부의 Makefile.am들은 대게 동일한 모습으로 작성되어있습니다. Makefile.am의 내용은 아래와 같습니다. Makefile.am에는 헤더부분과 *.c 코드등이 세부적으로 나누어 작성되어있으므로 .. 2016. 9. 30.
Sparc 계열을 위한 RTEMS 커널 컴파일 하기 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 라는 툴을 사용해서 커널을 .. 2016. 9. 30.
RTEMS C 기본 소스코드 RTEMS C언어 어플리케이션은 아래의 소스코드 형태와 같이 가장 기본적인 설정(#define)이 포함되어야 한다. 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include #include #include rtems_task task1(rtems_task_argument unused); rtems_task Init(rtems_task_argument ignored) { rtems_id tid; rtems_status_code status; rtems_name name; name = rtems_build_name('T', 'A', 'S', 'K'); status = rtems_task_c.. 2016. 6. 1.
Ubuntu에서 LEON 용 RTEMS Corss Compiler (RCC) 설치하기 RTEMS를 Linux에서 Cross Compile 하기 위해서는 해당 Cross Compiler가 필요합니다.(RTEMS: https://www.rtems.org/ ,https://en.wikipedia.org/wiki/RTEMS) 특히 지금 사용하고 있는 Sparc 프로세스에 맞추어 만들어진 Cross Compiler가 필요합니다.Cross Compiler에 대한 설명은 https://en.wikipedia.org/wiki/Cross_compiler를 참고하시면 됩니다. 크로스 컴파일러를 사용할 수 있는 환경을 일일이 설치하려면 각 프로그램 사이의 버전에 대한 의존성을 확인해야 하므로 번거로울 수 있습니다. 따라서 저는 Gaisler 에서 제공하는 Sparc RTEMS Cross Compiler(RC.. 2015. 4. 17.