Bu bölümde T3 Gemstone Projesinin kapsamının ne olduğu, ne gibi çalışmalar yapılabileceği, yazılım geliştirmek için yöntemler ve ekosistemin tanıtımına yönelik bilgiler bulunmaktadır.
Bölüm bitiminde aşağıdaki konularda bilgi sahibi olacaksınız.
  • Gemstone geliştirme kartının Donanım ve Yazılım çalışmalarına ait bileşenlerin neler olduğu
  • Kart üzerinde veya Ubuntu bir bilgisayar üzerinde yazılım derleme yöntemleri
  • Github repolarında bulunan projelerin neler olduğu

1. Ekosistem

Gemstone projesi tümüyle açık kaynak yazılım ve donanım bileşenlerine sahiptir. Bu; geliştirme kartının elektronik tasarımlarını kullanarak kendi sistemlerinize göre yeniden tasarlayabileceğiniz, yazılım bileşenleri ve kodlarda değişiklik yaparak özgürce kullanabileceğiniz anlamına gelmekte olup Son kullanıcı lisansı bölümünde ne gibi hususlara dikkat edilmesi gerektiği belirtilmiştir.

Todo: Büyük resmi gösteren içerik

Geliştirme kartlarının hangi projelerde kullanılabileceğini örneklemek için aşağıda bir liste verilmiştir ve başka nelerin eklenebileceği konusunda katkılarınız beklenmektedir!
  1. İnsansız hava, kara, deniz altı aracı uçuş kontrol ve yardımcı görev bilgisayarı
  2. Tarımsal araçlar, sanal gerçeklik gözlükleri, akıllı ev çalışmaları, IoT, Robotik, Endüstriyel kollar.
  3. Görüntü işleme ve yapay zekayı birlikte kullanan kamera sistemleri
  4. Otonom robotik çalışmalar için gömülü bilgisayar
  5. Komuta kontrol sistemlerinde bulunan dokunmatik paneller ve kiosk ekranları
Listede bulunan çalışmaların onlarca farklı örneği ve yeni teknoloji haberleri Topluluk Forumlarında düzenli olarak yayınlanmaktadır.

1.1. Geliştirme Kartı / Gömülü Bilgisayar

Gemstone ürünleri ekseriyetle gömülü teknoloji çalışmalarında kullanılmakta olup çeşitli sensörler, çevresel aygıtlarla donatılmıştır. Seriport, CanBUS, i2c, SPI, Ethernet gibi iletişim yöntemleriyle; sensör ve kameralardan verileri aldıktan sonra işleyerek çeşitli motorların, kontrol edilmesi gibi projeler yapılması mümkündür. T3-GEM-O1 isimli geliştirme kartının donanım tasarımları (PCB vb.) bu adreste mevcuttur. Üzerindeki donanımların nasıl kullanılacağına dair örnekler ise sonraki (Geliştirme Kartları) bölümlerde anlatılmıştır.

Todo: Kart tasarım sürecini PCB ve KiCAD gibi yazılımları özetleyen görsel

1.2. İşletim Sistemi

Gemstone üzerinde GNU/Linux işletim sistemi bulunmaktadır. Çekirdek (Kernel), Önyükleyici (Bootloader/U-Boot), Dağıtım (Distro), Firmware gibi bileşenleri barındırmakta olup; sistem bir araya getirilirken Yocto Project ve Debootstrap gibi araçlar kullanılmıştır. GNU/Linux dağıtımı (Distro) olarak Debian, Ubuntu, Poky kullanılmıştır. Debian veya Ubuntu kullanınımı, kart ihtiyaçlarına göre değişkenlik gösterebileceği için seçilebilir olarak sunulmuştur. GNU/Linux işletim sistemlerinde yazılım güncellemeleri yapılabilmesi için çeşitli paket yönetim sistemleri kullanılmaktadır. Örneğin Hızlı başlangıç bölümünde sistem güncellemesi yapılırken Ubuntu güncellemesi örneği verilmiştir. Benzer şekilde T3 Gemstone kartlarının özelleştirilmiş çekirdek, sürücü vb. bütün yazılımları için https://packages.t3gemstone.org/apt paket yönetim sistemi kullanılmaktadır. Güncelleme komutu çalıştırdığınızda sunuculardan -varsa- güncel paketler yüklenmektedir.
Gemstone için kullanılan işletim sistemi dağıtımı BeagleBoard BeagleY-AI için de kullanılabilmektedir. GemImager uygulamasından Board olarak BeagleY-AI seçtiğiniz takdirde oluşan sdcardı BeagleY-AI kartında kullanabilmektesiniz. Gemstone işletim sistemi dağıtımı Beagleboard’un sunmuş olduğundan daha güçlü ve günceldir.
Daha hızlı açılması için Linux kernelinde çeşitli özelleştirmeler ve geliştirme kartlarının barındırdığı donanımların sürücü seçimleri için Device Tree değişiklikleri github reposunda mevcuttur.

1.3. SDK (Software Development Kit / Geliştirme Kiti)

Yukarıda bahsedilen çekirdek, önyükleyici, dağıtım vb. bütün bileşenlerin, araç, paket ve yazılımların derlenerek bir araya getirilmesi, imaj dosyaların oluşturulması için T3 Gemstone SDK kullanılmaktadır. İlgili reponun README dosyasında nasıl kullanılacağı özet olarak belirtildiği gibi bu Dokümantasyonun SDK bölümünde daha detaylı anlatımlar yapılmıştır. SDK çalışmasında kullanılan Devbox, Distrobox, Debos, Taskfile gibi araçların her biri geniş bilgi gereksinimlerine ihtiyaç duyulan alanlar olduğu için ilgi alanınıza göre dokümantasyon sonunda yardımcı kaynaklar verilmiştir.

1.4. Github Reposu

T3 Gemstone Github reposunda bulunan projelerin kullanım amaçları aşağıdaki tabloda belirtilmiştir.

2. Geliştirme

Yazılım geliştirme süreçleri iki yöntemle yapılabilmektedir. Bunların ilki doğrudan kart üzerindeki derleme araçlarını kullanarak kart üzerinde yapılması iken ikinci yöntem Çapraz Derleme (Cross Compilation) ismi verilen ve projeleri kendi bilgisayarınız üzerinde derleyerek karta yüklediğiniz yöntemdir. Aşağıda her iki yöntem ve avantajları anlatılmıştır.

Todo: Host (x86-64) ve Target (aarch64) kavramlarını özetleyen görsel

2.1. Kart üzerinde yazılım geliştirme

Gemstone Obsidyen geliştirme kartının üzerinde bulunan sensör, haberleşme veri hatları, kamera, yapay zeka ve network gibi bileşenlerin nasıl kullanıldığına dair C/C++/Python örnek projeler https://github.com/t3gemstone/examples adresinde mevcuttur. Aşağıda kart üzerinde bu projenin indirilerek derleme işleminin yapılması anlatılmış her bir bileşen için ayrı ayrı açıklamalar Geliştirme kartları bölümünde izah edilmiştir.
Aşağıdaki adımlar t3gemstone/examples isimli projeyi kart içerisine indirerek derleme işlemi yapıp örnekleri çalıştırmayı gösterir. Gemstone geliştirme kartına Seri port, SSH veya VNC ile bağlantı kurduktan sonra işlemlerini uygulayınız.

2.1.1. Git clone işlemi ile örnek projeleri indir

git clone https://github.com/t3gemstone/examples.git
cd examples

2.1.2. Derleme için gerekli araçları ve kütüphaneleri kur

sudo apt install -y build-essential libncurses-dev libgpiod-dev
./setup.sh
devbox shell
task fetch

2.1.3. Örnek bir projeyi derle

CROSS_COMPILE=false PROJECT=magnetometer task build

2.1.4. Derlenmiş projeyi çalıştır

sudo ./build/examples/magnetometer/c/magnetometer
sudo ./build/examples/magnetometer/cpp/magnetometer
sudo ./build/examples/magnetometer/python/magnetometer

2.2. Geliştirici bilgisayarında yazılım geliştirme

Yukarıda anlatılan şekilde projelerin kart üzerinde derlenmesi mümkünken kullanmakta olduğunuz Dizüstü, Masaüstü bilgisayarlardaki GNU/Linux işletim sistemini kullanarak derleme yapmanın bir takım avantajları vardır. Örneğin T3-GEM-O1 kartı 4GB Bellek’e sahipken Dizüstü bilgisayarınız 16/32GB bellek’e ve daha gelişmiş İşlemciye sahip olabilir. Dolayısıyla derleme işlemlerini hızlandırmak için Cross Compile Toolchains (Çarpaz Derleme Araçları) kullanılmaktadır.
Geliştirme kartları ekseriyetle ARM mimarili işlemcilere sahipken dizüstü, masaüstü bilgisayarlar yine ekseriyetle Intel x86-64 mimarili işlemcilere sahiptir. Bu durumda bir mimarili bilgisayardan başka mimarili bir cihazda çalışmak üzere derleme yapma imkanını sağlayan programlar Cross (Çarpaz) derleme araçlarıdır.

2.2.1. Gemstone kartını ve bilgisayarınızı Ethernet ile birbirine bağlayın

Ethernet kablosunun bir ucunu geliştirme kartınıza diğer ucunu ise bilgisayarınıza bağlayınız. Ardından bilgisayarınıza aşağıdaki şekilde statik IP adresi ataması yapınız.
Bilgisayarınıza statik IP adresini atadıktan sonra seriport üzerinden kartın konsoluna erişip aşağıdaki komutları çalıştırınız. nmcli aracı kullanılarak yeni statik IP bağlantısı oluşturulup bu bağlantının önceliği DHCP’den daha yüksek olacak şekilde ayarlanacaktır. Bu sayede otomatik olarak statik IP ataması yapılacaktır.
gemstone@t3-gem-o1:~$ sudo nmcli connection add \
  con-name "eth0-static" \
  ifname eth0 type ethernet \
  ip4 10.0.0.1/24 \
  connection.autoconnect yes
gemstone@t3-gem-o1:~$ sudo nmcli connection modify "eth0-static" connection.autoconnect-priority 10
gemstone@t3-gem-o1:~$ sudo nmcli connection modify "eth0-dhcp" connection.autoconnect-priority 20
Statik IP adresi atandıktan sonra bağlantıyı test etmek için aşağıdaki komutu çalıştırınız. Eğer yanıt alabiliyorsanız Ethernet bağlantısı başarılıdır.
gemstone@t3-gem-o1:~$ ping 10.0.0.2

2.2.2. Git clone işlemi ile örnek projeleri indir

git clone https://github.com/t3gemstone/examples.git
cd examples

2.2.3. Derleme için gerekli araçları ve toolchain’i kur

./setup.sh
devbox shell
task fetch

2.2.4. Örnek bir projeyi toolchain’i kullanarak çapraz derle

CROSS_COMPILE=true PROJECT=magnetometer task build

2.2.5. Derlenmiş projeyi geliştirme kartına yükle

ubuntu@host:examples$ scp -r build/examples gemstone@10.0.0.1:build

2.2.6. Derlenmiş projeyi çalıştır

ubuntu@host:examples$ ssh gemstone@10.0.0.1
gemstone@t3-gem-o1:~$ sudo /home/gemstone/build/examples/magnetometer/c/magnetometer