Introducing Tangra: The Accelerated BSP Build Automation Infrastructure

April 28, 2023

At SmartCow, we are constantly looking for ways to improve our products and services. One of the challenges we faced was the time-consuming and complicated process of building Board Support Packages (BSPs) for various edge devices managed by FleetTrackr. We wanted to find a solution that would enable us to build BSPs faster so that we could deliver them faster to our customers. 

That's why we developed Tangra, our BSP build automation infrastructure designed to expedite the process of building BSPs for edge devices. Operating on SmartCow infrastructure, Tangra enables our engineers to rapidly build, test, and package BSPs while maintaining a comprehensive record of changes. Integrated with FleetTrackr, which can be hosted on a customer's infrastructure or a public cloud, customers receive notifications regarding newly available BSPs and can conveniently schedule and deploy updates according to their schedules. Our goal is to deliver a seamless experience for our customers, and Tangra plays a pivotal role in achieving this objective. 

Key features

Tangra offers developers full control over build systems and easy collaboration using independent Git repositories for various components, including configurations, root file system (rootfs) overlay, Linux for Tegra (L4T) overlay, custom recipes overlay, and fetching Linux Kernel from different sources. This enables developers to tweak overlays for even the smallest details in the rootfs or L4T to match their specific needs. Developers also have the flexibility to add files at build time or modify existing files in the default rootfs provided by NVIDIA, and for L4T, they can apply their customizations and modifications to any part of the L4T, such as partition configurations or board configuration. Moreover, custom-recipes serve as placeholders for custom classes that can be provided externally without interfering with core functionality.

Configuring and using Tangra

Developers can easily configure and use Tangra using the make menuconfig command, with easy-to-use predefined defconfigs available for specific devices or JetPack versions. They can also add or remove packages from rootfs, build custom rootfs from scratch, and source Linux Kernel directly from NVIDIA or from a private repository.

Creating reproducible builds

Reproducible builds are crucial for BSP development, and Tangra provides the infrastructure to create consistent and reliable builds. A manifest file describes all necessary components and versions, and a default file can be used to initialize Tangra and start building with just two simple commands. 

Testing and deployment 

After developers push changes, Tangra's build process incorporates Hardware-in-Loop (HIL) testing to ensure system stability and reliability. These BSP builds undergo HIL testing on Jetson, which simulates an environment that includes other interconnected hardware and software components. Tangra uses native ARM64 application building and testing right on the build farm, eliminating the need for cross-compilation.

Tangra streamlines the project development process by enabling easy collaboration and reproducible builds. It improves system stability and reliability by implementing hardware-in-loop testing, ultimately improving the developer experience and accelerating project progress.

Stay tuned to learn more about the value Tangra can bring to your BSP development process, and as always, please contact our Support team if you have any questions or feedback.

Our technical blogs are hosted on Medium. Click the link below to go there now