SatNOGS-COMMS  4.1.0
A COMMS subsystem for CubeSats
Loading...
Searching...
No Matches

Topics

 Contribution Guide

Detailed Description

IDEs

The project does not depend on any specific IDE or development tool. Any descent IDE suitable for embedded systems and C/C++ development should be enough. To assist IDEs with the include directories and the project structure in general, the underlying CMake build system by default produces the compile_commands.json file inside the build directory.

VSCode based IDEs

We highly recommend the Cortex-Debug plugin.

For launching, attaching and debugging, the following launch configuration can be used as a baseline.

{
"version": "0.2.0",
"configurations": [
{
"name": "Zephyr SatNOGS COMMS ST-Link",
"cwd": "${workspaceRoot}",
"executable": "build/zephyr/satnogs-comms.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "openocd",
"device": "STM32H743VI",
"targetId": "STM32H743VI",
"boardId": "",
"armToolchainPath": "/path/to/zephyr/sdk/arm-zephyr-eabi/bin",
"gdbPath": "/path/o/zephyr/sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",
"interface": "swd",
"liveWatch": {
"enabled": true,
"samplesPerSecond": 4
},
"runToEntryPoint": "main",
"configFiles": ["openocd-stlink.cfg"
],
"showDevDebugOutput": "parsed",
"searchDir": ["${workspaceRoot}/openocd"],
},
{
"name": "Zephyr SatNOGS COMMS Remote openOCD",
"cwd": "${workspaceRoot}",
"executable": "build/zephyr/satnogs-comms.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "external",
"swoConfig":{
"enabled":true,
"source":"probe",
"swoFrequency": 20000000,
"cpuFrequency":256000000,
"decoders": [
{
"port": 0,
"type": "console",
"label": "SWO output",
"encoding":"ascii"
}
]
},
"gdbTarget": "localhost:3333",
"device": "STM32H743VI",
"targetId": "STM32H743VI",
"boardId": "",
"armToolchainPath": "/path/to/zephyr/sdk/arm-zephyr-eabi/bin/",
"interface": "swd",
"rtos": "Zephyr",
"runToEntryPoint": "main",
"svdFile": "contrib/st/STM32H743.svd",
"configFiles": [
"openocd-jlink-remote.cfg"
],
"liveWatch": {
"enabled": true,
"samplesPerSecond": 4
},
"showDevDebugOutput": "parsed",
"rttConfig": {
"enabled": false,
"address": "auto",
"clearSearch": false,
"decoders": [
{
"label": "",
"port": 0,
"type": "console"
}
]
},
},
{
"name": "Zephyr SatNOGS COMMS Segger",
"cwd": "${workspaceRoot}",
"executable": "build/zephyr/satnogs-comms.elf",
"request": "launch",
"type": "cortex-debug",
"servertype": "jlink",
"swoConfig":{
"enabled":true,
"source":"probe",
"swoFrequency": 10000000,
"cpuFrequency":256000000,
"decoders": [
{
"port": 0,
"type": "console",
"label": "SWO output",
"encoding":"ascii"
}
]
},
"device": "STM32H743VI",
"targetId": "STM32H743VI",
"boardId": "",
"armToolchainPath": "/path/to/zephyr/sdk/arm-zephyr-eabi/bin",
"gdbPath": "/path/to/zephyr/sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",
"interface": "swd",
"rtos": "Zephyr",
"runToEntryPoint": "_start",
"svdFile": "contrib/st/STM32H743.svd",
"configFiles": ["openocd-jlink.cfg"
],
"liveWatch": {
"enabled": true,
"samplesPerSecond": 4
},
"showDevDebugOutput": "raw",
"searchDir": ["${workspaceRoot}/openocd"],
},
{
"name": "Zephyr SatNOGS COMMS Segger Attach",
"cwd": "${workspaceRoot}",
"executable": "build/zephyr/satnogs-comms.elf",
"request": "attach",
"type": "cortex-debug",
"servertype": "openocd",
"device": "STM32H743VI",
"targetId": "STM32H743VI",
"boardId": "",
"armToolchainPath": "/path/to/zephyr/sdk/arm-zephyr-eabi/bin",
"gdbPath": "/path/o/zephyr/sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",
"interface": "swd",
"rtos": "Zephyr",
"runToEntryPoint": "__start",
"svdFile": "contrib/st/STM32H743.svd",
"configFiles": ["openocd-jlink.cfg"
],
"liveWatch": {
"enabled": true,
"samplesPerSecond": 4
},
"showDevDebugOutput": "raw",
"searchDir": ["${workspaceRoot}/openocd"],
},
]
}

How to contribute

Contribution guide

Libre Space Foundation follows a common approach for all the projects of the organization. For more details please refer to Contribution Guide

Coding style

For the C and C++ code, we use LLVM style. Use clang-format and the options file .clang-format to adapt to the styling.

At the root directory of the project there is the clang-format options file .clang-format containing the proper configuration. Developers can import this configuration to their favorite editor. Failing to comply with the coding style described by the .clang-format will result to failure of the automated tests running on our CI services. So make sure that you import on your editor the coding style rules.