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

# Kurulum

> DX-M1 Modülünün Kart Üzerine Kurulumu

Bu bölümde, DeepX DX-M1 hızlandırıcı modülünün T3 Gemstone O1 geliştirme kartına takılması, sürücü ve
çalışma zamanı paketlerinin kurulması ile kurulumun doğrulanması adımları anlatılmaktadır.

<Steps>
  <Step title="Donanım Montajı">
    <Warning>
      Montaj işlemine başlamadan önce kartın güç bağlantısını kesiniz. Kart enerjili durumdayken M.2
      modülünün takılması veya çıkarılması, hem modüle hem de karta kalıcı zarar verebilir.
    </Warning>

    DX-M1 modülünü kart üzerindeki M.2 2280 yuvasına yaklaşık 30 derecelik bir açı ile yerleştiriniz ve
    modülü yatay konuma getirerek sabitleme vidasını sıkınız.

    <Note>
      Modül tam yük altında 5W'a kadar güç çekmekte ve ısınmaktadır. Sürekli çalışan uygulamalarda
      modülün soğutucu (heatsink) ile birlikte kullanılması önerilmektedir.
    </Note>
  </Step>

  <Step title="Overlay Ekleme">
    DX-M1 modülünün PCIe veri yolu üzerinden sorunsuz şekilde tanınabilmesi için bağlantı hızını
    ayarlayan `k3-am67a-t3-gem-o1-pcie-link-speed-2.dtbo` overlay dosyasının aktif edilmesi
    gerekmektedir.

    Terminal arayüzünden `nano` isimli metin editörünü kullanarak boot klasöründe yer alan `uEnv.txt`
    dosyasını açınız.

    ```bash theme={"system"}
    sudo nano /boot/uEnv.txt
    ```

    <Tip>
      Komutu sudo ile kullandığımız için şifre soracaktır. Değiştirmediyseniz Gem-Imager ile imajı
      yazarken belirlemiş olduğunuz şifreyi kullanmalısınız.
    </Tip>

    `uEnv.txt` dosyasının içinde bu tarz tanımlamalar bulunacaktır.

    ```
    firstboot=0
    overlays=k3-am67a-t3-gem-o1-spidev0-2cs.dtbo k3-am67a-t3-gem-o1-i2c1-400000.dtbo

    bootpart=1:1
    initrdaddr=0x90000000
    fdtoverlayaddr=0x89000000
    get_kern_mmc=load mmc ${bootpart} ${loadaddr} Image
    get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} k3-am67a-t3-gem-o1.dtb;fdt addr ${fdtaddr};fdt resize 8192
    get_initrd_mmc=load mmc ${bootpart} ${initrdaddr} gemstone-image-rd-t3-gem-o1.cpio.gz
    get_overlays=for o in ${overlays}; do load mmc ${bootpart} ${fdtoverlayaddr} overlays/${o};fdt apply ${fdtoverlayaddr}; done
    args_mmc=setenv bootargs console=${console} ${optargs} root=/dev/mmcblk1p2 rw rootfstype=btrfs bootpart=/dev/mmcblk1p1 firstboot=${firstboot} init_fatal_sh=1
    boot_mmc=run get_kern_mmc;run get_fdt_mmc;run get_overlays;run get_initrd_mmc;booti ${loadaddr} ${initrdaddr}:${filesize} ${fdtaddr}
    distro_bootcmd=run args_mmc;run boot_mmc
    ```

    `k3-am67a-t3-gem-o1-pcie-link-speed-2.dtbo` dosya adını `overlays=` satırının sonuna boşluk
    bırakarak ekleyin.

    `uEnv.txt` dosyasının son hali böyle olacaktır. Uygun dosya adını `<dosya-adi>` kısmına
    yerleştirmeniz gerekmektedir.

    ```
    firstboot=0
    overlays=k3-am67a-t3-gem-o1-spidev0-2cs.dtbo k3-am67a-t3-gem-o1-i2c1-400000.dtbo <dosya-adi>

    bootpart=1:1
    initrdaddr=0x90000000
    fdtoverlayaddr=0x89000000
    get_kern_mmc=load mmc ${bootpart} ${loadaddr} Image
    get_fdt_mmc=load mmc ${bootpart} ${fdtaddr} k3-am67a-t3-gem-o1.dtb;fdt addr ${fdtaddr};fdt resize 8192
    get_initrd_mmc=load mmc ${bootpart} ${initrdaddr} gemstone-image-rd-t3-gem-o1.cpio.gz
    get_overlays=for o in ${overlays}; do load mmc ${bootpart} ${fdtoverlayaddr} overlays/${o};fdt apply ${fdtoverlayaddr}; done
    args_mmc=setenv bootargs console=${console} ${optargs} root=/dev/mmcblk1p2 rw rootfstype=btrfs bootpart=/dev/mmcblk1p1 firstboot=${firstboot} init_fatal_sh=1
    boot_mmc=run get_kern_mmc;run get_fdt_mmc;run get_overlays;run get_initrd_mmc;booti ${loadaddr} ${initrdaddr}:${filesize} ${fdtaddr}
    distro_bootcmd=run args_mmc;run boot_mmc
    ```

    Overlay dosyasını tanımladıktan sonra, yapılan değişikliklerin sistem tarafından uygulanabilmesi
    için kartın yeniden başlatılması gerekmektedir.

    ```bash theme={"system"}
    sudo reboot
    ```

    <Note>
      `overlays=` satırında yer alan diğer overlay dosyalarını silmeyiniz. Aksi halde daha önce aktif
      edilmiş overlayler kullanılamaz duruma gelecektir.
    </Note>
  </Step>

  <Step title="PCIe Bağlantısının Doğrulanması">
    Kartı yeniden başlattıktan sonra modülün PCIe veri yolunda algılandığını kontrol ediniz.

    ```bash theme={"system"}
    sudo apt install pciutils
    ```

    <CodeGroup>
      ```bash Terminal theme={"system"}
      lspci
      ```

      ```bash Output theme={"system"}
      00:00.0 PCI bridge: Texas Instruments Device b010
      01:00.0 Processing accelerators: Device 1ff4:0000 (rev 01)
      ```
    </CodeGroup>

    Çıktıda `Processing accelerators` satırının görünmesi, modülün donanım seviyesinde tanındığını
    göstermektedir.

    <Tip>
      Modül listelenmiyorsa [Sorun Giderme](/tr/boards/o1/ai/deepx/troubleshooting) bölümündeki
      **Modül lspci çıktısında görünmüyor** başlığını inceleyebilirsiniz.
    </Tip>
  </Step>

  <Step title="Sürücü ve Çalışma Zamanı Kurulumu">
    Paket listesini güncelledikten sonra DeepX sürücü ve çalışma zamanı paketini kurunuz.

    ```bash theme={"system"}
    sudo apt update
    sudo apt install dxrt dx-stream
    ```

    Bu paket; PCIe çekirdek sürücüsünü (`dxrt_driver`, `dx_dma`), DX-RT çalışma zamanını ve `dxrt-cli`
    gibi yardımcı araçları kurmaktadır.

    Sürücünün çekirdeğe yüklenebilmesi için kartı yeniden başlatınız.

    ```bash theme={"system"}
    sudo reboot
    ```

    <Tip>
      SDK'yı kaynak kodundan derlemek isterseniz bizim tarafımızdan yayınlanan
      [deepx-npu-deepx](https://github.com/t3gemstone/deepx-npu-sdk) deposunu kullanabilirsiniz.
    </Tip>
  </Step>

  <Step title="Sürücünün Yüklendiğinin Kontrolü">
    Çekirdek modüllerini yükleyin ve ardından servisi yeniden başlatın.

    ```bash theme={"system"}
    sudo modprobe dxrt_driver
    sudo systemctl restart dxrt.service
    ```

    Yukarıdaki `modprobe` komutu modülü yalnızca o an için yüklemektedir. Sürücünün her açılışta
    otomatik olarak yüklenmesi için modülü `systemd-modules-load` yapılandırmasına ekleyiniz.

    ```bash theme={"system"}
    echo dxrt_driver | sudo tee /etc/modules-load.d/dxrt.conf
    ```

    Aşağıdaki komut ile çekirdek modülünün başarıyla yüklenip yüklenmediğini kontrol edebilirsiniz.

    <CodeGroup>
      ```bash Terminal theme={"system"}
      lsmod | grep dx
      ```

      ```bash Output theme={"system"}
      dxrt_driver            45056  2
      dx_dma                483328  9 dxrt_driver
      ```
    </CodeGroup>

    Sürücü tarafından oluşturulan cihaz dosyalarını da kontrol edebilirsiniz.

    ```bash theme={"system"}
    ls /dev/dxrt*
    ```
  </Step>

  <Step title="Cihaz Durumunun Doğrulanması">
    `dxrt-cli` aracı ile modülün çalışma zamanı tarafından erişilebilir olduğunu doğrulayınız.
    Aşağıdakine benzer bir çıktı elde edilmesi beklenmektedir. Sürüm ve sıcaklık değerleri kullandığınız
    donanıma göre farklılık gösterecektir.

    <CodeGroup>
      ```bash Terminal theme={"system"}
      dxrt-cli --status
      ```

      ```bash Output theme={"system"}
      DXRT v3.1.0
      =======================================================
      * Device 0: M1, Accelerator type
      ---------------- Version --------------------
       * RT Driver version   : v1.8.0
       * PCIe Driver version : v1.6.0
       * FW version          : v2.4.0
      ---------------- Memory ---------------------
       * Type    : LPDDR5
       * Size    : 3.92 GiB
      ---------------- NPU ------------------------
       * NPU 0: voltage 730 mV, clock 1000 MHz, temperature 48 C
       * NPU 1: voltage 730 mV, clock 1000 MHz, temperature 47 C
       * NPU 2: voltage 730 mV, clock 1000 MHz, temperature 48 C
      =======================================================
      ```
    </CodeGroup>
  </Step>

  <Step title="Python Paketinin Kurulumu">
    Python tarafındaki çıkarım arayüzü `dx_engine` paketi ile sağlanmaktadır. Paketi `pip3` ile kurunuz.

    ```bash theme={"system"}
    pip3 install dx_engine
    ```
  </Step>

  <Step title="Python Paketinin Doğrulanması">
    Python ile çıkarım yapabilmek için `dx_engine` paketinin kullanılabilir olması gerekmektedir.

    ```bash theme={"system"}
    python3 -c "from dx_engine import InferenceEngine; print('dx_engine hazir')"
    ```

    Komut hata vermeden çalıştıysa geliştirme ortamı kullanıma hazırdır.
  </Step>
</Steps>
