ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 임베디드시스템 RTOS(실시간 운영체제) 개발하기 - 화성탐사선 소프트웨어 vxWorks
    정보통신에너지/임베디드 시스템 2012. 12. 13. 02:45


     

     

     

     

     

    오늘은 잠도 안오고 심심해서 제가 가끔 만지작 거리는

     

    vxWorks라는 프로그램에 대해서 이야기를 좀 해볼까 합니다.

     

     

    vxWorks 란 것은 RTOS라고 하는 실시간 운영체제 입니다.

     

    RTOS 실시간 운영체제는 크게

     

    임베디드 리눅스가 있고 vxWorks 가 있는데

     

    vxWorks는 좀 오래되고 가격이 비싼데다가 굉장히 특수목적용 운영체제라

     

    잘 보기 어렵습니다.

     

    보통 비행기, 배, 기차, 고속철도, 우주선 뭐 이런데 많이 쓰죠.

     

    대표적으로 러시아 화성탐사선 스푸트니크 1호가 vxWork로 제작이 되었어요.

     

    대부분 요새는 임베디드 리눅스를 많이 쓰죠.

     

    아무튼 요새 이슈가 되는 자동화, 임베디드, 로봇 뭐 이런 분야에

     

    기계공학적인 기술과 하드웨어 소프트웨어 전자기술 등

     

    모든 기계전자공학들이 짬뽕 믹스된..

     

    아주 더럽게 복잡한 분야라 할 수 있습니다. ㅋ

     

     

    실제로 문제가 발생하면 이게 하드웨어에서 나온 문제인지 소프트웨어에서 나온 문제인지

     

    잘 구분이 안가서 짜증날 때가 많아요 ㅋ

     

     

    어쨌든 간에 전 리눅스 CentOS, vxWorks, C언어, PHP, 자바 이클립스, MFC, C++ 등등..

     

    대부분의 언어는 한번씩 다 깔짝거려 보긴 했는데

     

    C언어랑 vxWorks는 진짜 토나올 정도로 한 것 같습니다.

     

    물론 아직도 미숙하고 모르는 부분도 많긴 하지만

     

    어째뜬 이제 C언어의 C 자만 나와도 씨발이 먼저나오네요

     

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

     

     

    어쩃든 vxWorks는 C언어랑 C++가 적용됩니다.

     

    포직스와 ANSI에서 적용되는 것들을 다 사용할 수 있고요.

     

    여러가지 옵션을 줘서 이렇게 저렇게 조작이 가능합니다.

     

     

    vxWorks를 다루는 툴은 크게 Tornado 와 Workbench가 있는데

     

    전 Tornado를 사용했었지요.

     

    Workbench가 더 최신이긴 한데 안정성은 Tornado가 더 좋다는 말이 있습니다.

     

     

    어쨌든 기본원리는 TASK 체제에요.

     

    리눅스 시스템 프로그래밍을 해보면 왜 그거 있잖습니까?

     

    엄마 프로세스 자식 프로세스 만들어 놓고

     

    시그널로 왔따갔다 하기도 하고 메시지큐도 날리고 뭐 그렇게 하는데

     

    vxWorks에서는 그 프로세스가 TASK 개념으로 적용이 됩니다.

     

    완전히 똑같은데 좀더 단순화된 구조입니다.

     

    어쨌든 RTOS의 장점은 시간관리가 굉장히 좋다는 것이죠.

     

    TASK DELAY를 주면 굉장히 미세한 시간 간격까지 조절이 가능해집니다.

     

     

    어쨌든

     

    기억나는 명령어 몇개 쳐보면서 마칠까 하네요.

     

     

    int main()

    {

    taskspawn(CTRFT(FUNCT),run,0,0,0,0,0,0,0,0);

    }

     

    int run()

    {

    int i;

    char a;

    char b;

    char c;

     

    if(char a == 0)

    {

    for(i=0;i<100;i++)

    {

    printf("RUN TASK가 실행되었습니다. 앞으로 100번 루프 후 종료됩니다.\n");

    }

    }

     

    }

     

     

    ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

     

    아무렇게나 기억나는대로 끄적거려봤네요.

     

    아~~~~~~ 한때 그래도 열나게 프로그래밍 하던 때가 그립네요

     

    그때는 진짜 짜증났는데...

     

    모든 추억이란 지나고 보면 몹시 그리운 것 같습니다....

     

     

    이제는 C언어는 당분간 접어두고..

     

    PHP 와 MySQL 개발에 한창 열을 올려야 할 것 같습니다.

     

    PHP는 인클루드가 없어서 훨씬 쉽다고 하더라구요.

     

    해봐야 알겠지만

     

    링크드리스트나 멀티태스킹 이런 게 잘 안쓰이니까

     

    복잡도 면에서는 훨씬 단순하지 않을까 싶긴하네요. ㅋ

     

     

     

     

     

    댓글