Directory Structure
The FSDK archive consists of several directories, each containing different Components and tools.
Root Directory
Show the Root Directory
fsdk-22.2
├── Documentation
├── GNDSW
├── Licences
├── OBSW
├── readme.txt
├── release.txt
├── Tooling
└── version.txt
The top level of the FSDK archive contains the following 5 main sub-directories.
| Directory | Description |
|---|---|
|
Contains tutorials, how-to guides, feature guides, and reference material |
|
'Ground Software' - contains the tmtclab ground software and Python API |
|
Licences for 3rd Party Software |
|
Onboard software - contains pre-made Components, the FSDK framework, and several sample Deployments |
|
Contains the FSDK command-line interface tool, codegen |
Documentation
The Documentation directory contains tutorials, how-to guides, feature guides, and reference material.
Show the Documentation Directory
Documentation/FSDK
├── Getting Started
├── Tutorials
├── How-to Guides
├── Feature Guides
└── Reference Material
| Directory | Description |
|---|---|
Getting Started |
A short guide helping you install and start using FSDK. |
Tutorials |
Comprehensive lessons designed to teach you how to use FSDK. It contains several basic tutorials, |
How-to Guides |
Step-by-step instructional documents that help you to achieve a specific task. |
Feature Guides |
Detailed documentation that explain how to use specific features of the FSDK anatomy. |
Reference Material |
Contains reference docs such as the FSDK User Manual, Component Type and Deployment anatomies, and Service definitions. |
GNDSW
The GNDSW directory contains the tmtclab distribution and Python API. The Python API is used to interface with FSDK.
GNDSW/
├── python
└── TMTCLab
| Directory | Description |
|---|---|
|
Python client library for tmtclab |
|
tmtclab distribution |
Licences
The Licences directory contains the licences for third-party software used in FSDK.
Show the Licence Directory
Licences/
├── Args4j.txt
├── CException.txt
├── CMock.txt
├── Freemarker.txt
├── FreeRTOS.txt
├── GCC.txt
├── HMAC-SHA.txt
├── JNA.txt
├── LittleFS.txt
├── purejavacomm_jtermios.txt
├── SHA.txt
├── tiny-AES-c.txt
├── UFFS.txt
└── Unity.txt
OBSW
The OBSW directory contains the onboard software source code, toolchains, and tools.
Show the OBSW Directory
OBSW/
├── Source
├── Toolchains
└── Tools
| Directory | Description |
|---|---|
|
Onboard software source code: framework, pre-madeComponents, and sample Deployments |
|
Toolchains for specific platforms. Contains |
|
Scripts, tools, and utilities. Contains the CMock and Unity test framework software from ThrowTheSwitch.org |
Source
Source contains the onboard software source code comprising platform support packages, the framework, libraries of Components and example Deployments.
Show the Source Directory
OBSW/Source/
├── aardvark
├── acs_adcs_deployment
├── acs_adcs_interface
├── amos
├── app
├── build_system
├── core
├── demo_aardvark
├── demo_bbb
├── demo_gs_a3200
├── demo_kryten
├── demo_linux
├── demo_linux_dist_1
├── demo_linux_dist_2
├── demo_linux_server
├── demo_nanoobcv2
├── demo_na_pc15
├── demo_pi
├── demo_sirius
├── framework
├── freertos
├── fs
├── gs_a3200
├── kryten
├── kryten_failsafe
├── kryten_primary
├── legacy_tutorial1
├── legacy_tutorial2
├── legacy_tutorial3
├── linux
├── littlefs
├── nanoobcv2
├── na_pc15
├── na_pc15_bootloader
├── posix
├── rtems
├── sirius
└── unity
| Directory | Description | Type | ||
|---|---|---|---|---|
|
I2C interface for Linux platforms using the Aardvark host adapter from Total Phase. |
Component Library |
||
|
This Deployment can be used to generate symbols for interacting with the ACS
|
Sample Deployment |
||
|
This directory contains a Component interface to the AAC Clyde Space The included source code implementation only exists to help with maintenance and allow automated Component generation.
|
Component Library |
||
|
This directory contains AMOS: a simple cooperative multi-tasking scheduler. This is intended for low-resource systems or systems that require a high-level of control. |
Component Library |
||
|
This directory contains pre-made application Components. It contains:
|
Component Library |
||
|
Make files for building to binary files for different targets, e.g. Linux, RTEMS, FreeRTOS |
Configuration |
||
|
This directory contains the core definitions for GenerationOne.
|
Component Library |
||
|
This Deployment for Linux demonstrates the use of a Total Phase Aardvark device for I2C interfacing. By default, the Deployment provides access to a Clyde Space 3U EPS. |
Sample Deployment |
||
|
Pre-made Deployment for the Beagle Board Black |
Sample Deployment |
||
|
This directory contains a demonstration Deployment for the GomSpace Nanomind A3200 with a range of key software Components. |
Sample Deployment |
||
|
Kryten OBC sample Deployment.
|
Sample Deployment |
||
|
This directory contains a demonstration Deployment for Linux with a range of key software Components. |
Sample Deployment |
||
|
Based off of the demo_linux, this Deployment covers distributed systems. |
Sample Deployment |
||
|
Based off of the demo_linux, this Deployment covers distributed systems. |
Sample Deployment |
||
|
Based off of the demo_linux, this Deployment contains a TCP Server Component |
Sample Deployment |
||
|
Skylabs Nano-OBCv2 sample Deployment |
Sample Deployment |
||
|
Nanoavionics PC-15 sample Deployment |
Sample Deployment |
||
|
Raspberry Pi I2C interfacing sample Deployment |
Sample Deployment |
||
|
ACS Sirius OBC sample Deployment |
Sample Deployment |
||
|
This directory contains the abstraction framework software. This library is used by onboard software images to permit software portability. It contains:
This is dependent on:
|
Component Library |
||
|
This directory contains the FreeRTOS operating system with ports for supported target platforms. Currently, FreeRTOS 9.0.0 is being used. This is dependent on:
It includes: - The operating system support library for FreeRTOS - The FreeRTOS source (including platform-specific ports) |
Component Library |
||
|
Scripts, tools and utilities. |
Component Library |
||
|
Onboard software source code: framework, Components, sample Deployments |
Component Library |
||
|
This directory contains the platform support library for the ACS Kryten OBC Dependencies:
|
Component Library |
||
|
Kryten OBC failsafe sample Deployment.
|
Sample Deployment |
||
|
Kryten OBC primary sample Deployment.
|
Sample Deployment |
||
|
Deprecated tutorial Deployment. This has been replaced by the hello_world_1 tutorial located at: |
Tutorial |
||
|
Deprecated tutorial Deployment. This has been replaced by the hello_world_2 tutorial located at: |
Tutorial |
||
|
Deprecated tutorial Deployment. This has been replaced by the hello_world_3 tutorial located at: |
Tutorial |
||
|
This directory contains the support library for the generic Linux platform. GenerationOne treats Linux as a "hardware platform" rather than an OS. The "OS" for Linux is usually POSIX. Dependencies:
|
Component Library |
||
|
This directory contains the support library for the LittleFS file system. |
Component Library |
||
|
This directory contains the platform support library for the Skylabs Nano-OBCv2 |
Component Library |
||
|
This directory contains the platform support library for the NanoAvionics PC1.5 Dependencies:
|
Component Library |
||
|
Bootloader for the NanoAvionics PC1.5. This Deployment is required for bootloading images on the NA PC1.5 platform. It hosts the bootloader Component and the static configuration store Components that the bootloader Component needs. |
Sample Deployment |
||
|
This directory contains the support library for the generic POSIX OS. GenerationOne treats POSIX as an operating system as it provides tasking and synchronisation services. Dependencies:
|
Component Library |
||
|
This directory contains the OS support project for RTEMS. This includes tailoring for each of the different platforms. This is dependent on:
|
Component Library |
||
|
This directory contains the platform support project for Sirius. At the moment this is empty as there is nothing necessary to support the platform. This is dependent on:
|
Component Library |
||
|
This directory contains the CMock and Unity test framework software from
ThrowTheSwitch. The CMock and Unity frameworks are located in
The This is dependent on:
|
Component Library |
Anatomy of a GenerationOne Project
A typical GenerationOne project can have the following directory structure:
Show the Framework Directory Structure
framework/
├── arch
├── bin
├── build
├── config`
├── doc
├── inc
├── jtag
├── lib
├── make
├── src
├── test
├── Makefile
└── readme.txt
|
This is an example project structure. Some projects may differ. For example |
| Directory | Description |
|---|---|
|
Architecture-specific source trees |
|
Output directories for binaries (e.g. unit tests), per target |
|
Intermediate build files, generated by build, per target |
|
Build configuration files, one per target |
|
Generated documentation |
|
Main include (header) file tree |
|
Files to support programming targets |
|
Output directories for libraries, per target |
|
Files to support the build system |
|
Main source (code) file tree |
|
Unit test file tree, code only |