ln is a personal collection of unique software and third-party libraries made
to work nicely together for FreeRTOS embedded systems development.
sudo apt update && sudo apt upgrade -y
sudo apt install clang-format cmake
ARM_TOOLCHAIN_VERSION=$(curl -s https://developer.arm.com/downloads/-/arm-gnu-toolchain-downloads | grep -Po '<h4>Version \K.+(?=</h4>)')
curl -Lo gcc-arm-none-eabi.tar.xz "https://developer.arm.com/-/media/Files/downloads/gnu/${ARM_TOOLCHAIN_VERSION}/binrel/arm-gnu-toolchain-${ARM_TOOLCHAIN_VERSION}-x86_64-arm-none-eabi.tar.xz"
sudo mkdir /opt/gcc-arm-none-eabi
sudo tar xf gcc-arm-none-eabi.tar.xz --strip-components=1 -C /opt/gcc-arm-none-eabi
echo 'export PATH=$PATH:/opt/gcc-arm-none-eabi/bin' | sudo tee -a /etc/profile.d/gcc-arm-none-eabi.sh
source /etc/profile
arm-none-eabi-gcc --version
arm-none-eabi-g++ --version
arm-none-eabi-gdb --version
rm -rf gcc-arm-none-eabi.tar.xzThe naming scheme mostly follows the Rust Naming.
Here are some important conventions:
- Modular feature folder name and C++ namespace has to be the same and in
snake_case. For example, the
ln/driversfolder contains features that are in theln::driversnamespace.
- Rename all command objects from
<name>_cmdtocmd_<name>- makes more sense when naming nested commands. - Add GPL license preambles to all files.
- Shell backspace does not work.
repeat 1000 repeat 1000 echo labasshould technically work.- Consider switching to jonenz/FreeRTOS-Cpp instead of freertos-addons. It is newer and more actively maintained, comes with CMake support, more modern C++, more familiar and arguably better project structure, testing and CI.