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.

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 Project 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 v4.1.99 release:

Project

Revision

zephyr

tiacsys/main

ubxlib

62c0021cbf079b43cdd9a219e9b10b49ea616e19

canopennode

dec12fa3f0d790cafa8414a4c2930ea71ab72ffd

chre

3b32c76efee705af146124fb4190f71be5a4e36e

psa-arch-tests

2cadb02a72eacda7042505dcbdd492371e8ce024

tf-m-tests

c712761dd5391bf3f38033643d28a736cae89a19

acpica

8d24867bc9c9d81c81eeac59391cda59333affd4

cmsis

d1b8b20b6278615b00e136374540eb1c00dcabe7

edtt

b9ca3c7030518f07b7937dacf970d37a47865a76

fatfs

16245c7c41d2b79e74984f49b5202551786b8a9b

hal_adi

8f33130dc5fe33ce14eb1cf29364bfc39dc82020

hal_altera

4fe4df959d4593ce66e676aeba0b57f546dba0fe

hal_ambiq

e916e84a103e13ce8bcf8b7f53dafbe57ed0b846

hal_atmel

ca7e4c6920f44b9d677ed5995ffa169f18a54cdf

hal_espressif

e794f935ff732f4e03f2e007d1e342f881ef0d4a

hal_ethos_u

50ddffca1cc700112f25ad9bc077915a0355ee5d

hal_gigadevice

2994b7dde8b0b0fa9b9c0ccb13474b6a486cddc3

hal_infineon

6890899e0db2cbcd3a562b41b7e9e0a2a9040ed0

hal_intel

0447cd22e74d7ca243653f21cfd6e38c016630c6

hal_microchip

15ca19705e4bff2d147a2a13d0198fcf8e4c8b4a

hal_nordic

119ff5b5ec7a413ca2f64ae1928c79eee1e7b7b2

hal_nuvoton

be1042dc8a96ebe9ea4c5d714f07c617539106d6

hal_nxp

601e1e538abaf9f5985e28531b3b6a2a07e38d2a

hal_openisa

eabd530a64d71de91d907bad257cd61aacf607bc

hal_quicklogic

bad894440fe72c814864798c8e3a76d13edffb6c

hal_renesas

9d68ee711aaeab39b216a61101a2646c5a1b0fc0

hal_rpi_pico

7b57b24588797e6e7bf18b6bda168e6b96374264

hal_silabs

40a0237e4812241de677441e02131d6c75830636

hal_st

9f81b4427e955885398805b7bca0da3a8cd9109c

hal_stm32

fcd37242dcaa19a05b014a378c592e257083fe72

hal_tdk

6727477af1e46fa43878102489b9672a9d24e39f

hal_telink

4226c7fc17d5a34e557d026d428fc766191a0800

hal_ti

258652a3ac5d7df68ba8df20e4705c3bd98ede38

hal_wurthelektronik

e3e2797b224fc48fdef1bc3e5a12a7c73108bba2

hal_xtensa

b38620c7cc61e349e192ed86a54940a5cd0636b7

liblc3

48bbd3eacd36e99a57317a0a4867002e0b09e183

libmetal

14f519529a1e4a46aaea6826f5a41d99a3347276

littlefs

ed0531d59ee37f5fb2762bcf2fc8ba4efaf82656

loramac-node

fb00b383072518c918e2258b0916c996f2d4eebe

lvgl

1ed1ddd881c3784049a92bb9fe37c38c6c74d998

mbedtls

5f889934359deccf421554c7045a8381ef75298f

mcuboot

81315483fcbdf1f1524c2b34a1fd4de6c77cd0f4

mipi-sys-t

33e5c23cbedda5ba12dbe50c4baefb362a791001

net-tools

986bfeb040df3d9029366de8aea4ce1f84e93780

open-amp

f7f4d083c7909a39d86e217376c69b416ec4faf3

openthread

3ae741f95e7dfb391dec35c48742862049eb62e8

picolibc

82d62ed1ac55b4e34a12d0390aced2dc9af13fc9

segger

cf56b1d9c80f81a26e2ac5727c9cf177116a4692

tinycrypt

1012a3ebee18c15ede5efc8332ee2fc37817670f

trusted-firmware-a

713ffbf96c5bcbdeab757423f10f73eb304eff07

trusted-firmware-m

e2288c13ee0abc16163186523897e7910b03dd31