ANADOLOGIC TECH TALK 2: RTOS ve Embedded Linux Üzerine Gömülü Yazılım

Evet, herkese selamlar, saygılar. Anadolu Tek Talk 2. bölümde birlikteyiz. İlk bölümde bitiremediğimiz aslında sunumumuza devam edecek Yusuf arkadaşımız. Yusuf teşekkür ediyoruz.

Estağfurullah. Ben teşekkür ederim. Bu bölümde bize herhalde biraz daha bazı sorular vardı. Evet bazı sorular vardı. Sonrasında operating systemlar ve embeded Linux üzerine aslında birazcık konuşacağız. Evet.

Eee ve en sonunda da en temelde bunu yapma sebebimiz, bu slaytı yapma sebebimiz bir projede hangi çalışma metodunu tercih etmeliyiz ve bunların sebepleri nelerdir tarzında bir ufak özetimiz olacak. O şekilde sonlandıraz. Buyurun sahne sizin.

Estağfurullah. Ben teşekkür ederim. Evet öncelikle geçen haftaki belli baş sorular üzerine cevaplar aslında hazırladık ve ben geçen hafta belli baş şeylerde bir ufak hatalar da veya eksik söylediğim kısımlar olduğunu fark ettim. Onlar üzerinden tekrar gideceğiz ama bu şeyleri, açıklamaları ben soruları cevaplarken gerçekleştirmiş olurum. Öncesinde Berk’in sormuş olduğu bir soru vardı. Burada demişti ki burada assuming single core processi olarak bahsediliyor. Bu multicoree olsaydı ne olurdu diye bir şey geldi. Soru geldi.

Aslında ben önceden yapmış olduğum Artos projesinde biz freeos kullanıyorduk ve biz bunu sanki single process’miş gibi aslında single coreuş gibi kullanıyorduk. Sonrasında ben internette baktığımda yakın zamanda artık Freeartos’unda aslında simetricing özelliğini patchlediği ve çıkarttığı söyle gördüm. Öncesinde bununla alakalı patch’ler varmış. Şimdi single core ve multioree dediğimizde aslında önümüze iki tane şey çıkıyor. Bir tanesi simetric multirocessing, bir tanesi asimetric multiprocessing. Asimetric multiprocessing’i önünden söyleyelim. Asyimmetric multipressing. Şöyle bir şey bu arada. Bunu daha çok Free Artos’un dokümantasyonları daha çok hoşuma gittiği için veya daha anlaşılabilir geldiği için birazcık onların dokümantasyonları üzerinden okudum. O yüzden başka bir tane Artos’un dokümanlarını okuduğunuzda dizayn noktası farklılıklar olduğunu görebilirsiniz. Olabilir.

Ben şu an biraz ama temel itibariyle aynı olduğunu düşündüğüm için free artros üzerinden biraz anlatacağım. Asyimetric multiing’de şöyle bir şey olduğunu söylüyor. Diyor ki diyelim ki senin 4 tane korun var. Bu corların hepsinde aslında harici bir freeartos koşuyormuş gibi. Yani kendi aslında normalde sen tek single cord’a koştuğun freeosu farklı core da hepsinde bunları koşuyorsun aslında. O yüzden tek bir tane skeding mekanizması yok. Amma ve lakin bahsettiği şey şu. Diyor ki her çekirdek kendi freeartos örneğini çalıştırır olarak vermiş bunu. Ve gerekirse diyor çekirdekler arası paylaşım yapabilmen.

Yani burada önemli olan söylediği şey şu. Diyor ki mesela çekirdekler farklı arkitecturelara sahip olabilir ama aynı memoriyi kullanmak durumunda. Çünkü sonuç itibariyle biz multicore’da kullanıyor olsak aynı projede aynı amaca yönelik bir işlem gerçekleştiriyoruz değil mi? O yüzden sen farklı bir prosesörde farklı bir işlem yaparken ben senden gerekli olan bir data çekmek isteyebilirim. Bu sebepten dolayı aynı memoriyi, ortak memoriyi kullanmamız gerekiyor. Ve bundan kaynaklı olarak da belli mesaj yapıları aslında bu core arasında, bu prosesörler arasında mesajlaşmayı sağlıyor. P’nin özelliği bu.

S&P yani symetric multipressing aslında son dönemde free artos üzerine çıkılmış olan bir şey. Zifirde var mı diye baktım. Zifirde de vardı. Büyük ihtimalle daha artık high level’da kullanılan veya endüstride kullanılan VXworks gibi şeyler tabii ki vardır diye düşünüyorum. Bu simetric multipressing olarak söylediği şey de aslında bir tane master core var gibi. Yani bu master core aslında scheduling işlemini koşuyor ve scheduling işleminde ne yapıyor? diğer core da şeyi veriyor. O diğer corları da assignment’ı o yapıyor. Diğer task assignment’larını bizim tek corumuz, master corumuz yapıyor gibi düşünebilirsin. O yüzden aslında tek bir freeartos koşuyor. Birden fazla çekirdeği yönetiyor. Aynı anda her çekirdek için running görevi bulunabiliyor farklı için.

Buradaki farklılığın şeyi şu. Normal şartlarda mesela biz preemptive bir scheduling koştuğumuzu düşünelim. Ne olması gerekiyor? High priorityde koşan bir taskın low priorityeki bir taskı bölmesi gerekiyor. Doğru muyum? Evet. E multi processing yaptığın zaman şöyle bir şey olabiliyor. Diyelim ki ben priority yüksek olan bir taskım ama ben koşarken başka bir corda priority düşük olan bir task da eş zamanlı olarak koşabiliyor. Bu da aslında farklı priority seviyelerindeki taskların aynı anda çalışmasını sağlıyor. Şimdi mesela geçen haftaki şeylerde şöyle bir şey vardı.

Berk mesela burada idle taskını hepsinde görür müyüz diye sormuştu. Evet. Aslında idle taskı şu. Bir task yani senin görev vermiş olduğun bir task gerçekleşmiyorsa, çalışmıyorsa bu noktada Artos senin için bir idd task koşuyor. Task boş task ve aslında buradaki context switching dediğimiz yani tasklar arası geçiş dediğimiz şey context switching bu şuradaki tiklerle gerçekleşiyor. Tick diyor ya 1 mils. Bu mesela freeartosla böyle freeartos 1 kHz’de koşuyor olması lazım 1 milisaniyede aslında. 1 milisaniyede şeyi çek ediyor. eee, o scheduling işlemleri ve switch eee context switching aslında kontrol ediliyor.

Benim burada mesela geçen hafta söylerken karıştırdığım şeylerden bir tanesi de şurada söylemiştim ki hani task C dedim B’den daha yüksek priorityye sahip ki hani işte şey oluyor. B’yi bölmüş dedim. Aslında teorik olarak fark ettim ki öyle bir şey yok. Tabii ki B ve C taskları aynı prioriteye sahip ve bölmüyor da. Buradan da şu soruya artık geliyoruz. Abdülkadir demişti ki burada B ve C taskları aynı priorityde gözüküyor. Bu taskların birbirlerini kesmesi durumları scheduler tarafından mı yönetiliyor diye bir soru sormuştum ben. Bunu tabii ki Artosul Policy yani bu single core policy aslında bunları mesela Art’un hangi Artosu kullanıyorsunuz onların wiki sayfalarına giderek dokümantasyonlara giderek buradaki şeylerini bakabilirsiniz görebilirsiniz. Ama ben size Free Artaros’tan bir ufak özetleme geçeceğim. Şimdi mesela aynı priority’ye sahip olan iki taskın yürütülmesi ile alakalı şöyle bir şey var.

Fixed priority diyor mesela. Fixed priority ne demek? Fixed priority şu demek. Yani default’ta senin bir priority seviyen varsa bu priority seviyesini koruyorsun. Priority seviyen değişmiyor. Ama mesela şöyle bir şeyden bahsetmiştim. Diyelim ki mesela task şey starwing oluyor şeyden. Task mesela low seviyede kalan bir task çalışmamaya başlıyor. Çünkü high prioritic tasklar onu absorbe ediyor ve orayı domine ediyor aslında. Ve low priority task yavaş yavaş priority seviyesi arttırılarak mesela ne yapılıyor? Çalışması sağlanıyor gibi metotlardan bahsetmiştim.

Bunlar aslında birçok çoğunlukla scheduly policing’e denk geliyor ve fixed priority dediğimiz şey de bu. Yani hiçbir şekilde taskın şeyi değişmiyor. Priority seviyesi değişmiyor. Preemptive dediğimiz şey zaten geçen hafta bahsettiğimiz gibi low priority’deki bir task çalışırken high priorityeki bir taskın low priorityeki bir taskı kesmesi ve çalışmaya öncelik verilmesi. Round Robin aslında senin sorduğun soruya cevap bu.

Yani şimdi mesela biz bir artos mantığına Round Robin dediğimizde aynı önceliğe sahip görevler running durumuna sırayla geçiyorlar. Yani şu diyelim ki aynı priority seviyesine sahip iki tane task var. Bu iki tane task önce hangisi gelirse geldi çalışıyor. Çünkü bu tasklar Q’ya dizildiği için yani sıraya diziliyor aslında çalışırken running setine geçebilmek için bir sıraya diziliyor bunlar. A taskı geliyor, B taskı geliyor.

Burada olduğu gibi aslında benim karıştırdığım şey burada buydu. Beni yanıltan şuradaki şematik oldu ama burada B taskı önce gelmiş. B taskı çalışıyor. B taskı bittikten sonra C taskı geçiyor. C taskı bitiyor. B taskı geçiyor. B taskıdan sonra tekrar C taskı geçiyor. Aynı priorityye sahip tasklar sırayla çalışıyorlar aslında. Buna da bir noktada round robin deniyor. Time slides denilen şey ise şu. Time sles’ta sen diyorsun ki bir taskın çalışma süresi şu kadardır. Örnek veriyorum. Mesela burada tabii ki bir tik sürmüş zaten bütün tasklar ama mesela teorik olarak şöyle de olabilir.

Bunu gerçi şöyle de yorumlayabiliriz buradan. Mesela bu time slice da olsaydı böyle olurdu. Task mesela diyelim ki iki tik sürüyor olsaydı tek tikte ne olacaktı? Context switch yapacaktı. Aynı priority’ye sahipler arasında bunu çalıştıracaktı. Sonraki bir sonraki tikle çalıştıracaktı. Bir sonraki tikte tekrar diğerini çalıştıracaktı. Yani aynı priorityye sahip iki tane task başladığında her tip geldiğinde yani context switch geldiğinde bunları değiştirerek aynı anda çalışmalarını sağlıyor aslında. Mesela böyle bir mantalitesi var. Bu senin bahsetmiş olduğun soru da aslında bir noktada Artos scheduling policy deniyor ve farklı dizaynlar da söz konusu olabilir farklı Artoslar için.

Buradaki diğer soruda >> buraya geçmeden bir >> tabii ki >> soru soracağım ben. >> Soru değil de bir açıklığa getirmeyim. O tikli yere gelsene grafiğe. >> Tak tak tak. Evet. >> Burası. Evet. >> Sen dedin ya free arartos 1 kHz’te koşuyor diye. Emin misin? >> Context switching işlemi öyle koşuyor. >> Yani scheduler her bir milisende bir mi bakıyor diyorsun? >> Evet. >> Ben bunu >> yani ben yanlış hatırlamıyorum. Değiştiriyor olabilirsin. >> Şunu diyeceğim bu fixed olmayabilir bence Artosa. Hani şu an ben çokos hakimiyetim yok ama hı. Yani bir olmak zorunda olmayabilir. Mesela 50 milisaniyede bir yani 20 Hz’e de çekiyor olabilirsin. Muh >> yapabili yapılabilir. Aynen öyle.

Bu zaten şey bir constantla belirtiliyor orada bu. Yani bir define işte bir define var. O define’a sen bunun kaç >> tik şeyinin ne kadar kaç frekuansa gerek? >> Belki maksimum frekans şeyi vardır >> ya. Yanlış hatırlamıyorsam 1 milisaniye şeydi hani düzgün precise bir şekilde çalışabilmesi için gerekli olan hani yüksek hız buydu yani. >> Interyottuk. Yani bu 1 milisaniyenin altına düşmeye başladığın zaman galiba düzgün çalışmıyor diye bir şey hatırlıyorum ama bununla alakalı dokümanlara gidilirse zaten dokümanlarda yazıyor bunlar. >> Tamam.

Yani şey gibi anlaşılmasın da ben öyle anladım. Hani >> kesin değil yani. >> Artos her zaman free Artos 1 milisaniyede bir >> scheduler çalışır. Hayır onu ayarlayabiliyoruz. Çünkü ben şeyi biliyorum. Başka uygulamalarda gördüm. >> Scheduler 20 milisaniye 50 milisaniye 1 milisaniye çok şey bir çözünürlük >> yüksek. Ciddi. Evet. Hızlı. >> 1 kHz’ten bahsediyoruz. Genelde uygulamalarda >> 50 Hz, 100 Hz. >> Evet. Evet. >> 20 Hz gibi şeyler hatim gibi zaten bunun şeyleri var. Hani bir define’ile belirtilmiş durumda.

O define aslında sen bunu belirtiyorsun. Diyorsun ki ben şu kadar aslında periyotlarda bir scheduler koşmak istiyorum adlı bir ayarlama yapıyorsun. Zaten bu da free artaros’un da mesela bu bahsettiğim şeyi freeartos üzerinden söylesem de zifir üzerinden söylesem de aynı şey. Onların hepsinde konfigürasyon dosyaları bulunuyor. Sen o konfigürasyon dosyalarını projenin içine ekliyorsun ve aslında skiller ayağa kalkarken onlara göre derleyip ona göre ayağa kalkıyor. Orada sen konfigürasyon dosyalarında adamlar zaten şey yapmışlar. Hani user konfigürasyon dosyası var. Sonra gidiyorsun o user konfigürasyon dosyasına eklemeler yapıyorsun. Default konfigürasyon dosyalarını ellemiyorsun.

Mesela hani demişler ki bunları ellemeseniz daha iyi gibi mesela belli başlı user seviyesinde katmanlarda zaten mevcut. >> Bir şey daha ekleyeceğim. >> Abi >> katkı minvalinde mesela S&P bahsettin ya bu >> FPJ dünyasında nasıl oluyor gibi bakarsak aslında FPJ’de de SOC diyeyim. >> Hı hı. >> Mesela atıyorum zinc 7000 var. Zinc system on chip. Bunda iki tane ARM Cortex A9 var. >> Evet. >> Bununla ilgili şey dokümanları var. SP nasıl yapılabilir? Mesela Linux özelinde MB Linux koşuyorsan iki çekirdeği de kontrol edebiliyor. O özelliği var zaten. O kontekstte şuna tekabül ediyor. Bir core Linux koşsun mesela. Bir core Artos mesela. >> Evet. Onunla alakalı şeyler var gerçekten. P yazılırsa mesela şeyi görebilirsiniz. Farklı core çekiyor. Farklı core’ların üstüne mesela bir tanesine Linux veya iki tanesinin üstüne Linux koch çıkmış. Bir tanesin üstüne Aros çıkmış mesela.

Ya bu A53’lü olan zinc Ultra Scale Plus’ta da yine şey yapabiliyorsun. Hani 4 tane A53 var mesela. Bir tanesini de Linux koşsun. Diğer üçünü ayrı ayrı standalon bare metal kodlayayım gibi şeyler yapabiliyorsun. illa Artos iki şeyi kontrol etsin ya da hani tek Artos iki çekirdeği kontrol etsin ya da iki ayrı Aros değil de hani öyle Linux ve yanında bir real time. Çünkü Linux real time olmadığı için >> tabii ki >> genelde bu tarz uygulamalarda böyle genel uygulama application seviyesinde Linux bir çekirdekte veya iki veya neyse diğer çekirdekte de bir artos koşsun çünkü o real time bir şey lazım diyelim. >> Evet. E öyle şeyler de var. Onlar >> ya zaten asimetric multiing dediğimiz kavram daha kapsamlı bir kavram.

Ben şu an sadece bunu operating sistemler kapsamında nedir aslında belirtmek maksadıyla burada bu şekilde bahsettik. Teşekkür ediyoruz. >> Evet. En son olarak da aslında Akif’in sormuş olduğu soru vardı. Akif burada şey demişti. Yani real time operating system’larda bir taskın gerçekten işte 5 milisaniyede koşmasını istiyorsan bu 5 milisaniye pres bir şekilde veriyor mu? Bunu garanti ediyor mu diye sormuştu. Aslında en temel mantıktaki soru buydu. Burada tabii ki o zaman şuna gelmemiz gerekiyor. Real time operating systemları içerisinde aslında birden fazla dizayn şekli var.

En temelde soft real time system’lar, firm real time systemlar, hard real time systemlar. Bunların kullanım yerlerine göre değişiklik alıyor. Mesela soft real time systemlarda. Yani evet sen diyorsun ki Taska işte şu kadar herzte bir çalışman gerekiyor. Şu kadar şöyle bir periyotta çalışman lazım. X periyotta çalışman lazım diyorsun. Amma ve lakin bu X periyotta çalışma durumu belli zamanlarda aksaklıklara sebebiyet verebilir. Ama bu aksaklıkların yaşanması sistemi olumsuz etkilemez. Yani sistemin hayati şeyini etkilemiyor yani.

Ya mesela örnek vermemiz gerekirse ne olması gerekiyor? Web tarayıcıyile alakalı mesela konuşuyoruz ya. Ya web tarayıcıdaki taskların ne bileyim sen yeni bir sekme açtığında vesaire bunların hepsi arkada koşan aslında birer kod yani aslında. Ve bunların mesela aksaklığa uğraması tam zamanda çalışmıyor olması ne olur? En fazla web browser gibi olur. Çalışmaz. Birkaç milisaniye saniye sonra gelir. Ama sonu itibariyle performansı etkiliyor sadece. Hani web browser yani böyle bir şey olduğu için. Mesela hani mesela bununla alakalı şeyler firm real time systemler bunlar birazcık daha yani görevlerin çoğu zaman sınırına uyması beklenir ama uymaması aslında belli bir timean sonra y belli bir süreden sonra artık bir şeyleri etkilemeye başlamıştır.

İşte mesela örnek olarak mesela sulama aracının otonom bir drone navigasyon denetleyicisi demişiz. Yani şöyle bir şey olduğunuzu düşünün. İşte navigasyonla alakalı bir şeyin bozulmaya başlaması veya aksaklığa uğraması bir yerden sonra, bir süreden sonra belli bir sapmaya sebebiyet verecek. Bu da sistemi belli bir süreden sonra ne olacak? Aslında yanıltmaya başlayacak. Ama hard real time dediğimiz sistemlerde gerçekten şeyi bekliyoruz. Yani bir taskın gerçekleşmesi gereken exactly time’a çalışması gerekir. Ya bu da mesela gerçekten Burak abi daha iyi bilir füze sistemlerinden filan mesela.

Ya bir füze sistemiyile alakalı bir şey yapıyorsan çünkü saniyelerin çok önemi var. Milisaniyelerin de önemi var. Yani oradaki 1 milisaniyelik değişiklikler veya aksaklıklar sonuç itibariyle füze bilmem kaç kilometre hızla gidiyor mesela. kilometrelerce mesafe sonra bir aksaklığa veya bir sapmaya sebebiyet veriyor. O yüzden aslında bu tarz şeylerin birazcık daha ne olması lazım? Predicted olması lazım. Yani daha kesin de olması lazım aslında. Mesela onunla alakalı böyle bir şey verilebilir. Temel olarak aslında bahsettiğimiz şey bu.

E bir de bununla alakalı safety certified real time operating system denilen şeyler var. Şimdi normalde biz ne kullanıyoruz? Mesela Free Artos kullanıyorsun ama free artos open source’da bir kaynak olduğu için sana bunun garantisini certified bir şekilde vermiyor. Sen diyelim ki bir firmada çalışıyorsun ve bir ürün, bir product çıkartacaksın ve product’ı çıkartırken şöyle şeyler lazım. İşte endüstriyel standartlara uygun mu, otomotive uygun mu? Yani bu tarz şeyleri certify debilmen lazım. Bununla alakalı mesela safety critical veya safety certified şey var. Real time operating system’ler var. Ve sen bunları aldığında sana diyorlar ki bak bu sistem işte hard real time sistemdir. Senin sistemin precise çalışır. Biz bunların garantisini veriyoruz diyorlar ve onu sertifikalandırıyor.

Sen de böylece artık bunu üründe kullanabiliyorsun mesela. Bu şekilde. Evet. En temelde operating system nedir diyeceğiz. Aslında bizim şeyimiz operating system’ı konuşmak değil de biraz embededin konuşmak. Ama embededin da aslında bir operating system. Operating system dediğimiz şey aslında bir hardware’in üzerindeki donanımları işte memory yapısını veya işte fiziksel kaynaklarını kullanarak veya bunları ayırarak yani bunları kendi şeyinde bir application’a yani bir tane application belli bir kaynak kullanması gerekiyorsa o kaynağı ona ayırıyor aslında. Hı. Yani bu şekilde bunu sağlayan ve userla hardware arasında bir bağlantı sağlayan, bir ara katman oluşturan yazılım grubuna aslında biz operating system diyoruz. Operating system dediğimiz şey aslında bir yazılım kümesi, bir yazılım paketi.

Aynen öyle. Hepsine aslında bir C yani bugün sen Linux kernel dediğin şey bir C kodu aslında. >> Şöyle bir ekleme yapayım. Bu genelde computer arkitecture derslerinde şöyle bir tablo vardır. İki tür software vardır. >> Hı hı. >> System ve application. >> Evet. Bu işte system software yani user tarafından bir uygulama application değil. >> Evet. >> Sistem için gerekli. Bir başka system software nedir? Mesela compiler. Mesela compiler da bir software. >> Evet. >> Ama sistemsel bir şeyi var. Hani user tarafına bakan bir user kullandığı bir şey değil. >> User çıkan bir fonksiyon yok. >> Çıkan bir fonksiyon yok.

Veya debugger mesela. Debugger linker. >> Evet. Bunlar system software diye geçiyor. Operating system da dediğin gibi aslında bir program, bir software fakat system software diye geçiyor. Genelde insan %99.9’u application software yazıyorlar. Bir grup insan da system software yazıyor. >> Evet, aynen öyle. Bunlara en temel örnekler zaten birçoğunuzun bildiği işte Windows, Linux, Unix, ondan sonra MacOS işte mesela bunların hepsi aslında bir operating system. Peki embededin dediğimiz şey ne? Aslında embededin dediğimiz şey operating system’ın üzerine çıkılmış olan yani operating üzerine çıkılmış demeyeyim de Linux bir operating system ya.

Linux kernel’ını kullanarak aslında embededicellar için veya daha spesifik olarak belirlenmiş olan hardware için geliştirilmiş olan ve onların üzerine belli driverlar ondan sonra belli application katmanları belli sistem fonksiyonları eklenmiş olan bir Linux distribu diyebiliriz yani bir noktada aslında embed Linux dediğimiz şey bu. Yani bir operating system’ın bir embededice’a göre spesifikleştirilmesi. Ondan sonra şöyle baktığımda burada atladığımız bir şey var mı? Ya bu kısıtlamalarının sebebi ne mesela? Nedir? Yani neden böyle bir şey vardır? Çünkü embededde hardware’de belli başlı kısıtlamalar mevcuttur.

Yani bir bilgisayar hardware gibi bir hardware’den bahsetmiyoruz. Daha low power’dan bahsediyoruz. Daha düşük hız daha düşük hızlardan bahsediyoruz. O yüzden aslında bir noktada kullanmış olduğunuz kernel yani çekirdek ya da operating system dediğiniz şeyin o hardwarea göre customize edilmiş olması lazım. Embelled Linux aslında birazcık bunu sağlayan bir şey. Peki neden mesela bakayım buna oradan sonraki sayıda mı cevap veriyorum? Embelled Linux hardware olarak arkitek cevap vermişim. Ya neden mesela Linux tercih edilmişdir?

Cevabı aslında Linux çünkü open source bir proje ve aslında dünyada çok fazla contribute eden insan var. çok configurable bir proje. Yani baktığınız zaman communitesi çok yüksek. Yani o yüzden aslında Linux gibi bir operating system’i konfigüre etmekten bahsediyoruz ya hardware’e konfigüre etmek, hardware’e göre konfigüre etmekten bahsediyoruz. Mesela Linux buna olanak sağladığı için aslında Linux üzerine embelled Linux çıkılmış gibi düşünüyorum. Bunun dışında çünkü başka open source bu kadar işte ne bileyim eee dünya çapında da belli bir ne denir ona?

Şeyi olan hem kabulü aslında hem de şeyi var. Belli bir standartları var. Aynen. Yani aslında baktığında da itibarı olan demek istiyordum aslında. Evet. Hani dünya standardında bir itibarı var Linux’un. Yani safety olduğu biliniyor. Ondan sonra zaten birçok insan tarafından contribute ediliyor. Herkes aslında bu şeye güvenerek bunları kullanmaya bile devam ediyor. Ya sonuç itibariyle bir şeyi ne kadar kullanıyorsanız aslında o kadar gelişmeye açık oluyor. Yani insanlar onu sürekli olarak develop ediyorlar. Veetta da bu şekilde Linux aslında customizeedim şeklinde söyleyebiliriz yani. >> Peki burada şöyle bir soru soracağım.

Linux deyince birçok standart kullanıcının aklına Ubuntu falan geliyor. >> Evet. >> Böyle bireded Linux değil de hani desktop için düşünelim. >> Evet. >> Aklına işte Ubuntu gelir. Ne bileyim başka distrolar var değil mi? >> Evet. >> Mesela Ubuntu olmaz mıydı gömülüde? Yani neden Ubuntu desktop’la embedda sadece donanım farkı? Yani asıl sormak istediğim şu. Mesela bir Ubuntu’nun web sitesine girdiğimde şu an >> Evet. >> Ubuntu’yu indirdiğimde neredeyse hemen herhangi bir laptop’a bunu flash taktığımda boot edip çalışıyor Ubuntu’u.

Bu embeded Ubunt gibi bir şey kullanmıyorum da böyle customized her board için belki customizasyon gerekiyor mesela. >> Evet. Ya şimdi şöyle bunu biraz yorumlayarak aslında söyleyeceğim. Mesela örnek vermemiz gerekirse Kria Berk geçenlerde mesela Ubuntu çalıştırıyordu. KA’nın üzerinde direkt Ubunt çalıştırıyordu. Ama şöyle bir şey var. Şimdi embelled device’ların içerisinde mesela örnek veriyorum. Biz bir tane boardla çalışıyoruz.

Bu çalıştığımız board kullanım amacı veya kullanım maksadı gerekirle mesela network’e çıkmıyor diyelim veya bu network’e çıkmadığı sistemde üzerinde herhangi bir ethernet portu yok. Hiçbir şey yok mesela. Ve bir kullanıcı arayüzüne de ihtiyacım yok. Ya bu tarz özellikle kullanıcı arayüzü, desktop sistem dediğimiz veya bu tarz şeyler mesela çok fazla yer kaplıyor. Embededde bizim için önemli olan veya bizim için sistemde mesela neyi düşürmeye çalışıyoruz? Memory userageı düşürmeye, memory şeyini düşürmeye çalışıyoruz. Ondan sonra mesela hızla belli aksatan şeyimiz var.

Yani bir kısıtlamamız var. Ondan sonra güçle alakalı şeyler de var. Yani user interface gibi bir şeyimiz olsaydı büyük ihtimal çok daha fazla enerji tüketiyor olurduk. O yüzden mesela bunu aradan çıkartıyorsun. Hatta mesela bugün Ubuntu’nun sayfasına girseniz de Linux’un sayfasına girseniz de şey görürsünüz. Mesela desktop image görürsünüz. Bir de server image görürsünüz. Mesela server image’te şey yoktur. Desktop arayüzü yoktur mesela server image’larda.

O yüzden mesela embeded tarzı şeylerde bu kadar customize’a gitmemizin sebebi de bu tarz senin kernel imajını küçültmek istiyor olman. Yani network’ü aradan çıkartabilirsin. Çünkü network kullanmayacaksan arkada dosyalarının yer kaplamasına gerek yok. Boşu boşuna hardware, boşu boşuna memorinde yer tutmasına da gerek yok. Boşu boşuna hızlı düşürmesine de gerek yok. Mesela bu tarz şeyler aslında customize bizi iten şeyler. >> Yani daha düşük bir donanımla mesela yapabileceğin bir işte sırf Ubuntu’u çalıştırmak için daha güçlü bir donanım almak zorunda kalabilirsin. >> Evet. Evet. Aynen öyle. >> Evet. Ama artık bayağı geliştiği için bu embeded sistemler Ubuntu falan da kurabiliyorsun birçoğuna.

Ubuntu mesela AMD Designing özelleştirmiş Kria için ki 4 çekirdek A53 var. İki tane R5 var. Hani üstüne GPU’su var falan. Video Codec unit var. Bunları özelleştirmiş ve Ubuntu Destroy’u Kria için çıkarmış mesela. >> Evet. E ama genelde dediğin gibi hani daha çok memory footprinti, flash footprinti azaltıp çok daha zayıf bir işlemciyle belki çalıştırmak istediğim için görevlerimi çok da şeye gitmiyorum. >> Ya burada şöyle bir ayrım çıkacak bence. Şimdi şöyle bir şey var. Hani bu ürünü neden geliştiriyoruz? Yani commercial’a bir şey geliştiriyorsak yani Berk işte üniversitedeki projelerini yapabilsin veya kendini eğitebilsin diye bir şey yapıyorsak o zaman oraya Ubuntu’yu koyabilmeliyiz ki Berk’in işi kolaylaşsın ve Berk başka applicationları geliştirme noktasında daha kolay davranabilsin.

Ama biz seri üretim yapacaksak hani sırf içine Ubuntu koyacağız diye daha yüksek performanslara sahip çekirdekleri koymaktan çekiniriz. Çünkü seri üretimde maliyet hesabı bu aslında. Yani birazcık aslında hem kullandığımız sektöre göre belli bir farklılık ortaya çıkıyor. Hem de aslında dediğin gibi abi. Çünkü mesela bu microcontrollerları için de geçerli. Artık mesela SDM’in 800 MHz’lerde koşan şeyleri var. Yani microcontrollerları var. Yani inanılmaz yüksek performanslarda, inanılmaz yüksek memorilere sahip bir şeyler çıkmaya başlıyor.

O yüzden aslında yavaş yavaş kullanım şekilleri değişmeye başlıyor ki keza zaten geliştirilen belli başlı bu yaklaşımlar veya işte mesela Art’la alakalı farklı şeyler çıkıyor mesela veya işte embelled Linux’le alakalı eklenen şeyler yavaş yavaş farklı kullanım alanları bulmaya başlıyorlar. >> Mesela S&P Artos’tan bahsettin ya belki düne kadar yoktu. >> SP Artosan yeni çıkmış diye biliyorum. Yani birkaç yıl olmuş belki yanlış hatırlamıyor ki artık eee mikrocontroller çift çekirdekli 4 çekirdekli olmaya başladı. >> Evet. Ya mesela Dig’in şeyinden bakmıştım.

Digkde 2021’de mi ne yazmış? Dig’de yazmışlar. Hani demişler ki Friartos desteklemiyor S&P’yi ama belli patch’leri uygulayarak çıkabilirsiniz üstüne demişler. Sonra Friartos artık kendisi demiş ki tamam artık hani patch’ler de yapıldığına göre biz kendimizde artık bunu çıkaralım demişler mesela. Onlar artık desteklediklerine dair bir yayın yapmışlar. E burada çok temel hani çok bahsetmeye de gerek yok belki ama ember Linux Architecture aslında belli başlı bir şey koydum katman olarak koydum okursunuz diye.

Burada en önemli şey söyleyeceğimiz şeylerden bir tanesi bence board support package’lar olabilir. Yani board support package dediğimiz bir şey var. Bu da şu. Bugün aslında baktığınızda ben bir embed Linux projesi geliştirmek istiyorum dediğinizde diyelim ki farzı misal veriyorum işte Bigle Bond diye bir kart var. Bigle Bond denilen kartla oynuyor olabilirsiniz. Ondan sonra işte mesela bizim gibi FPG’lerle uğraşıyor olabilirsiniz. ARM tabanlı SDM’in belli başlı A53 core var mesela. Onlarla alakalı bir şey olabilirsiniz veya Raspberry Pie olabilir. Yani mesela bunlarla alakalı bir proje yapmak istiyorsunuz. Genelde bu firmalar kendileri için, kendi üretmiş oldukları kartlar için bir board support package oluşturuyorlar. Board support package dediğimiz şey de aslında zaten o hardware’e göre dizayn edilmiş, o hardware’e göre konfigüre edilmiş bir sana imaj veya işte sana bir kernel dosyası mesela sana onu sağlıyor.

Yani şöyle bir şey var. Rasper’in üzerinde 3 tane HDMI varsa mesela HDMI driverları içerisine yüklenmiş şekilde geliyor. Mesela board support package’lar veya sen o board support package’ile o Rasp’yi ayağa kaldırdığında o HDMI da kullanabiliyor oluyorsun. Ama mesela aynı imajı bir kere arkitecture farklı başka bir boarda çakmaya çalıştığında o zaman olmayacak ya. Veya Raspberry Pie’ın başka bir boardu için iki tane HDMI bulunanla 3 tane HDMI bulunan arasında board support package’te belli farklı değişiklikler olacak. Çünkü oradaki hardware oradaki kernel’a orada şeye tanımlanmamış olacak. O yüzden aslında board support package dediğimiz şeyler hardware spesifik olarak üretilmiş ve konfigüre edilmiş sana bir şey sunuyor, imaj sunuyor veya işte kernel sunuyor şeklinde yorum yapabilirim. Eee en temelde şöyle bir şeyden bahsedeceğim çok ufak. Mesela operating systemlerle Artos arasındaki farklılık ne?

Yani general purpose operating system’larla real time operating systemlar. Aslında şöyle bir farklılık var. General purpose operating systemler sana şeyi sağlamıyor. Sana şey demiyor. Timing’ile alakalı precise bir şey vereceğim gibi bir adamın vadesi yok. Böyle bir şey vad etmiyor sana. Ama general purpose’elarda genelde şöyle bir şey oluyor. Mesela diyelim ki 4 tane task var. Bu d tane task eğer ki bir tane büyük task veya priority yüksek bir taskın koşabileceği süre 4 tane taskı koşabiliyorsa bu 4 tane task koşmayı tercih ediyor. Çünkü daha fazla yani birim sürede daha fazla iş yapabiliyor genelde.

O yüzden general purpose operating system’ler böyle davranıyor diye biliyorum ama real time operating systemler öyle değil. birim sürede yaptığı işe bakmıyor. Bir sürede yaparken hangi taskın ne kadar zaman, hangi sürede koşması gerekiyorsa onu koşmasını sağlıyor. Yani o yüzden aslında arada bir kullanım farklılığı var. Mesela bizim bilgisayarlarımızda real time operating system gibi koşmak gibi bir şey çok mümkün olmazdı büyük ihtimalle. Çünkü web web’e giriyoruz bir yandan müzik açıyoruz bir yandan işte YouTube’da video açıyoruz bir yandan Word’den bir şeyler yazmaya çalışıyoruz filan. O yüzden aslında bir noktada bilgisayarın şey yapması lazım. Arka tarafta ne kadar kısa sürede ne kadar fazla taskı yerine getirebiliyorsa onu yapması lazım.

Ama real time operating sistemler öyle değil. Real time operating sistemlerde a taskı gerçekleşmesi gereken zamanda gerçekleşebilsin diye var. Artık burada bitiriyoruz. Bu son slayt. Burada da aslında şundan bahsedeceğiz. Bahsettik. Bear metal’den bahsettik. Real time operating systemlerden bahsettik. Bir de operating systemlerden yani embeded Linux’tan bahsettik mesela. Yani bu tarz bir şeyde ben bir proje geliştireceğim zaman neden bunlar arasından bir seçim yapmalıyım veya hangisini seçmeliyim gibi bir soru ortaya çıkıyor. Ve buna göre aslında bu proje sürecine başlamanız da gerekiyor. Ve bu noktada aslında en temelde bir kere şuna bakmamız lazım. Bizim adam gücümüzde kim ne biliyor?

Yani hiç kimse real time operating system bilmiyorsa real time operating system çok gerekmediği ölçüde real time operating system’e girmemeliyiz. Yani çünkü bunun bir learning curve var. Herkesin bunu öğrenmesi gerekecek veya işte realtime operating systemlı projeyi yapabiliyoruzdur mesela. Ya bunun yerine ya şununla yapalım daha şey olsun deyip mesela üzerine embelled Linux çakmaya çalışmak hiç kimse bilmiyorsa çok da mantıklı bir şey değil. Ya bir noktada aslında bu da şuna bağlı ama projenin süresine de bağlı. Yani bir yılda tamamlayacağınız bir projede hiç kimsenin bilmediği bir arkitecture, hiç kimsenin bilmediği bir geliştirme ortamını getirip de onu bir sürede bir yılda bitirmesini beklerseniz >> proje o zaman yanlış firma almıştır.

Yani hani hiç o konuda şey yoksa yanlış firma almıştır. >> Buradan da sistem mühendisliğine yavaş yavaş >> ya da ekibi çok hızlı işte kurmak insan kaynakları mesela şey yapabilir >> ama bu tarz şeyleri görüyoruz yani siz güncel markette görüyoruz yani. Mesela sana ekibe bir proje geliyor. Sana sorulmadan geliyor o proje. Yani şey olarak böyle bir şeyi biliyor muyuz veya bu kadar sürede yapabilir miyiz gibi bir şey gelmeden şu kadar süremiz var şöyle bir proje aldık diye. Piyasada gördüğümüz bir şey yani bu.

Ev o piyasada da işte nitelikli mühendis hani öyle bir yorum yapayım yani bir atıyorum Artos’u iyi biliyor birisi en medsu bir şeyi evet tamam birazcık learning curve olur ama biraz olur >> eğer mühendis kaliten iyiyse ekibin iyiyse >> o işe de mesela yapay zekalı bir iş yapılacak ama hiç yapay zeka yapılmamış tamam ama ekibine güveniyorsanet >> ekibin sana o güveni veriyorsa o zaman öyle işlere girebiliyorsun ve genelde başarılı olabiliyorsun >> biraz iyi mühendis günümüzde yani hem bu kadar Google ya internette bu kadar dokümantasyon güçlüyken >> Evet. >> yapay zeka belirli bir hızlanma şeyi sağlıyorken eskisi kadar dik bir yokuş değil o learning curve. >> Evet. >> Kuantum fizikten bahsetmiyorum. Hani >> daha önceden yapılmış birilerinin implement ettiği bir şey değil mi bunlar?

Em Linuxer onu yazmış hani Artos falan. Biz onu kullanacağız aslında. Çok müthiş bir learning curve değil bir ik ay iyi bir software iyi bir embededin mi bir iki ay hani ben kendim onu tecrübe ettim. Ben hiç Linux uğraşmadığım zamanlarda hem Linux işi geldi. Hem de böyle Peta Linux’lu işte konfigürasyonu, şusu busu. Bir bir iki ayda öğrendim, yaptım. Hani biraz öyle bir yorum katayım. >> Evet. Ama dediğim gibi hani ekibe de bağlı ya bu hani mesela o ekibe bağlılık da şey dediğin gibi tecrübeye de var yani. Evet aynen öyle yani. Ama yeni mezun birisinin mesela komple yeni mezun üç kişinin mesela oturup onları tek başlarını öğrenmeye çalışmaları başlarında mesela onları yöneten birisinin veya onlara yol gösteren birisinin olmaması durumunda bu çok zor bir şey.

İçinden çıkılmaz bir hale de girebilir. Ama dediğim gibi gerçekten hani teknik olarak da mesela tecrübeli birisi yol gösterdiği zaman o zaman tabii ki bu tarz şeyler de bence birçok da daha kolay oluyor. Dediğim gibi onunla beraber aslında kullandığımız hardware’a da bağlı olan şeyler. Yani sonuç itibariyle bir cihazın içine bir development gerçekleştiriyorsak ve yani sonuç itibariyle biz bir hardware’e yazıyoruz ve bu hardware de aslında bir cihazın içinde bulunuyor. Örnek vermemiz gerekirse ona göre bir donanım tasarımı gerçekleşiyor.

Bu donanım tasarımının veya işte mali bütçenizin geliş yeterlilikleri kapasitesi içerisinde olması şartıyla aslında bir seçim yapmanız gerekiyor. Yani içine bir CPU koymakla içine bir microcontroller koymak arasında fark var. O yüzden mesela maliyet hesabı da bunlarda etkili oluyor. Aynı şekilde. >> Tabii yine ekleme yapayım. Hani >> sektör tecrübesine binaen aslında senin bütün bu anlattıkların sistem mühendisliğinin önemini ortaya koyuyor. >> Aynen öyle. >> Yani bir müşteri bir veya potansiyel müşteri bir taleple geldi. Kime gelebilir? Büyük firmalarda bu projeciye gelebiliyor. İşte yönetime geliyor.

Yönetim önce projeye sorar atıyorum. Sonra sistem mühendislerine sorulması lazım. Yani bu tabii değişir yani işte roket yapıyorsanız, uçak yapıyorsanız sistem mühendisi roket uzmanıdır, uçak uzmanıdır belki ama burada bir software system engineer, embeded system engineer gibi bir senior hatta architect seviyesinde biri veya birileri olmalı ve böyle bir iş tanımı, gereksinim geldiğinde önüne bu gereksinim müşteriden genelde şey diye gelmiyor. Tabii Mb4 Linux ihtiyacımız var diye gelmiyor. >> Evet.

Bana işte şu ağırlıkta, şu ölçüde, şu maliyette daha doğrusu maliyeti sen belirleyeceksin. Sen teklif vereceksin zaten. Şu şeyin içine sokabileceğim, şu kutunun içine sokabileceğim bir bana sistem lazım. Güç, güç gereksinimi gelir. Şu kadar watt verebilirim. >> Evet. Farz misal. >> Şu kadar boyut, ağırlık gibi gereksinimler gelebilir ve arayüz. >> Evet. >> Der ki benim 6 tane HDMI, ik tane display. Bunları işte aynı anda 4 tanesini sıkıştırmam lazım. H264 falan. Bu durumda iyi bir embeded system engineer’ın, sistem mühendisinin oturup ya ben bunu hangi donanımla en maliyet etkin çözebilirim?

Yani burada dediğin gibi Artos implement edecek veya edited Linux veya standalon işin böyle zurnın zırt dediği yerdeki kişinin değil de burada en az bilmem kaç yıl dirsek çürtmüş, birkaç proje devirmiş bir emered system engineer’ın ya burada işte FPC tabanlı bir SOC’ye ihtiyaç var. Ya burada GPU’ye ihtiyaç var. Burada konvansiyonel 3 mikrocontrollerla yapsak bunun yerine işte daha ucuz olabilir gibi hani böyle sektörde tecrübeli bir system engineering aslında önemi ortaya çıkıyor gibi anlıyor. >> Evet. Evet haklısın. Aynen öyle. En temelde ufak ufak tefek de teknik şeylerden bahsedersek mesela be metal projeyi neden seçerim? Neden be metalle yapmayı tercih ederim? Beir metalle yapmayı tercih ediyorsan bir application çok basittir. Sadece birkaç sensörden bir şey okuman gerekiyordur mesela.

Yani bunun için gidip de artos çakmana veya embet gibi bir şey çakmana gerek yok. Yani iki tane sensörden data okuyacaksan bunu haliyle be metalde yapabilirsin. Veyahut gerçekten mesela bu 1 milisaniyede mevzusundan bahsettik ya context switching. Bunlar hardware’in üzerine çıkılan layerlar dedik. Eğer ki mesela mikro seviyelerde bir şey arıyorsan yani gereksinim arıyorsan mesela mikro seviyelerde bir hesaplama yapmaktan bir presize arıyorsan mesela o tarz bir presize arıyorsan mikrosaniyelerde diyelim ki 10 mikrosaniyede ben bir işlem yapacağım gibi bir şey. Bunu hardware üzerinden yazman çok daha mantıklı. Çünkü diğer türlü artos dediğin şey arkadaş layer olduğu için üstünde hardü bir layer olduğu için o arkada koşan kodlar var. Onlar aslında senin çalıştırmak veya yapmak istediğin applicationlarını çağırıyor ve bu da aslında bir süreç.

Yani orada senin applicationının veya senin kodunun çalışması için belli bir süre daha uzatıyor aslında oradaki süreyi. Beer metalde öyle bir şey yok. Hardware üzerine yazdığın için çok daha kısa süreli eee veya çok Tamam çok uzatmaya gerek yok. Çok daha kısa süreli işlemlerin için be metal tercih edebilirsin. >> Herhangi bir overhead olmadan diyelim. Software overheadi yok abstruction overhead’i yok.

Evet. >> O anda tam satır satır ne yapacağı belli. Register register belki belli. >> Evet. Aynen. Yani çünkü mesela okumak mesela okumak için mesela layer üstüne layer hal onu hal onu çağırsın oradan onu çağırsın oradan çağırsın gibi değil. Direkt olarak mesela şey hani register’la gidip çat diye okuyayım oradan yazayım tekrar okuyayım şey yapayım ondan sonra onu oradan çekeyim registerdan çekeyim orlayayım maskeleyeyim vesaire filan. Çok readable bir şey olmayabilir mesela. human readability azalıyor olabilir kodun ama tabii ki senin işini görüyorsa öyle yapman gerekiyor. Real time operating systemlar zaten birçok kez üzerinde durduk aslında sisteminizin gereksinimine bağlı. Yani sen nasıl bir sistem istiyorsun?

Soft real time bir sistem mi istiyorsun? Hard real time bir sistem mi istiyorsun? Hard real time bir sistem istiyorsan veya bir scheduling mantığı istiyorsan o zaman yapman gereken şey realtime operating tarzı sistem bir sistem kullanmak. Embed Linux tarzı operating system gibi şeyler zaten bunlar bir operating system olduğu için veya çok daha kapsamlı bir altyapıları olduğu için örnek vermemiz gerekirse daha yüksek seviyeli applicationlar için örnek veriyorum G Streamer kullanmak istiyorsun ya video işi yapmak istiyorsun veya yapay zekayla alakalı bir şey yapmak istiyorsun.

Gerçi şu an mesela çok araştırmadım ama SDM’in üzerinde yapay zeka şeyleri filan koyma vesaire filan var. falan var daha microlar için yapay zeka diye ama dediğin gibi daha >> yüksek kapasiteli networkler >> application bir ne bileyim file system aslında mesela file system >> microcontrollerda hani fat file system library falan var veya ethernetle TCP ıp >> Evet >> hani be metalde tam lightweight IP falan var veya USB host USB device bir şey yapacaksın >> şimdi hadi bunu bear metal’la yap dediğinde ister istemez biraz vakit alacaktır.

Yani şeyde hani plug and play >> tabii ki ya bir de şey de oluyor mesela bir yerden sonra gerçi konuştuk microcontrollerin hardware artık çok gelişiyor ama bir yerden sonra eğer çok kapsamlıysa proje bu sefer şey oluyor hani o hardware’i gırtlaklamaya başlıyorsun yani sonuna kadar dibine kadar kullanmaya başlıyorsun. Bu da ileride mesela belli başlı bir şey eklemen gerektiğinde filan senin için çok daha zor bir hale sokuyor aslında projeyi. O yüzden mesela bu seviyede yüksek seviyeli applicationları geliştirirken bunu kullanmak daha mantıklı. Niye? Çünkü şöyle düşün. Mesela G streamer kullanacaksın veya işte video işi yapıyorsun. Evet. Video işi yaparken mesela ben şu an o yüzden bunu kullanıyorum.

Niye? Çünkü en Linux’u yüklüyorum. Yükledikten sonra bunun kernel konfigürasyon dosyasına giriyorum ve diyorum ki benim için GSTAM’i aktive et. Bu kadar konfigürasyon dosyasına gidip sen bunu click ettiğinde veya çektiğinde bir sonraki build’ini alıyorsun. Kern ayağa kaldırıyorsun ve GSAM libraryle, driverlarıyla ve kullanılabilir bir şekilde senin önüne geliyor. Yani sana burada bunu implemente etme zorluğunu senin elinden almış oluyor aslında. O yüzden mesela bu tarz yüksek seviyede applicationları geliştirmek vesaire istiyorsan veya çok daha fazla multimedya support etmek istiyorsan mesela o zaman mesela Linux gibi projelere yavaş yavaş girmeye başlıyorsun. Bu şekilde bazen de zaten gereksinimler sizi zorluyor.

Mesela bizim FPC zingascale plus’ta VCU dediğimiz video Codec Unity kullanmak istiyorsan zaten hem de Linux kullanmak zorundasın. Ver metal desteği yok. >> Hım. Bilmiyordum onu. Evet. >> Yani zaten seni oraya zorluyor. Dokumanda yazıyor. Hani >> h >> bunu standal on be metal kullanabilir miyim? Hayır kullanamaz. Seni oraya doğru zorluyor zaten. >> Evet. Ya da mesela onunla alakalı farklı bir hardware kullanmaya zorluyor seni. Evet.

Bu şekilde aslına bakarsanız bir projede temel maksadıyla, temel anlamıyla be metal nedir, nedir, operating systemlar, embelled Linux nedir ve bir projede hangi maksatla nelere göz ard nelere göz önünde bulundurularak seçilir diye böyle bir küçük sunum yaptım. Dinlediğiniz için teşekkür ediyorum. Burada sözü Burak abiye bırakıyorum. Yine >> e Yusuf’a teşekkür ediyoruz. kendisi bu sunum için normal zaten çok yoğun işlerinin arasında emek harcadı ama ben kendisi için de ciddi bir gelişim sağladığını ümit ediyorum. Ya bildiğin şeyleri anlatmak.

Mesela Artos’la alakalı bildiğim şeyler vardı ama hem unutmuşum hem de canlıda böyle insanları anlatırken daha zor oluyor. O yüzden aslında herkesin her zaman söylediği bir şey. Yani birine bir şey anlatabiliyorsan o işi biliyorsundur. Yani umarım anlatabilmişimdir. >>

Ya şöyle bir de Yusuf hani daha aslında junior seviyede diyebileceğimiz bir arkadaş. Hani 23 yıllık bir tecrübesi var. Ona rağmen hani zaten şu anda uyguluyor hem bear metal artos artı hem edin uygulamaları geliştiriyor. O yüzden teşekkür ediyoruz kendisine. >> Ben teşekkür ederim. >> E inşallah yakında bu tek talk’da farklı konularla, farklı yine arkadaşlarla birlikte devam edeceğiz. Teşekkür ediyoruz. Yeah.