실시간 애플리케이션 개발을 위한 통합 개발 환경(IDE)을 설정하는 것은 Preempt RT 시스템에서 실시간 기능을 활용하기 위해 매우 중요하다. 이 장에서는 대표적인 두 가지 IDE인 Eclipse와 Visual Studio Code(VS Code)를 사용하여 개발 환경을 설정하는 방법을 설명한다.

Eclipse 설정

Eclipse는 강력한 플러그인 시스템과 다양한 개발 언어를 지원하는 오픈 소스 IDE이다. Preempt RT 환경에서 실시간 애플리케이션을 개발하기 위해 Eclipse를 설정하는 절차는 다음과 같다.

Eclipse 다운로드 및 설치

  1. Eclipse IDE for C/C++ Developers 패키지를 다운로드한다. 이 패키지는 C/C++ 개발에 필요한 기본 도구를 포함하고 있다.
  2. 설치 프로그램을 실행하고, 원하는 위치에 Eclipse를 설치한다.
  3. 설치가 완료되면 Eclipse를 실행하여 새로운 워크스페이스를 설정한다.

C/C++ 개발 환경 설정

Eclipse에서 Preempt RT 환경을 지원하는 C/C++ 개발 환경을 설정하려면 다음 단계를 따른다.

  1. GCC 컴파일러 설정:
  2. Window -> Preferences -> C/C++ -> Build -> Environment 경로로 이동한다.
  3. New... 버튼을 클릭하여 새 환경 변수를 추가한다.
  4. Name 필드에 PATH를 입력하고, Value 필드에 GCC 컴파일러 경로를 입력한다.
  5. ApplyOK 버튼을 클릭하여 설정을 완료한다.

  6. GNU Autotools 설치:

  7. Eclipse에서 GNU Autotools를 사용하여 빌드 환경을 설정할 수 있다.
  8. Help -> Eclipse Marketplace를 선택하고 Autotools 플러그인을 검색하여 설치한다.
  9. 설치 후 Eclipse를 재시작하여 플러그인이 제대로 설치되었는지 확인한다.

  10. Preempt RT 라이브러리 포함:

  11. Preempt RT 시스템의 특수 라이브러리들을 Eclipse 프로젝트에 포함시켜야 한다.
  12. 프로젝트 설정에서 C/C++ General -> Paths and Symbols -> Includes 경로로 이동하여 Preempt RT 관련 헤더 파일 경로를 추가한다.

  13. Build Configuration:

  14. 프로젝트를 우클릭하여 Properties -> C/C++ Build -> Settings로 이동한다.
  15. Tool Settings 탭에서 Cross GCC를 선택하고, 컴파일러 및 링커 옵션을 설정한다. 이 단계에서 Preempt RT 커널의 특성을 반영한 옵션을 추가로 설정해야 할 수 있다.

Eclipse에서의 디버깅 설정

  1. GDB 설정:
  2. 실시간 애플리케이션은 타이밍이 매우 중요하기 때문에 디버깅 도구 역시 실시간 특성을 지원해야 한다. Eclipse는 기본적으로 GDB를 사용하여 디버깅을 지원한다.
  3. Run -> Debug Configurations로 이동하여 새로운 디버깅 구성을 만든다.
  4. C/C++ Application을 선택하고, 타겟 실행 파일을 지정한 후, GDB가 설치된 경로를 확인하고 설정한다.

  5. 실시간 디버깅 주의 사항:

  6. 실시간 애플리케이션을 디버깅할 때는 일반적인 디버깅 기법이 시스템의 실시간 성능에 영향을 미칠 수 있다. 예를 들어, 중단점 설정 시 실시간 스케줄링이 지연될 수 있으므로, 비실시간 환경에서 충분히 테스트한 후 실시간 환경에서 최종 확인하는 것이 중요하다.

Visual Studio Code 설정

VS Code는 가볍고 확장성이 뛰어난 코드 편집기로, 다양한 확장 프로그램을 통해 실시간 애플리케이션 개발을 지원할 수 있다. Preempt RT 환경에서 VS Code를 설정하는 방법은 다음과 같다.

VS Code 다운로드 및 설치

  1. Visual Studio Code의 공식 웹사이트에서 최신 버전을 다운로드하고 설치한다.
  2. 설치 후, VS Code를 실행하고, 기본 설정을 완료한다.

C/C++ 확장 프로그램 설치

  1. C/C++ Extension 설치:
  2. VS Code의 Extensions 메뉴(좌측 사이드바에서 네모 아이콘)를 클릭하고, C/C++ 확장 프로그램을 검색하여 설치한다.
  3. 이 확장 프로그램은 Microsoft에서 제공하는 것으로, C/C++ 코드의 인텔리센스, 디버깅, 코드 탐색 기능을 제공한다.

  4. CMake Tools 설치:

  5. CMake를 사용하는 경우, CMake Tools 확장을 설치하여 VS Code에서 CMake를 쉽게 사용할 수 있다.

GCC 컴파일러와 빌드 도구 설정

  1. GCC 컴파일러 경로 설정:
  2. VS Code에서 Ctrl + Shift + P를 눌러 Command Palette를 열고, C/C++: Edit Configurations (UI)를 선택한다.
  3. Compiler Path에 GCC 컴파일러의 경로를 입력한다. 예를 들어, /usr/bin/gcc와 같은 경로를 설정한다.

  4. Tasks 설정:

  5. VS Code에서 tasks.json 파일을 생성하여 빌드 및 실행 작업을 정의할 수 있다.
  6. Tasks는 프로젝트의 특정 작업을 자동으로 처리할 수 있도록 도와준다. 예를 들어, gcc를 사용한 컴파일, 링킹 작업을 정의할 수 있다.
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "command": "/usr/bin/gcc",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": ["$gcc"],
            "detail": "Generated task by Visual Studio Code."
        }
    ]
}
  1. Include Path 설정:
  2. c_cpp_properties.json 파일에서 Preempt RT 관련 헤더 파일의 경로를 includePath 항목에 추가한다.
{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**",
                "/usr/include",
                "/usr/local/include",
                "/path/to/preempt_rt_headers"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "linux-gcc-x64"
        }
    ],
    "version": 4
}

VS Code에서의 디버깅 설정

  1. GDB 설정:
  2. launch.json 파일을 생성하여 GDB를 사용한 디버깅 구성을 설정한다.
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "GDB Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/usr/bin/gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "build",
            "internalConsoleOptions": "openOnSessionStart",
            "logging": {
                "engineLogging": false,
                "trace": false,
                "traceResponse": false
            }
        }
    ]
}
  1. 실시간 디버깅:
  2. Eclipse와 마찬가지로, VS Code에서도 실시간 애플리케이션의 디버깅 시 타이밍 문제를 유의해야 한다. 실시간 성능에 영향을 미칠 수 있는 중단점 사용을 최소화하고, 로그 출력 등을 통해 비침입적 디버깅 방법을 활용한다.

Eclipse와 VS Code의 비교

Eclipse와 VS Code는 각각 고유의 장점과 단점을 가지고 있으며, 개발자의 필요에 따라 선택할 수 있다.

Eclipse의 장점

  1. 강력한 통합 개발 환경: Eclipse는 다양한 플러그인을 통해 풍부한 기능을 제공한다. 특히 C/C++ 개발자에게는 Eclipse CDT(C/C++ Development Tooling) 플러그인이 매우 유용하다.

  2. 프로젝트 관리 기능: Eclipse는 복잡한 프로젝트를 관리하는 데 유리한 기능을 제공한다. 여러 프로젝트를 하나의 워크스페이스 내에서 관리하고, 이들 간의 종속성을 쉽게 설정할 수 있다.

  3. 자동화된 빌드 및 디버깅 도구: Eclipse는 빌드 과정과 디버깅을 위한 강력한 도구를 제공한다. GNU Autotools 및 Makefile 지원을 통해 자동화된 빌드를 쉽게 설정할 수 있다.

  4. 커뮤니티와 문서 지원: Eclipse는 오랜 역사를 가진 IDE로, 많은 문서와 커뮤니티 지원이 있다. 다양한 문제에 대한 해결책을 쉽게 찾을 수 있다.

Eclipse의 단점

  1. 무겁고 느림: Eclipse는 많은 기능을 제공하는 만큼, 상대적으로 무겁고 느릴 수 있다. 특히 저사양 PC에서는 성능 저하가 발생할 수 있다.

  2. 복잡한 초기 설정: Eclipse는 초기 설정이 다소 복잡할 수 있으며, 플러그인 설정이나 환경 설정에 많은 시간이 소요될 수 있다.

VS Code의 장점

  1. 경량화된 환경: VS Code는 매우 가볍고 빠르다. 적은 리소스로도 안정적으로 동작하므로 저사양 환경에서도 유리한다.

  2. 확장성: VS Code는 다양한 확장 프로그램을 통해 기능을 추가할 수 있다. 또한, 커스터마이징이 용이하여 개발 환경을 자유롭게 조정할 수 있다.

  3. 유연한 설정 파일: JSON 형식의 설정 파일을 통해 디버깅, 빌드, 실행 작업을 쉽게 설정할 수 있다. 이는 다양한 프로젝트에서 재사용 가능한 설정을 만드는 데 유용하다.

  4. 풍부한 테마와 UI 커스터마이징: VS Code는 다양한 테마와 UI 옵션을 제공하여 개발자의 취향에 맞게 환경을 조정할 수 있다.

VS Code의 단점

  1. 복잡한 프로젝트 관리: VS Code는 Eclipse에 비해 프로젝트 관리 기능이 제한적이다. 대규모 프로젝트를 관리하는 데 다소 불편할 수 있다.

  2. 플러그인 의존성: VS Code의 많은 기능은 확장 프로그램에 의존한다. 필요한 기능을 위해 여러 플러그인을 설치하고 설정해야 하므로 초기 설정이 번거로울 수 있다.

  3. 제한된 디버깅 기능: Eclipse에 비해 VS Code의 디버깅 기능이 상대적으로 제한적일 수 있다. 특히, 실시간 시스템에서 사용하는 특수한 디버깅 기능이 부족할 수 있다.

최종 선택

실시간 애플리케이션 개발 환경을 설정할 때, 어떤 IDE를 사용할지는 프로젝트의 규모, 개발자의 선호도, 시스템 요구 사항에 따라 달라질 수 있다. Eclipse는 복잡한 프로젝트 관리와 강력한 디버깅 도구가 필요한 경우에 적합하며, VS Code는 경량화된 환경에서 빠르게 개발을 시작하고자 할 때 유리한다.