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

# MATHLIB

> Hızlandırma çipleri ile matematiksel fonksiyonların kullanımı

<Tip>MATHLIB kütüphanesini kullanan C7 tabanlı MCU projeleri, işlemcide yer alan AI Hızlandırıcı (C7x DSP / MMA)
biriminden faydalanarak çalışmaktadır. Bu sayede matematiksel işlemler, vektörel hesaplamalar ve yoğun hesaplama
gerektiren fonksiyonlar donanımsal hızlandırma ile yürütülür ve uygulama performansı önemli ölçüde artırılır.</Tip>

## Örnek Proje

MATHLIB kütüphanesinin entegrasyonunu referans alarak inceleyebileceğiniz çalışır bir örnek proje, T3 Gemstone
GitHub'daki `examples` reposu içerisinde yer alan `MCU` dizini altında sunulmaktadır.

Examples reposunun içinde `devbox shell` içindeyken aşağıdaki komutu çalıştırmalısınız.

```bash theme={"system"}
PROJECT=mcu task clean build
```

`examples/mcu/mathlib_demo/j722s-evm/c75ss0-0_freertos/ti-c7000` ve
`examples/mcu/mathlib_demo/j722s-evm/c75ss1-0_freertos/ti-c7000` içinde yer
alan `mathlib_demo.out` dosyası artık C7 çekirdeklerinde çalıştırlabilir hale gelmiştir.

Geliştirme kartı üzerinde çalıştırmak için [Derlenmiş projenin U-Boot aşamasında çalıştırılması](/tr/boards/o1/peripherals/mcu#2-8-derlenmiş-projenin-u-boot-aşamasında-çalıştırılması)
bölümündeki adımları takip edebilirsiniz.

Bu örnek projede üretilen çıktılar UART1 arabirimi üzerinden iletilmektedir.
(İlgili pin bağlantılarına [Pinout dokümantasyonundan](/tr/boards/o1/peripherals/introduction#1-pinout) ulaşabilirsiniz.)

MATHLIB örnek projesinin çıktılarının terminal görüntüsü aşağıdaki gibidir.

```bash theme={"system"}

-----------------------------
  T3 Gemstone MATHLIB Test   
-----------------------------

acos(   1.00000) =   nane-308
acos(  0.970942) =   0.241660
acos(  0.885456) =   0.483319
acos(  0.748511) =   0.724983
acos(  0.568065) =   0.966644
acos(  0.354605) =    1.20830
acos(  0.120537) =    1.44997
acos( -0.120537) =    1.69163
acos( -0.354605) =    1.93329
acos( -0.568065) =    2.17495
acos( -0.748511) =    2.41661
acos( -0.885456) =    2.65827
acos( -0.970942) =    2.89993
acos(  -1.00000) =    3.14159
acos(   1.00000) =   nane-308
acos(  0.970942) =   0.241660
acos(  0.885456) =   0.483319
acos(  0.748511) =   0.724983
acos(  0.568065) =   0.966644
acos(  0.354605) =    1.20830
acos(  0.120537) =    1.44997
acos( -0.120537) =    1.69163
acos( -0.354605) =    1.93329
acos( -0.568065) =    2.17495
acos( -0.748511) =    2.41661
acos( -0.885456) =    2.65827
acos( -0.970942) =    2.89993
acos(  -1.00000) =    3.14159
```

## Mevcut MCU Projesine MakeFile Üzerinden Entegre Etme

Mathlib kütüphanesini mevcut MCU projenize entegre edebilmek için, SDK’ya ait kök dizin yolunu ve
kullanacağınız `.cpp` dosyasını tanımlamanız gerekmektedir.

```makefile theme={"system"}
SDK_ROOT_PATH := ${MCU_PLUS_SDK_PATH}/..

FILES_cpp := \
	mathlib_demo.cpp \
```

Ardından, include edilen klasörler listesine (`INCLUDES_common` değişkeni) MATHLIB’in `src` dizinini aşağıdaki
şekilde eklemelisiniz.

```makefile theme={"system"}
-I${SDK_ROOT_PATH}/mathlib/src \
```

Derleyiciye ait FLAGS parametrelerine (`CFLAGS_common` değişkeni), kütüphanenin doğru şekilde derlenebilmesi
için gerekli olan aşağıdaki tanımlamaları eklemeniz gerekmektedir.

```makefile theme={"system"}
-DMCU_PLUS_SDK \
-DBUILD_C7X \
-DSOC=j722s \
--silicon_version=7524 \
```

Kütüphane yol tanımlarına (`LIBS_PATH_common` değişkeni), MATHLIB’in derlenmiş kütüphane dizinini eklemelisiniz.

```makefile theme={"system"}
-i${SDK_ROOT_PATH}/mathlib/lib/Release \
```

Dahil edilen kütüphane dosyaları listesine (`LIBS_common` değişkeni) mathlib kütüphanesinin adını aşağıdaki
gibi eklemeniz gerekmektedir.

```makefile theme={"system"}
-lMATHLIB_C7524.lib \
```

Projede .cpp dosyalarının derlenebilmesi için, `OBJS` ve `DEPS` tanımlarının yapıldığı satırın hemen altına
aşağıdaki eklemelerin yapılması gerekmektedir.

```makefile theme={"system"}
OBJS += $(FILES_cpp:%.cpp=%.obj)
DEPS := $(FILES:%.cpp=%.dpp)
vpath %.cpp $(FILES_PATH)

$(OBJDIR)/%.obj %.obj: %.cpp
	@echo  Compiling: j722s:c75ss0-0:freertos:ti-c7000 $(OUTNAME): $<
	$(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) -ppd=$(OBJDIR)/$(basename $@).dpp -ppa -fr=$(OBJDIR)/ -fp=$<
```

Bu adımların tamamlanmasının ardından MATHLIB kütüphanesi, projeye Makefile üzerinden başarıyla entegre edilmiş
olacaktır.

## Mevcut CPP Dosyasına MATHLIB Entegrasyonu

Makefile üzerinden gerekli yapılandırmalar tamamlandıktan sonra, MATHLIB kütüphanesini kullanabilmek için ilgili
header dosyasını projenizde yer alan .cpp dosyasına eklemeniz gerekmektedir. Bu adımın ardından, mevcut projeniz
içerisinde MATHLIB’e ait fonksiyonları ve tanımlamaları doğrudan kullanabilirsiniz.

MATHLIB kütüphanesinde yer alan modüllerin tamamına [bu bağlantı üzerinden](https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-j722s/latest/exports/docs/mathlib/docs/user_guide/modules.html) ulaşabilirsiniz.

```cpp theme={"system"}
#include <mathlib.h>
```

Bu işlem ile birlikte MATHLIB entegrasyonu tamamlanmış olacaktır.
