개요
F´는 NASA JPL에서 개발한 컴포넌트 기반 프레임워크로, 비행 소프트웨어와 임베디드 시스템을 구축하는 데 사용됩니다. 모델링 도구, C++ 커널 및 재사용 가능한 컴포넌트를 제공하며, 소형 위성과 계측 장비에 적합합니다.
README 미리보기
A Flight-Proven, Multi-Platform, Open-Source Flight Software Framework\n\n\n\n\n#\nF´ (F Prime) is a component-driven framework that enables rapid development and deployment of spaceflight and other embedded software applications. Originally developed at the [Jet Propulsion Laboratory](https://www.jpl.nasa.gov/), F´ has been successfully deployed on [several space applications](https://fprime.jpl.nasa.gov/overview/projects/). It is tailored but not limited to small-scale spaceflight systems such as CubeSats, SmallSats, and instruments.\n\n**Please Visit the F´ Website:** [https://fprime.jpl.nasa.gov](https://fprime.jpl.nasa.gov/) for more information.\n\n\n## What does F´ provide\n\n- An architecture that decomposes flight software into discrete components with well-defined interfaces\n- A C++ framework that provides core capabilities such as message queues and threads\n- Modeling tools for specifying components and connections and automatically generating code\n- A growing collection of ready-to-use components\n- Testing tools for testing flight software at the unit and integration levels.\n\nLearn more about [F´ key features](https://fprime.jpl.nasa.gov/overview).\n\n\n## System Requirements\n\nThe following system requirements apply to your workstation for developing F´ applications. To see the list of supported platforms on which F´ applications can run on, see [Supported Platforms](./docs/user-manual/framework/supported-platforms.md).\n\n1. Linux, Windows with WSL, or macOS operating system\n\n2. [git](https://git-scm.com/)\n\n3. [Python 3.10+](https://www.python.org/downloads/), [virtual environments](https://docs.python.org/3/library/venv.html), and [PIP](https://pypi.org/project/pip/)\n\n4. [Clang](https://clang.llvm.org/) or [GNU C and C++ compilers](https://gcc.gnu.org/) (e.g. gcc and g++)\n\n\nClick to Expand: How to Verify System Requirements\n\n2. `git --version`\n\n3. `python --version` and `python -m venv -h`. Your system might use an alternate like `
FAQ (5)
문제 해결F´ Svc/Health 단위 테스트에서 도달할 수 없는 테스트 본문을 수정하는 방법
Svc/Health/test/ut/HealthTester.cpp를 편집하세요. warningTlm()에서 앞부분의 return;을 제거하여 ISF-HTH-002에 대한 경고 타임아웃 어설션이 실행되고 예상되는 HLTH_PING_WARN 이벤트가 검증되도록 하세요. nominal2CmdsDuringTlm()에서도 앞부분의 return;을 제거한 다음, 비활성화/활성화 명령으로 발생하는 HLTH_CHECK_ENABLE 이벤트를 고려하세요. 이후의 이벤트 0개 어설션 전에 해당 예상 이벤트를 지워야 합니다. 프로덕션 코드 변경은 필요하지 않습니다. 다시 빌드하고 Svc_Health_ut_exe를 실행하세요. 11개의 테스트가 모두 통과해야 합니다.
문제 해결STOP_XMIT_CATALOG 이후 BUILD_CATALOG 실행 시 늦게 도착한 fileDone으로 인해 발생하는 F´ DpCatalog FATAL assert를 해결하는 방법은 무엇입니까?
이 문제는 F´ PR #5797에서 수정되었으며, 2026-09-30에 devel에 머지되었습니다. F´ 체크아웃 또는 의존성을 해당 PR이 포함된 devel 커밋으로 업데이트한 다음 다시 빌드하세요:
git fetch origin
git merge origin/devel # or rebase/cherry-pick PR #5797 as appropriate
이 수정은 stale fileDone 처리를 변경하여, DpCatalog.cpp:801에서 FW_ASSERT에 도달하는 대신 기존 복구 경로를 사용하도록 합니다. 전송 상태를 지우고, 대기 중인 명령을 완료하며, 경고 이벤트를 발생시킵니다.
수정 이전의 영향을 받는 커밋에서는 해결 방법으로 명령을 직렬화하세요: STOP_XMIT_CATALOG 이후, BUILD_CATALOG를 실행하기 전에 FileDownlink가 현재 파일의 fileDone(STATUS_OK)를 반환할 때까지 기다리세요. 이전 파일이 아직 전송 중인 상태에서는 CLEAR_CATALOG 다음에 BUILD_CATALOG를 사용하지 마세요. 동일한 assert가 발생하기 때문입니다.
문제 해결이전 버전 dictionary를 사용하거나 알 수 없는 packet descriptor를 수신할 때 F´ GDS가 아무런 알림 없이 downlink/telemetry를 중단하는 문제는 어떻게 해결하나요?
PR #368의 수정 사항이 포함된 릴리스로 fprime-gds를 업그레이드하거나, 패치가 적용된 main 브랜치를 설치하세요:
pip install --upgrade fprime-gds
# 또는 필요한 경우:
pip install "fprime-gds @ git+https://github.com/nasa/fprime-gds.git@main"
이 오류는 Distributor.on_recv에서 발생합니다: DeserializeException은 catch하지만 EnumMismatchException은 catch하지 않기 때문에, 알 수 없는 descriptor가 수신 스레드를 종료시킵니다. 이전 버전에서는 ValueError: 65536 is not a valid DataDescType로 나타날 수 있으며, v4.4.0에서는 조용히 실패할 수 있습니다. 이 패치는 EnumMismatchException을 catch하고, 경고를 로그에 기록하고, 잘못된 패킷을 건너뛰며, 처리를 계속 진행합니다.
즉각적인 해결 방법: GDS에 연결된 정확한 deployment 빌드에서 생성된 dictionary를 사용하세요—v4.0.0 dictionary를 v4.4.0 deployment와 혼용하지 마세요. 손상으로 인해 발생한 패킷의 경우, 일치하는 dictionary로도 이를 방지할 수 없으므로 업그레이드가 필요합니다.
문제 해결--name 사용 시 fprime-merge-dictionary 오류 "match() missing 1 required positional argument: 'string'"를 해결하려면 어떻게 해야 하나요?
이것은 fprime-merge-dictionary CLI의 유효성 검사 버그입니다. 식별자 정규식이 사용자가 제공한 이름 없이 호출되며, 전체 문자열을 매칭하는 대신 접두사 매칭을 사용합니다.
임시 해결 방법: --name을 생략하십시오. 그러면 명령이 생성된 배포 이름을 사용합니다:
fprime-merge-dictionary --output combined.json first.json second.json
영구 수정: 수정 사항이 포함된 버전으로 fprime-gds를 업데이트하거나, parse_arguments()의 이름 유효성 검사를 다음과 같은 호출에서:
re.match(IDENTIFIER_PATTERN)
다음으로 변경하십시오:
re.fullmatch(IDENTIFIER_PATTERN, args.name)
fullmatch는 Combined와 같은 유효한 식별자는 허용하고, Combined-extra 또는 Combined\n과 같은 유효하지 않은 값은 출력 파일이 작성되기 전에 거부되도록 합니다.
문제 해결fprime CommandDispatcher 단위 테스트에서 중복되거나 순서가 잘못된 TESTCASE 번호를 수정하는 방법
fprime v4.4.1에서 이는 GoogleTest 실패나 기능적 버그가 아니라 TEST_CASE 추적성 레이블의 형식적인 복사-붙여넣기 오류입니다. Svc/CmdDispatcher/test/ut/CommandDispatcherTestMain.cpp를 편집하여 nominal 테스트는 102.1.x 아래에, off-nominal 테스트는 102.2.x 아래에 유지하고 소스 순서대로 고유 ID를 할당하십시오. 유효한 번호 재지정의 한 예는 다음과 같습니다: ClearSequenceTracker를 102.1.3에서 102.2.6으로 변경하고, CommandQueueOverflow를 중복된 102.2.5에서 102.2.7로 변경하며, 기존 102.2.9, 102.2.6, 102.2.7, 102.2.8 테스트를 각각 102.2.8, 102.2.9, 102.2.10, 102.2.11로 재지정하는 것입니다. cd Svc/CmdDispatcher && fprime-util check --ut로 확인하십시오. 유지 관리자들은 이러한 번호 매기기 레이블이 deprecated되었다고 언급하므로, 변경하지 않고 그대로 두어도 테스트 실행에는 영향을 미치지 않습니다.