About Bridle

Bridle demonstrate the integration of TiaC Systems support in open source projects, like the Zephyr Project, with libraries and source code for applications. It is a combination of software developed by TiaC Systems and open source projects, hosted as Git repositories in the DevZone or the Zephyr GitHub organization.

Every Bridle release consists of a combination of all those repositories at different revisions. See the Repositories and revisions section for a comprehensive list of repositories and their current revisions. The revision of each of those repositories is determined by the current revision of the main (manifest) repository, tiac-bridle, which contains the Bridle manifest file that helps manage the repositories as one code base with the West Tool tool.

About the Bridle license

Licenses are located close to the source files. You can find a LICENSE file, containing the details of the license, at the top of every Bridle repository. Each file included in the repositories also has an SPDX identifier that mentions this license.

If a folder or set of files is open source and included in Bridle under its own license (for example, any of the Apache or MIT licenses), it will have either its own LICENSE file included in the folder or the license information embedded inside the source files themselves.

The SPDX tool is used to generate license reports on each release of the Bridle. You can also use SPDX to generate license reports for your projects that are specific to the code included in your application.

Documentation pages

The documentation consists of several inter-linked documentation sets, one for each repository. You can switch between these documentation sets by using the selector in the bottom-left corner of each page.

The entry point is the Bridle documentation that you are currently reading. The local Zephyr documentation is a slightly extended version of the official Zephyr Project documentation, containing some additions specific to TiaC Systems.

Bridle documentation set selector

Bridle documentation set selector

The Bridle documentation contains all information that is specific to the Bridle and describes our libraries, samples, and applications. The API documentation is extracted from the source code and included with the library documentation.

For instructions about building the documentation locally, see Building Bridle documentation. For more information about the documentation conventions and templates, see About this documentation.

Tools and configuration

The figure below visualizes the tools and configuration methods in the Bridle. They are based on the Zephyr Project. All of them have a role in the creation of an application, from configuring the libraries or applications to building them.

Bridle tools and configuration

Bridle tools and configuration methods

Git Tool

Git is a free and open source distributed version control system that allows managing the changes in the code or other collections of information (set of files) over time.

Git organizes data (files or directories) in project repositories. The data is managed like a series of snapshots. Every time you commit, or save the state of your project, Git takes a snapshot of what the files look like at that exact moment and stores a reference to that snapshot. For unchanged files, Git provides just a link to the previous identical file it has already stored.

Git offers a lot of flexibility in how users manage changes, and repositories are easily duplicated. In Bridle, forking is the agreed-upon Git workflow. To contribute, the official public repository in GitHub is forked.

When you say you are forking a repository, you are creating a copy of the repository under your GitHub ID. This means that you are creating an identical copy that might diverge from the original over time. This copy is your personal public repository that nobody else is allowed to push to, but changes can be pulled from it.

The original repository is called the upstream repository, and the newly created copy the downstream repository. Any changes made to the original repository are reflected back to your forked repositories by using fetch and rebase commands.

A git clone command is used to get a copy of your downstream repository onto your local machine. This serves as a private development environment.

Local commits are pushed to your own downstream repository, and not the official one. To integrate the changes into the main upstream repository, a pull request is created explicitly. Before it is merged, the pull request also serves as a convenient discussion thread if there are issues with the contributed code. If your pull request is approved, the changes are merged with the existing original content. Until then, your changes are reflected only in the copy you forked.

A fork can be hosted on any server, including a public Git hosting site like GitHub. It is, however, important to differentiate between the generic concept of a fork and GitHub’s concept of a GitHub fork. When you create a GitHub fork, GitHub copies the original repository and tags the downstream repository (the fork) with a flag that allows users to send pull requests from the fork to its upstream repository. GitHub also supports creating forks without linking them to the upstream respository. See the GitHub documentation for information about how to do this.

Everything in Git is checksummed before it is stored and is then referred to by that checksum. The mechanism that Git uses for this checksumming is called a SHA-1 hash. This hash is a 40-character string, composed of hexadecimal characters (0–9 and a–f), and calculated based on the contents of a file or directory structure in Git.

West Tool

The Zephyr project includes a tool called west. The Bridle uses west to manage the combination of multiple Git repositories and versions.

Some of west’s features are similar to those provided by Git Submodules and Google’s Repo tool. But west also includes custom features required by the Zephyr Project that were not sufficiently supported by the existing tools. For more details about the reasons behind the introduction of west, see the History and Motivation section of the Zephyr documentation.

West’s workspace contains exactly one manifest repository, which is a main Git repository containing a west manifest file. Additional Git repositories in the workspace managed by west are called projects. The manifest repository controls which commits to use from the different projects through the manifest file. In the Bridle, the main repository tiac-bridle contains a west manifest file west.yml, that determines the revision of all other repositories and that is complete different from Zephyr’s west manifest file west.yml. This means that tiac-bridle acts as the manifest repository, while the other repositories are projects, like Zephyr in the case of Bridle. When developing in the Bridle, your application will use libraries and features from folders that are cloned from different repositories or projects. The west tool keeps control of which commits to use from the different projects. It also makes it fairly simple to add and remove modules.

Some west commands are related to Git commands with the same name, but operate on the entire west workspace. Some west commands take projects as arguments. The two most important workspace-related commands in west are west init and west update. The west init command creates a west workspace, and you typically need to run it only once to initialize west with the revision of the Bridle that you want to check out. It clones the manifest repository into the workspace. However, the content of the manifest repository is managed using Git commands, since west does not modify or update it. To clone the project repositories, use the west update command. This command makes sure your workspace contains Git repositories matching the projects defined in the manifest file. Whenever you check out a different revision in your manifest repository, you should run west update to make sure your workspace contains the project repositories the new revision expects (according to the manifest file).

For more information about west init, west update, and other built-in commands, see Built-in commands. For more information about the west tool, see the West (Zephyr’s meta-tool) user guide.

See Getting started for information about how to install Bridle and about the first steps. See Development model for more information about the Bridle code base and how to manage it.

Repositories and revisions

The following table lists all the repositories (and their respective revisions) that are included as part of Bridle 3.4.1 release:

Project

Revision

zephyr

tiacsys/v3.4-branch

canopennode

dec12fa3f0d790cafa8414a4c2930ea71ab72ffd

chre

b7955c27e50485b7dafdc3888d7d6afdc2ac6d96

cmsis

74981bf893e8b10931464b9945e2143d99a3f0a3

edtt

64e5105ad82390164fb73fc654be3f73a608209a

fatfs

427159bf95ea49b7680facffaa29ad506b42709b

hal_altera

0d225ddd314379b32355a00fb669eacf911e750d

hal_atmel

5ab43007eda3f380c125f957f03638d2e8d1144d

hal_espressif

abe299333411cb37a1cb1dd0aa2ea35c27382604

hal_gigadevice

2994b7dde8b0b0fa9b9c0ccb13474b6a486cddc3

hal_infineon

0bebc14d8bd1a249ee7fbc70b37db6f01f72544f

hal_microchip

5d079f1683a00b801373bbbbf5d181d4e33b30d5

hal_nordic

a1c3e0fbaafda091139b8744becd4853ada2f747

hal_nuvoton

0a1f153c433f5f637a4490651bdda6d966de3b99

hal_nxp

904830e8f684a9fd573751a1cdecde877ec49242

hal_openisa

d1e61c0c654d8ca9e73d27fca3a7eb3b7881cb6a

hal_quicklogic

b3a66fe6d04d87fd1533a5c8de51d0599fcd08d0

hal_renesas

f2d791d28cd8fdbc5861652b863822632c91f690

hal_rpi_pico

b7801e4db6a62ea2d37bbef7880c3d056530c9bf

hal_silabs

a143f03e846eb1b7b3135f3c8192820ce1b6d9c4

hal_st

5948f7b3304f1628a45ee928cd607619a7f53bbb

hal_stm32

c865374fc83d93416c0f380e6310368ff55d6ce2

hal_telink

38573af589173259801ae6c2b34b7d4c9e626746

hal_ti

ae1db23f32dde779cdfc4afaa9a60ea219310a64

hal_xtensa

41a631d4aeeeaedc0daece21eecc338807296ad7

libmetal

b91611a6f47dd29fb24c46e5621e797557f80ec6

liblc3

448f3de31f49a838988a162ef1e23a89ddf2d2ed

littlefs

ca583fd297ceb48bced3c2548600dc615d67af24

loramac-node

ce57712f3e426bbbb13acaec97b45369f716f43a

lvgl

7102083f626cda09e5792420ea60af0525cce9ae

mbedtls

6e7841e5a08eb5da3c82dbc8b6b6d82ae4b7d2a0

mcuboot

74c4d1c52fd51d07904b27a7aa9b2303e896a4e3

mipi-sys-t

0d521d8055f3b2b4842f728b0365d3f0ece9c37f

net-tools

e0828aa9629b533644dc96ff6d1295c939bd713c

open-amp

c904a01d4a882bcbb39987e0e2ce5308f49ac7ad

openthread

d9abe3071c0131a4adb5d7e7451319b735e6d855

picolibc

d07c38ff051386f8e09a143ea0a6c1d6d66dd1d8

segger

4bfaf28a11c3e5ec29badac744fab6d2f342749e

tinycrypt

3e9a49d2672ec01435ffbf0d788db6d95ef28de0

trusted-firmware-m

79a6115d3a8d0e04864ae8156c1dc8532b750f5a

trusted-firmware-a

28f5e137837f1c1a7a7b2af2dd8bb778c0a27532

tf-m-tests

0f80a65193ddbbe3f0ac38b33b07b26138c11fa7

psa-arch-tests

6a17330e0dfb5f319730f974d5b05f7b7f04757b