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.
- İ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ı
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.
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.
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.Tablo
Tablo
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 debian tabanlı 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ış insanlı/insansız hava, kara ve deniz araçlarından, helikopter ve uçaklara hatta deniz araçlarına kadar akla gelebilecek her araç için kullanılabilecek bir otopilot yazılımıdır. |
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.2.1.1. Git clone işlemi ile örnek projeleri indir
2.1.2. Derleme için gerekli araçları ve kütüphaneleri kur
2.1.3. Örnek bir projeyi derle
2.1.4. Derlenmiş projeyi çalıştır
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.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.