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 some target systems, it is necessary to also install the associated Binary Blobs in the west workspace. The second important west command, west blobs, is responsible for this.

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.4.99 release:

Project

Revision

zephyr

tiacsys/main

cannectivity

tiacsys/main

ubxlib

62c0021cbf079b43cdd9a219e9b10b49ea616e19

chre

c4c2f49fdcaa2fed49eb1db027696a5734a010d2

acpica

8d24867bc9c9d81c81eeac59391cda59333affd4

cmsis

512cc7e895e8491696b61f7ba8066b4a182569b8

cmsis_6

b2dfbe1a20bbd49c2d2c605073799671074bbb30

edtt

c282625e694f0b53ea53e13231ea6d2f49411768

fatfs

f4ead3bf4a6dab3a07d7b5f5315795c073db568d

hal_adi

c8aa8d545635a5821045ab500c70b878bd55f15d

hal_ambiq

c03d2f9902cfc3ff0d3f78ead538e9726251f7f9

hal_atmel

8cd575049f04131e333558072484bfc6334c19c4

hal_bouffalolab

6f8ee38a67b5c4a9f0b6e395d9c363fc920182a0

hal_espressif

05cb90227d4dc2ace31991f85809ba33331be9bc

hal_ethos_u

03567073fe2b9802c0bd73f9534da6f8a03924d1

hal_gigadevice

ee0e31302c21b2a465dc303b3ced8c606c2167c8

hal_infineon

ab7351b491e360329ce564e087cac6aef0bf4b08

hal_intel

2ddab7fe5bfe85c7af8b87a490c4a0e560dc1078

hal_microchip

c0890ac01eaebdd19cb70a5475ed7b4f4ecc8911

hal_nordic

a820f00abfc2fe2f4d03ebdb3d185e21607e9006

hal_nuvoton

bed550b27c00f0ee4a8086f3eeb9daf7a1aa6c32

hal_nxp

8e39b38f4c13aa1f1d4a5f1033d8d9ec196bac99

hal_openisa

eabd530a64d71de91d907bad257cd61aacf607bc

hal_quicklogic

bad894440fe72c814864798c8e3a76d13edffb6c

hal_realtek

428e4ddd2a19560cb32ddd56cbb62bf4597edafd

hal_renesas

b994af098811b0ea02d5388efeefd0ac54f082e3

hal_rpi_pico

562b41e10a1d8b1a761b253b107c5c6a84cf4535

hal_sifli

86fa0e9433fda1a760e0077c19b8407ecceea2f9

hal_silabs

8b00abb4b3ce7d216bb5ce6c4be7a4b6abaddf5e

hal_st

e9f0468ade3c06d5e3961e3821543dd67c7ea7f0

hal_stm32

ff0f1fa5ab4e6559cfbb61d5270d38caad9ad0b0

hal_tdk

fa54cb65535b0ed69564423c9e0bf4e7ee47dcb1

hal_telink

4226c7fc17d5a34e557d026d428fc766191a0800

hal_ti

e66677c8c8d8b5e521c744f6b9788137b41b98fc

hal_wch

dd3855ea624b05de7e6e95584789615d2058a0f3

hal_wurthelektronik

7c1297ea071d03289112eb24e789c89c7095c0a2

hal_xtensa

0495a1afd300b644d3ec8dd2c3bd11007e69a892

hostap

970cc28c58ab86cfc34a5d6c7486222f998b24dc

liblc3

48bbd3eacd36e99a57317a0a4867002e0b09e183

libmetal

c41f476ba425663cadf7e456b6432e4b21591278

littlefs

8f5ca347843363882619d8f96c00d8dbd88a8e79

loramac-node

fb00b383072518c918e2258b0916c996f2d4eebe

lvgl

85aa60d18b3d5e5588d7b247abf90198f07c8a63

mbedtls

6a08a7eb799853ce2a9053d24ecde31bf3a1322c

mcuboot

e36d3c8d6ca5e0ed1f510f2a7d110f405a7c396b

mipi-sys-t

5a9d6055b62edc54566d6d0034d9daec91749b98

net-tools

c3431f482ea8a7b570fa4573aa5d35875b7f2a23

open-amp

01032a8a7bdfdd541686f5dfa3671e602b9fcbff

openthread

e4d97681c53ec1cc34af1404ad2960adda4ba691

picolibc

01254932e8e81085817ed61fd858648584ffe37c

psa-arch-tests

6e8219237435112df33bbcf37b7f5657fcfb9cff

segger

50892fdbcf2f570e67baa72b8894a66b16946f72

tf-m-tests

42f0fb9250acdd62219a13b8d272072f94446b84

tf-psa-crypto

dc575a2ddcc8cb16275d24c42a52eaf79ebe2231

trusted-firmware-a

4aef38a5bf03edfa615c1f8af5a49e7065f9fb3f

trusted-firmware-m

9a4cb1a280b63a5e66bd469e82eb75f2b3e05a78