Development
Ecosystem and Development
This section contains information about the scope of the T3 Gemstone Project, what kind of work can be done, methods for software development, and an introduction to the ecosystem.
By the end of this section, you will have knowledge about the following topics:
- The components of the Gemstone development board’s Hardware and Software studies.
- Methods for compiling software on the board or on a Ubuntu computer.
- What the projects in the Github repositories are.
1. Ecosystem
The Gemstone project is entirely composed of open-source software and hardware components. This means you can redesign your own systems using the electronic designs of the development board and freely use the software components and codes by making changes, as outlined in the End User License section regarding what considerations should be taken into account.
Todo: Content showing the big picture
To exemplify the projects in which the development boards can be used, a list is provided below, and your contributions on what else can be added are welcome!
- Flight control and auxiliary mission computer for unmanned aerial, ground, and underwater vehicles.
- Agricultural vehicles, virtual reality glasses, smart home studies, IoT, Robotics, Industrial arms.
- Camera systems using image processing and artificial intelligence together.
- Embedded computer for autonomous robotics studies.
- Touch panels and kiosk screens in command and control systems.
Dozens of different examples of the studies listed and new technology news are regularly published on the Community Forums.
1.1. Development Board / Embedded Computer
Gemstone products are mostly used in embedded technology studies and are equipped with various sensors and peripheral devices. It is possible to create projects such as processing data from sensors and cameras via communication methods like serial port, CanBUS, I2C, SPI, Ethernet, and controlling various motors and actuators.
The hardware designs (PCB, etc.) of the T3-GEM-O1 development board are available at this address. Examples of how to use the hardware on it are explained in the later (Development Boards) sections.
Todo: Image summarizing the board design process with software like PCB and KiCAD
1.2. Operating System
Gemstone runs on a GNU/Linux operating system. It includes components such as the Kernel, Bootloader (U-Boot), Distribution (Distro), and Firmware. Tools like Yocto Project and Debootstrap were used to assemble the system.
As GNU/Linux distributions (Distro), Debian, Ubuntu, and Poky are used. The use of Debian or Ubuntu is offered as selectable, as it may vary depending on the board’s needs.
Various package management systems are used to perform software updates in GNU/Linux operating systems. For example, in the Quick Start section, an Ubuntu update example was given for system updates.
Similarly, the https://packages.t3gemstone.org/apt package management system is used for all customized kernel, driver, etc., software for T3 Gemstone boards. When you run the update command, the latest packages — if available — are downloaded from the servers.
For faster boot times, various customizations in the Linux kernel and Device Tree changes for driver selections of the hardware included in the development boards are available in the github repository.
1.3. SDK (Software Development Kit)
The T3 Gemstone SDK is used to compile and assemble all the components mentioned above — kernel, bootloader, distribution, etc. — tools, packages, and software, and to create image files. While the README file of the relevant repository briefly explains how to use it, more detailed explanations are provided in the SDK section of this Documentation. Tools such as Devbox, Distrobox, Debos, and Taskfile used in the SDK work are areas that require extensive knowledge, so helpful resources are provided at the end of the documentation based on your interests.
1.4. Github Repository
The purposes of the projects in the T3 Gemstone Github repository are listed in the table below.
Project | Repo | Description |
---|---|---|
SDK | t3gemstone/sdk | Software development kit that compiles components like Kernel, U-Boot, Firmware, Driver, Initrd to create an operating system image. |
Documentation | t3gemstone/docs | Mintlify source codes of this documentation you are reading. |
Yocto | t3gemstone/meta-gemstone | Codes of the Yocto project. |
Linux Kernel | t3gemstone/linux | Linux codes used on the development boards. |
Bootloader | t3gemstone/u-boot | Bootloader codes used on the development boards. Bootloader performs hardware health checks and starts the Linux kernel. |
Debos | t3gemstone/debos | A cloned version of the Debos project with additional features for creating distributions. |
GemImager | t3gemstone/gem-imager | A customized version of the rpi-imager project with additional features for writing images to Gemstone boards. |
Hardware | t3gemstone/hardware | PCB designs of hardware components like motherboards for Gemstone boards. |
Toolchains | t3gemstone/toolchains | Tools used for compiling C/C++ projects for different architectures. |
Package Server | t3gemstone/package-server | Linux APT package management server/system located at packages.t3gemstone.org. |
noVNC | t3gemstone/t3-gem-vnc | Software that allows remote desktop connection to Gemstone via a browser. |
Ardupilot | t3gemstone/ardupilot | Adapted autopilot for unmanned vehicles for Gemstone. |
NuttX | t3gemstone/nuttx | Real-time operating system running on hardware with MCUs like PX4. It will be made to work on the R5 MCU cores in Gemstone Obsidian boards in the future. |
2. Development
Software development processes can be done in two ways. The first is compiling directly on the board using the compilation tools on the board, while the second method is called Cross Compilation, where you compile projects on your own computer and then upload them to the board. Both methods and their advantages are explained below.
Todo: Image summarizing Host (x86-64) and Target (aarch64) concepts
2.1. Software Development on the Board
Example projects in C/C++/Python on how to use the components such as sensors, communication data lines, cameras, artificial intelligence, and network on the Gemstone Obsidian development board are available at https://github.com/t3gemstone/examples. Below, the process of downloading and compiling this project on the board is explained, and each component is separately described in the Development boards section.
This section shows how to download the t3gemstone/examples project onto the board, compile it, and run the examples.
Todo: Showing git clone operations on the board
2.1.1. Download Example Codes with Git Clone
Todo: Git clone
2.1.2. Compile and Run the Downloaded Codes
Todo: Task build
2.2. Software Development on the Developer’s Computer
While it is possible to compile projects on the board as described above, compiling on your Laptop or Desktop GNU/Linux operating system has some advantages. For example, while the T3-GEM-O1 board has 4GB of Memory, your Laptop may have 16/32GB of Memory and a more advanced Processor. Therefore, Cross Compile Toolchains are used to speed up compilation processes.
Development boards mostly have ARM architecture processors, laptops and desktops mostly have Intel x86-64 architecture processors. In this case, Cross Compilation tools provide the ability to compile for different architectures.
Todo: Host
2.2.1. Prepare the Developer (Host) Computer
Todo: Host Developer Computer Preparation
2.2.2. Compile the Project on the Developer (Host) Computer
Todo: Compile
2.2.3. Upload the Compiled Software to the Development Board (Target)
Todo: Upload