> ## 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.

# Giriş

> Bileşen, Çevresel Aygıtlar ve Kullanım Örnekleri

export const func_0 = "İŞLEV"

export const pins_0 = "PİNLER"

Bu bölümde, kart üzerinde bulunan sensörlerin ve veri hatlarının kullanımlarına dair örnekler gösterilecektir.
Bütün örnekler seri port bağlantısı kurularak Terminal/Konsol üzerinden yapılacağı için
[Hızlı Başlangıç](../../../quickstart) bölümünde Terminal kullanımına dair açıklamaları okumuş olduğunuz
kabul edilmektedir. İlgili kısımda anlatılan Desktop imajına tarayıcı ile bağlanma, SSH/Ethernet ile bağlanma
veya seri port üzerinden konsol ile bağlanma yöntemlerinden birini tercih edebilirsiniz.

## Güç bağlantısı

<Columns cols={2}>
  <Frame caption="USB-C ile">
    <img className="rounded-lg" src="https://mintcdn.com/t3gemstone-754bcb96/n4bXnpFvVbnZrtJo/images/o1-board/31-usb-connection.jpg?fit=max&auto=format&n=n4bXnpFvVbnZrtJo&q=85&s=00c6f327b64269e7272eece9bb395641" width="5184" height="3456" data-path="images/o1-board/31-usb-connection.jpg" />
  </Frame>

  <Frame caption="Harici güç kaynağı ile">
    <img className="rounded-lg" src="https://mintcdn.com/t3gemstone-754bcb96/olLMC62NF4KV4P11/images/o1-board/28-power-with-battery.jpg?fit=max&auto=format&n=olLMC62NF4KV4P11&q=85&s=2a39a128e7637f56cd630cc68b0eb052" width="5184" height="3456" data-path="images/o1-board/28-power-with-battery.jpg" />
  </Frame>
</Columns>

Gemstone O1 geliştirme kartının harici güç girişi 5V–12V / 5A aralığında çalışacak şekilde tasarlanmıştır. Bu aralıkta herhangi bir uygun harici güç kaynağı bağlanabilir. USB tarafında ise USB PD (Güç Dağıtım) entegresi 9V’a ayarlanmıştır. Eğer bağlı cihaz 9V desteğine sahipse, geliştirme kartı 9V / 3A ile beslenir; cihaz uygun değilse kart, 5V / 3A ile güç almaya devam eder.

<Tip>
  Batarya bağlı durumdayken USB takıldığında, güç kaynağı otomatik olarak USB’ye geçer ve batarya devre dışı kalır. USB çıkarıldığında ise batarya otomatik olarak devreye girer ve geliştirme kartına güç sağlamaya devam eder.
</Tip>

<Danger>
  USB bağlantısı yapılmadığında, geliştirme kartı 12V bataryanın ters polarite ile bağlanmasına karşı korumaya sahiptir. Ancak bu koruma tam güvence sağlamaz bu yüzden kullanıcı tarafından dikkatli bağlantı yapılması gerekmektedir.
</Danger>

<Danger>
  USB takılıyken 12V batarya ters bağlanırsa, geliştirme kartı ciddi şekilde zarar görebilir hatta yanma riski oluşabilir. Bu nedenle USB ile güç bağlantısı varken batarya bağlantısını yapmadan önce polarite mutlaka kontrol edilmelidir.
</Danger>

## 1. Pinout

<Frame caption="Kartın GPIO pinlerini belirten görsel">
  <img className="rounded-lg" src="https://mintcdn.com/t3gemstone-754bcb96/xXa-dgH9QsK0Txx6/images/o1-board/32-gpio.png?fit=max&auto=format&n=xXa-dgH9QsK0Txx6&q=85&s=b40d4b34304fda2eef06394e3f64e68f" width="1221" height="750" data-path="images/o1-board/32-gpio.png" />
</Frame>

Kart üzerinde bulunan **40-pin expansion header** olarak isimlendirilen Giriş/Çıkış (I/O) pinleri; UART (seri port), I2C,
SPI, PWM ve PCM gibi arayüzleri sağlamaktadır. 40-pin giriş/çıkış portlarının kullanım amaçları ve varsayılan
konfigürasyonda hangi arayüzlere tahsis edildiğine değinilecek, sonraki bölümde ise [Device Tree Overlay](/tr/faq#device-tree-overlay-nedir)
dosyaları ile pinlerin nasıl farklı kullanımlara açılabileceği izah edilecektir.

Örneğin `GPIO-7` isimli pin varsayılan konfigürasyonda `SPI-MCU0 CS2` olarak belirlenmiş
olup [Device Tree Overlay](/tr/faq#device-tree-overlay-nedir) ismi verilen dosya aktif edilerek `UART-WKUP0 RX` fonksiyonuna dönüştürülebilmektedir.
Benzer şekilde [Gemstone VTOL](../../../projects/vtol) projesinde Bluetooth ihtiyacı olmadığından, ilgili pinler devre
dışı bırakılarak `UART-MAIN6`'ya dönüştürülmüştür.

|                 {func_0} |    {pins_0}   |   {pins_0}   | {func_0}                 |
| -----------------------: | :-----------: | :----------: | :----------------------- |
|                3v3 Power | **3v3 Power** | **5v Power** | 5v Power                 |
|             I2C-MCU0 SDA |   **GPIO-2**  | **5v Power** | 5v Power                 |
|             I2C-MCU0 SCL |   **GPIO-3**  |    **GND**   | GND                      |
|                          |   **GPIO-4**  |  **GPIO-14** | UART-MAIN1 TX            |
|                      GND |    **GND**    |  **GPIO-15** | UART-MAIN1 RX            |
|                          |  **GPIO-17**  |  **GPIO-18** | PCM-McASP0 CLK           |
|                          |  **GPIO-27**  |    **GND**   | GND                      |
|                          |  **GPIO-22**  |  **GPIO-23** |                          |
|                3v3 Power | **3v3 Power** |  **GPIO-24** |                          |
|            SPI-MCU0 MOSI |  **GPIO-10**  |    **GND**   | GND                      |
|            SPI-MCU0 MISO |   **GPIO-9**  |  **GPIO-25** |                          |
|            SPI-MCU0 SCLK |  **GPIO-11**  |  **GPIO-8**  | SPI-MCU0 CS0             |
|                      GND |    **GND**    |  **GPIO-7**  | SPI-MCU0 CS2             |
| I2C-WKUP0 SDA (reserved) |   **GPIO-0**  |  **GPIO-1**  | I2C-WKUP0 SCL (reserved) |
|                          |   **GPIO-5**  |    **GND**   | GND                      |
|                          |   **GPIO-6**  |  **GPIO-12** | PWM-ECAP0                |
|                   PWM-1B |  **GPIO-13**  |    **GND**   | GND                      |
|            PCM-McASP0 FS |  **GPIO-19**  |  **GPIO-16** |                          |
|                          |  **GPIO-26**  |  **GPIO-20** | PCM-McASP0 DIN           |
|                      GND |    **GND**    |  **GPIO-21** | PCM-McASP0 DOUT          |

#### 1.1. UART-MAIN1

Bu UART arayüzüne Gemstone kartta yer alan `/dev/ttyS3` cihazı üzerinden erişilebilmektedir.

Komut satırından UART hattını test etmek için `picocom` programından yararlanabilirsiniz.
`picocom` seri terminal uygulamasıdır, belirtilen seri porta anlık olarak klavyeden basılan karakterleri
gönderirken karşı taraftan gelen verileri de ekrana basar. `TX` ve `RX` pinlerini jumper kablo yardımıyla
birbirine bağladıktan sonra aşağıdaki komutu çalıştırabilirsiniz. Eğer bağlantılar düzgünse klavyede anlık
bastığınız karakterleri ekranınızda görmeniz gerekmektedir.

```bash theme={"system"}
gemstone@t3-gem-o1:~$ picocom -b 115200 /dev/ttyS3
# picocom v3.1
#
# port is        : /dev/ttyS6
# flowcontrol    : none
# baudrate is    : 115200
# parity is      : none
# databits are   : 8
# stopbits are   : 1
# escape is      : C-a
# local echo is  : no
# noinit is      : no
# noreset is     : no
# hangup is      : no
# nolock is      : no
# send_cmd is    : sz -vv
# receive_cmd is : rz -vv -E
# imap is        :
# omap is        :
# emap is        : crcrlf,delbs,
# logfile is     : none
# initstring     : none
# exit_after is  : not set
# exit is        : no
#
# Type [C-a] [C-h] to see available commands
# Terminal ready
# Hello World
```

#### 1.2. I2C-MCU0

Bu I2C arayüzüne Gemstone kartta yer alan `/dev/i2c-1` cihazı üzerinden erişilebilmektedir.

Hatta bağlı çevre birimleri görüntülemek için `i2cdetect` komutundan yararlanabilirsiniz.
Örnek bir çıktı aşağıda verilmiştir. Komutun çıktısında `UU` ile belirtilen adreslerdeki (`0x30`) çevre birimler
I2C hattına bağlı fakat Linux kernel tarafından kullanılmakta, doğrudan adres numarası yazan (`0x6b`) çevre birimler
ise I2C hattına bağlı ve boşta anlamına gelmektedir.

```bash theme={"system"}
gemstone@t3-gem-o1:~$ i2cdetect -r -y 1
#      0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
# 00:                         -- -- -- -- -- -- -- --
# 10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 30: UU -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
# 60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- --
# 70: -- -- -- -- -- -- -- --
```

#### 1.3. I2C-WKUP0

<Warning>
  Bu I2C arayüzü karta **40-pin expansion header** üzerinden bağlanan **Hardware Attached on Top (HAT)** cihazları
  tanımlamak için kullanılır. Boot esnasında HAT üzerinde yer alan EEPROM sorgulanır ve cihaz bilgisi okunur.
  Eğer karta HAT bağlanmayacaksa bu pinler boşta bırakılmalıdır.
</Warning>

#### 1.4. SPI-MCU0

Bu SPI arayüzüne Gemstone kartta yer alan `/dev/spidev0.0` ve `/dev/spidev0.2` cihazları üzerinden erişilebilmektedir.
`/dev/spidev0.0` cihazı SPI-MCU0 CS0, `/dev/spidev0.2` cihazı ise SPI-MCU0 CS2'e karşılık gelmektedir.

Komut satırından SPI hattını test etmek için `spi-pipe` programından yararlanabilirsiniz.
`spi-pipe` programı stdin'den gelen verileri `--device` ayarıyla belirtilen SPI hattına basıp, hattan gelen veriyi de
stdout'a basmaktadır. `MOSI` ve `MISO` pinlerini jumper kablo yardımıyla birbirine bağladıktan sonra
aşağıdaki komutu çalıştırabilirsiniz. Eğer bağlantılar düzgünse ekranda "Hello World" yazısını görmeniz gerekmektedir.

```bash theme={"system"}
gemstone@t3-gem-o1:~$ printf '\x48\x65\x6c\x6c\x6f\x20\x57\x6f\x72\x6c\x64' | spi-pipe --device /dev/spidev0.0 --speed 1000000
# Hello World
```

#### 1.5. PWM-1B

Bu PWM arayüzüne Gemstone kartta yer alan `/sys/class/pwm/pwmchip5/pwm1` cihazı üzerinden erişilebilmektedir.

Bu cihazın oluşması için öncelikle `export` komutu çalıştırılmalıdır.
Ardından nanosaniye cinsinden `period` ve `duty_cycle` değerleri aşağıdaki örnekte gösterildiği şekilde istenen
değerlere ayarlanıp cihaza `enable` komutu verildikten sonra PWM çıktısı alınabilir.

```bash theme={"system"}
gemstone@t3-gem-o1:~$ echo 1 | sudo tee /sys/class/pwm/pwmchip5/export
# 1
gemstone@t3-gem-o1:~$ echo 2000000 | sudo tee /sys/class/pwm/pwmchip5/pwm1/period     # 500 Hz
# 2000000
gemstone@t3-gem-o1:~$ echo 1000000 | sudo tee /sys/class/pwm/pwmchip5/pwm1/duty_cycle # 50%
# 1000000
gemstone@t3-gem-o1:~$ echo 1 | sudo tee /sys/class/pwm/pwmchip5/pwm1/enable
# 1
```

#### 1.6. PWM-ECAP0

Bu PWM arayüzüne Gemstone kartta yer alan `/sys/class/pwm/pwmchip0/pwm0` cihazı üzerinden erişilebilmektedir.

```bash theme={"system"}
gemstone@t3-gem-o1:~$ echo 0 | sudo tee /sys/class/pwm/pwmchip0/export
# 0
gemstone@t3-gem-o1:~$ echo 2000000 | sudo tee /sys/class/pwm/pwmchip0/pwm0/period     # 500 Hz
# 2000000
gemstone@t3-gem-o1:~$ echo 1000000 | sudo tee /sys/class/pwm/pwmchip0/pwm0/duty_cycle # 50%
# 1000000
gemstone@t3-gem-o1:~$ echo 1 | sudo tee /sys/class/pwm/pwmchip0/pwm0/enable
# 1
```

#### 1.7. PCM-McASP0

Pulse-code Modulation (PCM) ya da Texas Instruments SoC'lerindeki adıyla Multichannel Audio Serial Port (McASP), düşük
gecikmeli ve yüksek kaliteli dijital ses akışı gerektiren gerçek zamanlı ses işleme uygulamalarında kullanılabilmektedir.
`FS` pini DAC gibi harici bir ses cihazına frame-sync sinyali sağlarken `CLK` pini de benzer şekilde clock sinyali sağlar.
`DIN` pini sayesinde I2S mikrofon gibi bir dijital ses cihazından veri girişi, `DOUT`
pini sayesinde de DAC gibi bir dijital ses cihazına veri çıkışı sağlanabilmektedir.

## 2. Device Tree

Kart üzerindeki 40-pin giriş/çıkış portlarının kullanılabileceği konfigürasyonlar (UART, PWM, I2C, GPIO, ...)
[Device Tree Overlay](/tr/faq#device-tree-overlay-nedir) adı verilen dosyalarda tanımlanmıştır. İstenen konfigürasyonun/konfigürasyonların aktif
edilebilmesi için ilgili overlay dosyalarının bulunup, bootloader'a liste olarak verilmesi gerekmektedir.

Texas Instruments ARM64 tabanlı SoC'ler için tüm overlay dosyalarının kaynak kodları
[t3gemstone/linux](https://github.com/t3gemstone/linux) projesi içerisinde `arch/arm64/boot/dts/ti`
dizini altında yer almaktadır. T3-GEM-O1 kartı için olanlar `k3-am67a-t3-gem-o1-<overlay_adi>.dtso` biçiminde
isimlendirilmiştir. Her bir overlay dosyasının başında hangi amaçla oluşturulduğuna dair bilgi yer almaktadır.

### 2.1. Örnek: UART6 sinyallerinin 40-pin HAT'e yönlendirilmesi

T3-GEM-O1'in 40-pin HAT'i üzerinde varsayılan olarak sadece 1 adet seri port bulunmaktadır. Birden fazla seri
porta ihtiyaç duyan projeler için 40-pin HAT üzerindeki başka pinlerin de seri porta dönüştürülmesi gerekmektedir.

#### 2.1.1. Pinout'un İncelenmesi

T3-GEM-O1'in pinout'u incelendiğinde HAT üzerindeki 7 ve 11 numaralı pinlerin UART6\_RX ve UART6\_TX olarak
kullanılabileceği görülmektedir.

#### 2.1.2. İlgili Overlay Dosyasının Bulunması

Sonraki aşamada istenen konfigürasyonu hangi [Device Tree Overlay](/tr/faq#device-tree-overlay-nedir) dosyasının yaptığının
bulunması gerekmektedir, bu dosyalarının tümü geliştirme kartının içerisindeki `/boot/overlays` klasöründe bulunmaktadır.
`ls /boot/overlays` komutu çalıştırılarak hepsi listelenebilir.

```bash lines theme={"system"}
├── boot
│   ├── overlays
│   │   ├── k3-am67a-t3-gem-o1-csi0-imx219.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-rpi-7inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-10-1inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-11-9inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-13-3inch-2lane-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-13-3inch-4lane-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-2-8inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-3-4inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-4-0inch-c-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-4-0inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-5-0inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-6-25inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-7-9inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-7inch-h-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-7inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-8-0inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-dsi-waveshare-8-8inch-panel.dtbo
│   │   ├── k3-am67a-t3-gem-o1-gpio-fan.dtbo
│   │   ├── k3-am67a-t3-gem-o1-i2c1-400000.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-ecap0-gpio12.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-ecap1-gpio16.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-ecap2-gpio18.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm0-gpio14.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm0-gpio5.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm0-gpio5-gpio14.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm1-gpio13.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm1-gpio6.dtbo
│   │   ├── k3-am67a-t3-gem-o1-pwm-epwm1-gpio6-gpio13.dtbo
│   │   ├── k3-am67a-t3-gem-o1-spidev0-1cs.dtbo
│   │   ├── k3-am67a-t3-gem-o1-spidev0-2cs.dtbo
│   │   ├── k3-am67a-t3-gem-o1-uart-ttys0.dtbo
│   │   └── k3-am67a-t3-gem-o1-uart-ttys6.dtbo
```

#### 2.1.3. uEnv.txt Dosyasının Güncellenmesi

Bu örnekte `k3-am67a-t3-gem-o1-uart-ttys6.dtbo` adlı overlay dosyası kullanılacaktır. Bootloader'ın bu dosyayı
işletim sistemi başlatılmadan önce yükleyebilmesi için `/boot/uEnv.txt` dosyasındaki `overlays` kısmına
aşağıdaki gibi eklenmelidir. Overlay dosya adları arasında bir boşluk kalacak şekilde ekleme yapılmaktadır.

<code>overlays=k3-am67a-t3-gem-o1-spidev0-2cs.dtbo k3-am67a-t3-gem-o1-i2c1-400000.dtbo <span style={{ background: 'rgb(var(--primary-light)/.2)' }}>k3-am67a-t3-gem-o1-uart-ttys6.dtbo</span></code>

#### 2.1.4. Kontrol

Değişiklikleri kaydettikten sonra kart `reboot` komutuyla yeniden başlatılmalıdır.
Ardından `ls /proc/device-tree/chosen/overlays` komutuyla ilgili overlay'in eklenip
eklenmediği kontrol edilmelidir.

```txt highlight=3 theme={"system"}
k3-am67a-t3-gem-o1-i2c1-400000.dtbo
k3-am67a-t3-gem-o1-spidev0-2cs.dtbo
k3-am67a-t3-gem-o1-uart-ttys6.kernel
...
```

Yukarıdaki aşamalar başarıyla tamamlandıktan sonra `/dev/ttyS6` cihazı oluşmuş olacaktır.
