> ## Documentation Index
> Fetch the complete documentation index at: https://docs.t3gemstone.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Yol Haritası

> Planlanan Projeler ve Aşamaları

export const Progress = ({percent}) => <div className="relative w-full bg-gray-200 dark:bg-gray-700 rounded-full h-3.5 overflow-hidden my-2">
    <div className="bg-green-600 h-full rounded-full transition-all duration-300" style={{
  width: `${percent}%`
}}></div>
    <span className="absolute inset-0 flex items-center justify-center text-[10px] font-semibold text-gray-900 dark:text-white leading-none">
      %{percent}
    </span>
  </div>;

<Tip>
  Bu bölümde Gemstone ile yapılması planlanan yeni projeler ve tamamlanma aşamaları bulunmaktadır.
  İlgili projelerde görev alarak katkıda bulunmak için Github sayfalarını veya topluluk forumlarını
  ziyaret edininiz.
</Tip>

<Card horizontal arrow="true" type="note" title="Apache Nuttx" icon="spinner" href="./roadmap#apache-nuttx">
  <Progress percent={50} />
</Card>

<Card horizontal arrow="true" type="note" title="Wayland Geçişi" icon="spinner" href="./roadmap#wayland-geçişi">
  <Progress percent={30} />
</Card>

<Card horizontal arrow="true" type="note" title="Buildroot" icon="spinner" href="./roadmap#buildroot">
  <Progress percent={80} />
</Card>

<Card horizontal arrow="true" type="note" title="Zenoh" icon="spinner" href="./roadmap#zenoh">
  <Progress percent={60} />
</Card>

<Card horizontal arrow="true" title="PX4 Autopilot" icon="clock" href="./roadmap#px4-autopilot">
  `Henüz Başlamadı`
</Card>

<Card horizontal arrow="true" title="ChibiOS + Ardupilot" icon="clock" href="./roadmap#chibios-+-ardupilot">
  `Henüz Başlamadı`
</Card>

<Card horizontal arrow="true" title="Linux Kernel Version 7" icon="clock" href="./roadmap#linux-kernel-version-7">
  `Henüz Başlamadı`
</Card>

<Card horizontal arrow="true" title="Gemstone Distro" icon="clock" href="./roadmap#gemstone-distro">
  `Henüz Başlamadı`
</Card>

## Apache Nuttx

Pixhawk
[Uçuş Kontrolcü (Flight Controller)](https://docs.px4.io/main/en/flight_controller/cubepilot_cube_orangeplus.html)
donanımı, çoğunlukla Cortex-M mimarili STM32 içermektedir. PX4 isimli otopilot ise Apache Nuttx isimli gerçek
zamanlı işletim sisteminde çalışmakta olup Texas AM67a için desteği bulunmamaktadır.

<Columns cols={2}>
  <Frame caption="Apache Nuttx RTOS">
    <a href="https://github.com/t3gemstone/NuttX" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/S1XNwAfVXiylpyYD/images/apache-nuttx.png?fit=max&auto=format&n=S1XNwAfVXiylpyYD&q=85&s=f588cf381acf52ecbf8f8a164285ebeb" noZoom width="502" height="449" data-path="images/apache-nuttx.png" />
    </a>
  </Frame>

  <Frame caption="PX4 Autopilot">
    <a href="https://github.com/t3gemstone/PX4-Autopilot" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/oFj6OOIrYSQVBj-3/images/px4-autopilot.png?fit=max&auto=format&n=oFj6OOIrYSQVBj-3&q=85&s=6152114c1ee9dd60531e6b859287cdb5" noZoom width="502" height="449" data-path="images/px4-autopilot.png" />
    </a>
  </Frame>
</Columns>

Bu projede, Apache Nuttx ve PX4'ün; T3-GEM-O1 geliştirme kartlarında bulunan Cortex-R5 çekirdeklerinde çalıştırılması
hedeflenmektedir. Aşağıdaki tabloda güncel durum ve yapılacaklar bulunmaktadır.

|                                                                                                             |                                |
| :---------------------------------------------------------------------------------------------------------- | -----------------------------: |
| R5 çekirdeklerde NuttX çalıştırma                                                                           |                   `Tamamlandı` |
| GPIO sürücü desteği                                                                                         |                   `Tamamlandı` |
| Seri port sürücü desteği                                                                                    |                   `Tamamlandı` |
| NuttShell (nsh) konsoluna erişilmesi                                                                        |                   `Tamamlandı` |
| NuttX'in remoteproc mekanizması ile U-Boot ya da Linux tarafından R5 çekirdeğine yüklenmesi                 |                   `Tamamlandı` |
| I2C sürücü desteği                                                                                          |                   `Tamamlandı` |
| SPI sürücü desteği                                                                                          |                   `Tamamlandı` |
| PWM sürücü desteği                                                                                          |                   `Tamamlandı` |
| ECAP(APWM) sürücü desteği                                                                                   |                   `Tamamlandı` |
| 40-pin HAT'te yer alan tüm pinler için pinmux ayarlamaları                                                  |                   `Tamamlandı` |
| Gemstone üzerindeki Nuttx işletim sisteminde PX4 otopilotunun app olarak çalıştırılması                     | Gönüllü Geliştirici Bekleniyor |
| R5 çekirdeğinde çalışan NuttX ile A53 çekirdeğinde çalışan Linux arası Texas IPC mekanizması ile haberleşme | Gönüllü Geliştirici Bekleniyor |
| CAN Bus sürücü desteği                                                                                      | Gönüllü Geliştirici Bekleniyor |
| USB sürücü desteği                                                                                          | Gönüllü Geliştirici Bekleniyor |
| SD card ve eMMC sürücü desteği                                                                              | Gönüllü Geliştirici Bekleniyor |

## ChibiOS + Ardupilot

Ardupilot otopilotu, T3 Gemstone O1 geliştirme kartında halihazırda Linux üzerinde, yani Cortex-A53
çekirdeklerde çalışmaktadır. Ancak gerçek zamanlı (real-time) ve düşük gecikmeli (low-latency) bir uçuş
kontrolü için otopilotun, işletim sistemi yükü olmadan ayrılmış çekirdeklerde çalışması tercih edilir.
Ardupilot'un birincil olarak desteklediği gerçek zamanlı işletim sistemi olan
[ChibiOS](https://www.chibios.org/), uçuş kontrolcü kartlarında yaygın olarak kullanılmaktadır.

Bu projede; ChibiOS işletim sisteminin AM67a SoC üzerindeki Cortex-R5 çekirdeklerine taşınması (port
edilmesi) ve Ardupilot'un bu çekirdeklerde, ChibiOS üzerinde otopilot olarak çalıştırılması hedeflenmektedir.
Böylece Cortex-A53 çekirdeklerde çalışan Linux genel amaçlı işlerle ilgilenirken, gerçek zamanlı uçuş kontrol
döngüsü Cortex-R5 çekirdeklerinde kesintisiz olarak yürütülebilecektir.

<Columns cols={2}>
  <Frame caption="ChibiOS RTOS">
    <a href="https://www.chibios.org/" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/2x5NJAwi9U-MsHK8/images/chibios.png?fit=max&auto=format&n=2x5NJAwi9U-MsHK8&q=85&s=9561245990a0395ef159d747477a32d3" noZoom width="800" height="445" data-path="images/chibios.png" />
    </a>
  </Frame>

  <Frame caption="Ardupilot">
    <a href="https://ardupilot.org/" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/2x5NJAwi9U-MsHK8/images/ardupilot.png?fit=max&auto=format&n=2x5NJAwi9U-MsHK8&q=85&s=d1dc6b201766544a1f6541438510c29e" noZoom width="1920" height="1080" data-path="images/ardupilot.png" />
    </a>
  </Frame>
</Columns>

Aşağıdaki tabloda yapılması planlanan çalışmalar bulunmaktadır.

|                                                                                                   |                                |
| :------------------------------------------------------------------------------------------------ | -----------------------------: |
| ChibiOS HAL'ının AM67a Cortex-R5 çekirdekleri için port edilmesi                                  | Gönüllü Geliştirici Bekleniyor |
| ChibiOS'un remoteproc mekanizması ile U-Boot ya da Linux tarafından R5 çekirdeğine yüklenmesi     | Gönüllü Geliştirici Bekleniyor |
| Seri port (UART) sürücü desteği ve konsol erişimi                                                 | Gönüllü Geliştirici Bekleniyor |
| GPIO sürücü desteği                                                                               | Gönüllü Geliştirici Bekleniyor |
| Ardupilot'un AP\_HAL\_ChibiOS katmanı kullanılarak R5 çekirdekleri için derlenmesi                | Gönüllü Geliştirici Bekleniyor |
| Ardupilot'un ChibiOS üzerinde otopilot olarak çalıştırılması                                      | Gönüllü Geliştirici Bekleniyor |
| SPI ve I2C sürücü desteği (IMU, barometre vb. sensörler için)                                     | Gönüllü Geliştirici Bekleniyor |
| PWM sürücü desteği (motor ve servo çıkışları için)                                                | Gönüllü Geliştirici Bekleniyor |
| CAN Bus (DroneCAN) sürücü desteği                                                                 | Gönüllü Geliştirici Bekleniyor |
| R5 çekirdeğinde çalışan ChibiOS ile A53 çekirdeğinde çalışan Linux arası Texas IPC ile haberleşme | Gönüllü Geliştirici Bekleniyor |
| MAVLink telemetri ve yer kontrol istasyonu (GCS) bağlantısının sağlanması                         | Gönüllü Geliştirici Bekleniyor |

## PX4 Autopilot

PX4 otopilotunun Gemstone Linux üzerinde (NuttX olmadan) çalıştırılması hedeflenmektedir.

<Columns cols={1}>
  <Frame caption="PX4 Autopilot">
    <a href="https://github.com/t3gemstone/PX4-Autopilot" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/oFj6OOIrYSQVBj-3/images/px4-autopilot-b.png?fit=max&auto=format&n=oFj6OOIrYSQVBj-3&q=85&s=ccc6484e93781dbd0a1ebdd73e49c046" noZoom width="785" height="410" data-path="images/px4-autopilot-b.png" />
    </a>
  </Frame>
</Columns>

## Buildroot

Yocto Project'e kıyasla, biraz daha hafif yapısı olan Linux derleme sistemi Buildroot'a; Gemstone desteği
getirilecektir. Burada amaç buildroot'u indiren bir kişinin board olarak `T3-GEM-O1`'ü resmi buildroot
sisteminde görebilmesi, yüklenen imaj türünü derleyerek geliştirme kartına yükleyebilmesidir.

<Columns cols={1}>
  <Frame caption="Buildroot">
    <a href="https://buildroot.org/" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/gPuwGDJx4nxSbbfy/images/buildroot.png?fit=max&auto=format&n=gPuwGDJx4nxSbbfy&q=85&s=7bbdd4709260146515ed942213a0fff9" noZoom width="800" height="400" data-path="images/buildroot.png" />
    </a>
  </Frame>
</Columns>

|                                                                                                                                        |              |
| :------------------------------------------------------------------------------------------------------------------------------------- | -----------: |
| Buildroot içerisinde T3-GEM-O1 konfigürasyonu eklenerek [adresine](https://github.com/t3gemstone/buildroot) pull request oluşturulması | `Tamamlandı` |

## Wayland Geçişi

AM67A SoC ile gelen GPU'nun (IMG BXS4-64) TI tarafından verilen sürücüsü, X11 masaüstü ortamlarını hızlandıramamaktadır.
Halihazırda pencereler donanım hızlandırması olmaksızın CPU (llvmpipe) ile render edilmektedir. Bu durum masaüstü ortamının donarak
çalışmasına sebep olmaktadır. Aynı sürücüde Wayland için hızlandırma desteği bulunmaktadır. Stabil,
kaynak kullanımı düşük, özellik bakımından zengin ve kullanıcıların çoğunluğuna hitap eden Wayland
destekli bir masaüstü ortamına geçilmesi hedeflenmektedir.

<Columns cols={1}>
  <Frame caption="Wayland">
    <img src="https://mintcdn.com/t3gemstone-754bcb96/w9qomZMilbBbtu0I/images/wayland-logo.svg?fit=max&auto=format&n=w9qomZMilbBbtu0I&q=85&s=0c7fd9b03355c864665c66187e116360" noZoom width="266" height="266" data-path="images/wayland-logo.svg" />
  </Frame>
</Columns>

|                                                                                                                                                   |                                |
| :------------------------------------------------------------------------------------------------------------------------------------------------ | -----------------------------: |
| [Mesa kütüphanesinin](https://gitlab.freedesktop.org/StaticRocket/mesa) Ubuntu 22.04 derleyici araçlarıyla derlenip DEB paketi haline getirilmesi |                   `Tamamlandı` |
| Uygun bir Wayland masaüstü ortamı ya da pencere yöneticisi seçilmesi                                                                              | Gönüllü Geliştirici Bekleniyor |
| Ayarlar, dosya yöneticisi, ağ yöneticisi gibi programların bulunması (seçilen ortam ile birlikte gelmiyorsa)                                      | Gönüllü Geliştirici Bekleniyor |
| Arayüz bütünlüğü için pencere kenarları, durum çubuğu gibi kısımlar için ortak bir tema oluşturulması                                             | Gönüllü Geliştirici Bekleniyor |

## Linux Kernel Version 7

Kullanılmakta olan 6.12 sürümü yerine, Linux kernel 7'nin T3-GEM-O1 geliştirme kartında çalıştırılması hedeflenmektedir.
Bu sayede yeni donanım sürücülerinden, geliştirmelerden ve hata düzeltmelerinden faydalanılması mümkün olacaktır.

<Columns cols={1}>
  <Frame caption="Linux Kernel Version 7">
    <a href="https://github.com/RobertCNelson/arm64-multiplatform/commits/v7.0.x-arm64-k3/" target="_blank">
      <img src="https://mintcdn.com/t3gemstone-754bcb96/ZQNNRZDYiWw0CH5C/images/linux-kernel-7.png?fit=max&auto=format&n=ZQNNRZDYiWw0CH5C&q=85&s=4b101c985323b9f64d3e8e1eacf61a78" noZoom width="1356" height="672" data-path="images/linux-kernel-7.png" />
    </a>
  </Frame>
</Columns>

## Gemstone Distro

Şu anda ekosistemde kullanılan kernel, bootloader ve firmware'ler Eğitim amacıyla Yocto aracılığıyla oluşturulmaktadır.
Akabinde Pardus, Ubuntu, Debian dağıtımlarının muhtelif sürümleri ile birleştirilerek imajlar üretilmektedir.
Bu yöntem değiştirilerek Kernel, Sürücüler, U-Boot, Firmware gibi çekirdek yazılımlarının tamamı Yocto olmadan
derlenerek, güncel Ubuntu versiyonun port edilerek Gemstone Distro isminde bağımsız bir dağıtım üretilmesi
hedeflenmektedir. Gemstone Image Writer uygulamasına Ubuntu, Pardus, Debian gibi dağıtımlar kendi arayüzlerini, masaüstü
ortamlarını içererek bulunmakla birlikte Gemstone Distro tamamen kendi arayüzlerini içerecektir.

Devbox, Taskfile, Distrobox gibi sistemler yerine Web tabanlı CI/CD araçları ile derleme yaparak imaj üreten sistemlere
geçiş mümkündür.

## Zenoh

Eclipse [Zenoh Pico](https://github.com/t3gemstone/zenoh-pico) projesi, düşük kaynak tüketimi gereken çeşitli
MCU'larda çalışmaktadır. Resmi kod deposunda belirtildiği üzere Arduino, STM32, ESP gibi kartlara uyarlanmıştır.
T3 Gemstone O1 üzerinde bulunan AM67A Cortex R5 mimariler için ise bilinen bir uyarlama çalışması mevcut değildir.

Bu çalışmada amaç zenoh-pico projesinin AM67A Cortex-R5 üzerinde lwIp ile birlikte çalışabilmesi, dynamic memory
kullanımının kaldırılarak static memory uyarlamasının yapılması ve bunun bir kütüphane olarak kullanılabilmesini
sağlayarak resmi kod depolarına T3 Gemstone O1 uyumluluğunun belirtilerek pull request oluşturmaktır.

<Columns cols={1}>
  <Frame caption="[Zenoh Nedir?](https://zenoh.io/docs/overview/what-is-zenoh/)">
    <img src="https://mintcdn.com/t3gemstone-754bcb96/i2kaIVQZy0I0J3-Z/images/zenoh.png?fit=max&auto=format&n=i2kaIVQZy0I0J3-Z&q=85&s=3d1e320005426f1b1920f2e38ed9d4f8" noZoom width="843" height="347" data-path="images/zenoh.png" />
  </Frame>
</Columns>

Dokümantasyonun [MCU](./tr/boards/o1/peripherals/mcu) bölümü ve [Examples](https://github.com/t3gemstone/examples)
reposu incelenerek aşağıdaki adımlar gerçekleştirilecektir.

|                                                                                                                                                                      |                                    |
| :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------: |
| [Zenoh Pico](https://github.com/t3gemstone/zenoh-pico)'nun mevcut haliyle Gemstone R5 MCU uygulaması olarak derlenmesi                                               |                       `Tamamlandı` |
| Projedeki dinamik bellek kullanımı yapılan yerlerin temizlenerek statik bellek yapılması                                                                             |                       `Tamamlandı` |
| FreeRTOS ve lwIp ile çalışan örneklerinin yazılması                                                                                                                  |                       `Tamamlandı` |
| Projenin library olarak derlenebilir ve diğer MCU yazılımlarında kullanılabilir hale getirilmesi                                                                     |                       `Tamamlandı` |
| Cortex R5 Zenoh MCU projesinin gerçek ethernet yerine IPC kullanarak linuxtaki sanal [RPMSG Net](https://github.com/t3gemstone/rpmsg-net) device ile routing yapması |                       `Tamamlandı` |
| 2 Gemstone (IPC) 1 Linux Desktop PC (Wifi) setup'u kurularak cihazların Zenoh ile haberleştirilmesi                                                                  | **Gönüllü Geliştirici Bekleniyor** |
| Projeye QUIC protokolü desteğinin getirilmesi                                                                                                                        | **Gönüllü Geliştirici Bekleniyor** |
