Blog

Show us your toolchain

Published on Mar 01, 2023 by Robert on Toolchain

Show us your toolchain

One goal for the Open Toolchain Foundation is to better understand and map the toolchain, i.e. the workflows and the software tools used in the development and production of hardware.

Share your toolchain with us and the community here in the Forum.

Here we would like to share with you an example of a generic toolchain where a PCB and 3D printed parts are developed and produced, and production can also be outsourced. This depends on the resources everyone has available.

Toolchain EMCAD-3DP-PCB

We have found that mapping the toolchain alone is not always enough. It should be explained and documented so that it can be understood especially by newcomers.

The repository contains all the files needed for development and production. It is divided into subfolders for better organization.

  • MCAD (mechanical CAD design files)
  • ECAD (electronic schematics and PCB design files)
  • Firmware (source code of the firmware)
  • Documentation (all information to rebuild the project)

The mechanical components of the project are designed using FreeCAD. With KiCAD the electronic components (PCB) are designed and production files are exported. As interface between FreeCAD and KiCAD, for the exchange of 3D geometries, kicadStepUp is used. The firmware and the documentation is created with a text editor. Manufacturing files for 3D printing (g-code) are created with Cura.

For version control management, to record file changes, git is used. Its full functionality git reaches only with purely text-based files. For better management of binary files (CAD files, images, videos, etc.), git-lfs comes into play. An important feature of git-lfs is the ability to lock files, which helps avoid conflicts when merging with binary files. This is especially useful when multiple people are working in the same repository. We’re recently working on a PDM like git interface and created a first mock up, feel free to send feedback.

Gitlab, as a version control web application, allows collaboration with other people. It also offers an issue tracking system, web hosting for documentation (GitLab Pages) and certain process steps can be automated via the pipeline with Continuous Integration and Continuous Delivery (CI/CD). With the help of CI/CD, up-to-date production files can always be provided. Furthermore, documentation is generated via a static site generator (SCG) and published as a web page.

The toolchain is not always linear, because especially in development there can be loops that are run through again and again until the desired result is achieved.

The example of a toolchain shown here can serve as a blueprint for the upcoming hackathon and the plan to replace the toolchain of the nimble project with a toolchain using FLOSS.

We at the Open Toolchain Foundation are interested in knowing what your project’s toolchain looks like! To do this, you can either share your toolchain in our forum, or you can contact us and we will help you document and share your toolchain with the community.

Title image by Bernard Spragg

Similar Stories