Geliştirme
Ekosistem ve Geliştirme
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!
- İnsansız hava, kara, deniz altı aracı uçuş kontrol ve yardımcı görev bilgisayarı
- Tarımsal araçlar, sanal gerçeklik gözlükleri, akıllı ev çalışmaları, IoT, Robotik, Endüstriyel kollar.
- Görüntü işleme ve yapay zekayı birlikte kullanan kamera sistemleri
- Otonom robotik çalışmalar için gömülü bilgisayar
- 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.
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.
Proje | Repo | Açıklama |
---|---|---|
SDK | t3gemstone/sdk | Kernel, U-Boot, Firmware, Driver, Initrd gibi bileşenleri derleyerek işletim sistemi imajı oluşturan yazılım geliştirme kitidir. |
Dokümantasyon | t3gemstone/docs | Okumakta olduğunuz bu dokümantasyonun Mintlify kaynak kodları |
Yocto | t3gemstone/meta-gemstone | Yocto projesi kodlarıdır. |
Linux Kernel | t3gemstone/linux | Geliştirme kartlarında kullanılan linux kodlarıdır. |
Bootloder | t3gemstone/u-boot | Geliştirme kartlarında kullanılan ön yükleyici (bootloader) kodları. Bootloader donanımın sağlık kontrollerini yaparak linux kernelini başlatan kod parçasıdır. |
Debos | t3gemstone/debos | Debos isimli projenin klonlanarak bir takım ilave özelliklerin eklendiği dağıtım oluşturma aracıdır. |
GemImager | t3gemstone/gem-imager | rpi-imager isimli projenin klonlanarak Gemstone kartlarına göre özelleştirilmiş ilave özellikler eklenmiş imaj yazma aracıdır. |
Hardware | t3gemstone/hardware | Gemstone kartlarının anakart vb. donanım bileşenlerinin PCB vb. tasarımlarıdır. |
Toolchains | t3gemstone/toolchains | C/C++ gibi projelerin farklı mimarilere göre derlenmesinde kullanılan araçtır. |
Package Server | t3gemstone/package-server | packages.t3gemstone.org adresinde bulunan Linux APT paket yönetim sunucusu/sistemidir. |
noVNC | t3gemstone/t3-gem-vnc | Tarayıcı üzerinden Gemstone’a uzak masaüstü bağlantısı imkanı veren yazılımdır. |
Ardupilot | t3gemstone/ardupilot | Gemstone için uyarlanmış insansız araç otopilotudur. |
NuttX | t3gemstone/nuttx | PX4 gibi MCU barındıran donanımlarda çalışan gerçek zamanlı işletim sistemidir. İlerleyen süreçte Gemstone Obsidyen kartlarında bulunan R5 MCU çekirdeklerinde çalışması sağlanacaktır. |
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.
Bu bölüm t3gemstone/examples isimli projeyi kart içerisine indirerek derleme işlemi yapıp örnekleri çalıştırmayı gösterir.
Todo: Karta bağlanıp git clone işlemlerini gösteren
2.1.1. Git clone işlemi ile örnek kodları indir
Todo: Git clone
2.1.1. İndirilen kodları derleyerek çalıştır
Todo: Task build
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 farklı mimariler için derleme imkanını sağlayan Cross (Çarpaz) derleme araçlarıdır.
Todo: Host
2.2.1. Geliştirici (Host) Bilgisayarını Hazırla
Todo: Host Geliştirici Bilgisayarı Hazırlık
2.2.2. Geliştirici (Host) Bilgisayarında Proje Derle
Todo: Derle
2.2.3. Derlenen yazılımları Geliştirme Kartına (Target) yükle
Todo: Yükle