OpenSource-Hub

fprime

프레임워크

nasa/fprime

우주 비행 소프트웨어 및 임베디드 시스템 프레임워크로, 신속한 개발을 지원합니다.

개요

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개의 테스트가 모두 통과해야 합니다.

원본 Issue #6147
문제 해결
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가 발생하기 때문입니다.

원본 Issue #5777
문제 해결
이전 버전 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로도 이를 방지할 수 없으므로 업그레이드가 필요합니다.

원본 Issue #6148
문제 해결
--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과 같은 유효하지 않은 값은 출력 파일이 작성되기 전에 거부되도록 합니다.

원본 Issue #6060
문제 해결
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되었다고 언급하므로, 변경하지 않고 그대로 두어도 테스트 실행에는 영향을 미치지 않습니다.

원본 Issue #6154