Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Table of Contents

Overview

...

Embedded Software

For D&Cembedded firmware, we are going to be using a central use a centralized docker container for all projects just to try and make development a bit easier. This docker container is specialized for embedded development to replace the awful and bloated embedded tools and IDE’s we would otherwise have to work with (*cough cough STM32 Microchip TI cough cough*).to contain embedded tools that work best on a single, Linux-based platform. This helps ensure we can allow all members to have easy and consistent access to certain tools that may not be available of work as well on different platforms.

Status
colourRed
titleTODO Dylan: update the usage section

Installation

  1. Install docker. For Mac and Windows, you must install docker desktop instead.

  2. If using Windows follow two more steps because Docker for Windows runs on WSL (Windows Subsystem for Linux):

    1. Install WSL by running wsl --install

    2. Setup wsl by launching ubuntu from the start menu

    Setup the formatter:

    1. Open (File-->Preferences-->Settings)

    2. Type clang in the settings search bar

    3. Change C_Cpp: Clang_format_fallback Style to none

    4. Change C_Cpp: Clang_format_style to file:${workspaceRoot}/Drivers/Embedded-Base/clang-format

      image-20240618-040202.pngImage Removed

    5. Now you are ready to format the files using the builtin vscode shortcut (right click in the editor and hit format)

    6. Note: Never format files touched by CubeMX. This includes any files listed as autogenerated, including files you may need to edit like main.c or stm32XXX_it.c!!!

Usage

MacOS

  1. Make sure Docker Desktop is started

  2. Clone and open a terminal in a embedded project.

  3. Pull down the Docker container you are using by running docker compose pull.

  4. Start the container by running docker compose run --rm ner-gcc-arm.

    1. Make sure you are running it in the root directory of the project (Ex. Cerberus, Shepherd, Iroh, Proteus, etc.)

...