TopGit
Đánh giá repo GitHub

F Prime: Framework phần mềm bay của NASA JPL

nasa/fprime

F Prime (F´) là framework phần mềm bay mã nguồn mở, hướng component của NASA JPL để xây dựng phần mềm bay vũ trụ và các hệ thống nhúng khác bằng C++. Bạn mô tả phần mềm bay của mình thành các component rời rạc với giao diện được định nghĩa rõ, mô hình hóa cách nối chúng bằng FPP, rồi để bộ công cụ sinh phần code C++ khuôn mẫu quanh logic của bạn — sau đó kiểm thử ở mức unit và integration trước khi nó thực sự bay.

FF Prime: Framework phần mềm bay của NASA JPL — open-source GitHub repository preview
Nhận định nhanh

Hãy chọn F Prime nếu bạn đang xây phần mềm bay cho CubeSat, SmallSat hay một hệ thống nhúng thời gian thực và muốn một kiến trúc component mà NASA đã thực sự bay, cộng thêm công cụ mô hình hóa tự sinh phần code kết nối. Bỏ qua nếu bạn viết bất cứ thứ gì ngoài phần mềm nhúng/bay vũ trụ — việc mô hình hóa component, yêu cầu C++ và bộ toolchain gốc từ JPL là gánh nặng lớn cho một ứng dụng thông thường.

Sao
★ 0
Fork
⑂ 0
Ngôn ngữ
Giấy phép
Xem trong repo
Chủ đề
Cập nhật
Jul 2026
Trang chủ
GitHub

Vấn đề nó giải quyết

Phần mềm bay phải mang tính tất định, kiểm thử được và an toàn để thay đổi ở giai đoạn muộn của nhiệm vụ, nhưng viết tay message queue, luồng và cách nối giữa các component bằng C++ vừa dễ sai vừa khó kiểm chứng. Các đội vệ tinh nhỏ đặc biệt không có ngân sách để dựng lại hạ tầng đó từ đầu cho mỗi nhiệm vụ. F Prime tồn tại để trao cho họ một kiến trúc component tái sử dụng và khả năng sinh mã, để họ dành thời gian cho logic nhiệm vụ chứ không phải dựng lại phần plumbing của phần mềm bay.

Đây là gì?

F Prime, gọi là F´, là một framework phần mềm bay C++ mã nguồn mở (giấy phép Apache-2.0) từ Phòng thí nghiệm Sức đẩy Phản lực (JPL) của NASA cho các ứng dụng bay vũ trụ và nhúng. Nó phân rã phần mềm bay thành các component rời rạc với giao diện được định nghĩa rõ, cung cấp các năng lực runtime cốt lõi như message queue và luồng, và đi kèm công cụ mô hình hóa (ngôn ngữ mô hình FPP) để đặc tả component cùng các kết nối và tự sinh phần code nối. README nói F´ đã được triển khai trên nhiều nhiệm vụ vũ trụ và được thiết kế hướng tới các hệ thống quy mô nhỏ như CubeSat, SmallSat và thiết bị đo.

Vì sao đang được chú ý

F Prime mang di sản bay thực sự — nó được xây tại JPL và, theo README, đã bay trên nhiều ứng dụng vũ trụ — điều hiếm thấy với phần mềm bay mã nguồn mở. Khi CubeSat và SmallSat giờ đây nằm trong tầm với của các trường đại học và startup, một framework Apache-2.0 miễn phí trao sẵn một kiến trúc component đã được kiểm chứng cùng khả năng sinh mã là một lựa chọn thực tế thay cho việc xây phần mềm bay từ con số không. Repo có hơn 11.000 sao và 1.700 fork, và NASA duy trì nó công khai với GitHub Discussions và một tổ chức F´ Community riêng cho các đóng góp từ bên thứ ba.

Số sao GitHub của repo này thay đổi thế nào theo thời gian. Nguồn: star-history.com.Xem lịch sử sao

Tính năng chính

  • Kiến trúc component chia phần mềm bay thành các đơn vị rời rạc với giao diện được định nghĩa rõ
  • Một runtime C++ cung cấp các năng lực cốt lõi như message queue và luồng
  • Công cụ mô hình FPP đặc tả component cùng kết nối và tự sinh phần code nối
  • Một bộ sưu tập component sẵn dùng ngày càng lớn để bạn thả vào dự án
  • Công cụ kiểm thử để chạy thử phần mềm bay ở cả mức unit và integration
  • Một CLI khởi tạo (fprime-bootstrap) dựng sẵn khung một dự án mới cho bạn
  • Chạy trên các thiết bị nhỏ — danh sách chủ đề liệt kê Raspberry Pi và hệ thống nhúng thời gian thực

Trường hợp dùng tốt nhất

  • Viết phần mềm bay cho một CubeSat hoặc SmallSat mà không phải dựng hạ tầng từ đầu
  • Cấu trúc một hệ thống nhúng thời gian thực thành các component được nối với code kết dính tự sinh
  • Tạo nguyên mẫu phần mềm thiết bị đo hoặc tàu vũ trụ trên Raspberry Pi trước khi lên phần cứng bay
  • Chạy kiểm thử unit và integration cho phần mềm bay trước khi triển khai
  • Tái sử dụng một thư viện component đã kiểm chứng, xuất phát từ JPL, qua nhiều nhiệm vụ

Cách cài đặt / dùng thử

Phát triển cần Linux, Windows với WSL, hoặc macOS, cộng thêm git, Python 3.10+ với virtual environment và pip, và một trình biên dịch C/C++ Clang hoặc GNU. Cài công cụ khởi tạo bằng `pip install fprime-bootstrap`, rồi dựng khung dự án bằng `fprime-bootstrap project`. README trỏ tới hướng dẫn HelloWorld tại fprime.jpl.nasa.gov để đi qua toàn bộ quy trình.

Cách sử dụng

Sau khi `fprime-bootstrap project` tạo một dự án, bạn mô hình hóa các component và cách chúng kết nối bằng FPP, và F´ sinh phần C++ bao quanh để bạn điền vào logic của component. Từ đó bạn build và chạy, dùng công cụ kiểm thử của framework để chạy thử component ở mức unit và integration. Người dùng mới được trỏ tới User Manual và các hướng dẫn trên trang F´; hệ thống dữ liệu mặt đất cùng công cụ lệnh/telemetry nằm ở các repo đồng hành (fprime-gds, fprime-tools).

Điểm mạnh

  • Di sản bay thực sự — xuất phát tại JPL và, theo README, đã triển khai trên nhiều nhiệm vụ vũ trụ
  • Sinh mã từ mô hình FPP loại bỏ việc viết tay phần nối giữa các component
  • Mã nguồn mở dưới Apache-2.0, nên bạn có thể soi, tự host và điều chỉnh toàn bộ framework
  • Kiến trúc component khiến phần mềm bay module hóa và kiểm thử được thay vì nguyên khối
  • Được NASA duy trì tích cực và công khai với Discussions công cộng và một CCB quản trị rõ ràng

Hạn chế & rủi ro

  • Lĩnh vực hẹp — nó được xây cho bay vũ trụ và hệ thống nhúng, và quá mức cần thiết cho bất cứ thứ gì ngoài thế giới đó
  • Đường học dốc: bạn cần C++, ngôn ngữ mô hình hóa component FPP, và toàn bộ toolchain build cùng dữ liệu mặt đất xung quanh
  • Chỉ dùng C++ cho code bay, nên không tránh khỏi các vấn đề quản lý bộ nhớ và thời gian thực thủ công
  • Windows không được hỗ trợ gốc — bạn phát triển qua WSL, macOS hoặc Linux
  • Tài liệu, hướng dẫn và công cụ nằm rải rác trên trang JPL và nhiều repo đồng hành (fprime-gds, fprime-tools, fpp) thay vì một chỗ
Xem trên GitHub

Lựa chọn thay thế

NASA cFS (core Flight System) — framework phần mềm bay mã nguồn mở còn lại của NASA, dựa trên một runtime với các app tái sử dụngRTEMS — một hệ điều hành thời gian thực dùng trong hàng không vũ trụ và các hệ thống bay nhúngFreeRTOS — một hệ điều hành thời gian thực nhẹ, được dùng rộng rãi cho vi điều khiển và thiết bị nhúngZephyr — một hệ điều hành thời gian thực của Linux Foundation cho phần cứng nhúng hạn chế tài nguyên

Ai nên thử — và ai nên bỏ qua

Các đội vệ tinh nhỏ và nhúng — người xây CubeSat và SmallSat, nhà phát triển thiết bị đo, và các nhóm phần mềm bay ở đại học hoặc startup — muốn một kiến trúc component mà NASA đã bay và thoải mái với C++. Nếu bạn không xây phần mềm bay vũ trụ hoặc nhúng thời gian thực, hoặc không thể đầu tư học mô hình hóa FPP và toolchain của JPL, thì F Prime là nhiều framework hơn mức bạn cần.

Câu hỏi thường gặp

F Prime (F´) là gì?

F Prime là một framework phần mềm bay mã nguồn mở từ Phòng thí nghiệm Sức đẩy Phản lực của NASA. Nó cấu trúc phần mềm nhúng và bay vũ trụ thành các component C++ rời rạc với giao diện được định nghĩa rõ, và sinh phần code kết nối từ các mô hình FPP.

F Prime dùng để làm gì?

Nó được dùng để xây phần mềm bay và nhúng cho các tàu vũ trụ nhỏ như CubeSat, SmallSat và thiết bị đo, trao cho các đội một kiến trúc component tái sử dụng, các dịch vụ runtime cốt lõi, và công cụ kiểm thử unit cùng integration.

F Prime có miễn phí và mã nguồn mở không?

Có. F´ là mã nguồn mở dưới giấy phép Apache-2.0 và được NASA duy trì công khai trên GitHub, với GitHub Discussions và một tổ chức F´ Community riêng cho các đóng góp từ bên thứ ba.

Cần gì để phát triển với F Prime?

README liệt kê Linux, Windows với WSL, hoặc macOS, cộng thêm git, Python 3.10+ với virtual environment và pip, và một trình biên dịch C/C++ Clang hoặc GNU. Bạn cài fprime-bootstrap và tạo dự án bằng fprime-bootstrap project.

F Prime khác NASA cFS thế nào?

Cả hai đều là framework phần mềm bay mã nguồn mở của NASA. F Prime hướng component với mô hình FPP và sinh mã, nhắm tới các hệ thống nhỏ như CubeSat, còn cFS xoay quanh một runtime cốt lõi chứa các ứng dụng tái sử dụng. Cái nào hợp tùy vào nhiệm vụ và đội của bạn.

Nguồn & ghi công

Dựa trên kho GitHub chính thức nasa/fprime, bao gồm README và metadata của dự án.

Về TopGit