Herkese selamlar, saygılar. Anadolacık firması olarak ilk Tek adını verdiğimiz aslında teknik bir sunum hazırladı Yusuf arkadaşımız. İlkini gerçekleştiriyoruz. Bunu da YouTube’da yayınlıyoruz. Siz de şu an bunu izliyor olmanız lazım. YouTube’da yayınlanıyorsa. Bugün Yusuf hazırladığı kısa bir sunumu aktaracak. Tabii şey gibi düşünmeyelim. Hani burada aslında daha ziyade bir konuda uzmanlaşmak veya öğrenmek istediğimiz bir konuyu anadolojik çalışanlarına ya aslında ben söyledim. Yani böyle bir sunum hazırlarsanız sizin için de iyi olur kendinizin gelişimi açısından. Hem de bunu paylaşaraktan bu konuda bilgi sahibi olmak isteyen kişiler için de bir referans olur diye böyle bir şey hazırladık. Birazcık sohbet muhabbet ortamında lütfen kusurumuza bakmayın. Başka var mı bir şey demek isteyen?
Evet. Şimdi bugün aslında biraz şeyden konuşacağız. Belki de kendimi tanıtmam da gerekiyor belki burada hani bir noktada. Ben 2 yıldır Mbat üzerine çalışan birisiyim. Analogic’te başlayalı yaklaşık 5 ay oluyor. Bundan önceki iş yerimde daha çok microcontrollerlarla uğraşma imkanım oldu ve bu esnada daha çok be metal ve freeartos yani realtime operating system’ler aslında bu tarzda projeler geliştirdim. Burada da Logic firmasında da şu anlık şeyiz operating system’larla yani aslında embelled Linux dediğimiz artık realtime operating system gibi değil de daha kapsamlı sistemlerle çalışıyoruz.
Ve bugün de burada aslında birazcık ekip arkadaşlarım yani siz de daha çok dijital dizayn tarafında olduğunuz için be metal nedir? real time operating systemlar nedir? Operating systemlar nedir? Ve bunlar bazı projelerde ne maksatla neden seçilir veya nasıl seçilebilir? Kullanım şartları nedir? Hani bu tarz bir şey üzerinden biraz gidelim. Hani böylece şu an mesela bened Linux’ile uğraşırken neden bu projeyi Linux’la geliştirdiğim hakkında az çok sizin de fikriniz olmuş olur gibi. Eee bu temelde genel bir değerlendirme ve genel bir konuşma aslında bu.
Evet. Burada temel olarak dedik ki Beir Metal Artos ve embed Linux Proje için hangi yaklaşımı seçmeliyiz dedik. Yaklaşımdan ziyade bunu internette biraz bununla alakalını okursanız şey diyorlar. Hani software foundation hani hangi software foundation olarak geçiyor bu bahsedilen şey. Ben de hani onu nasıl Türkçeye çeviririm filan derken yaklaşım dedim, chat’ sordum işte çalışma yönetimi vesaire filan dedi. Oradan devam ediyoruz. Peki benim bir sorum olacak. Bu üç yöntem mi var? Yani dördüncü bir alternatif yok mu? SM de mi?
Bu üç yöntem domine eden, sistemi domine eden şeyler. Yani bunların mesela ne bileyim Friartos’un üzerine çıkılan patch’lerle harici bir sistem, harici bir şey haline getirilmiş olabilir. Ama şu an Beer’da hani bahsettiğimiz en temelde sistemi şey yapanlar, domine eden yöntemler bunlar. Yok. Mesela şunu diyeceğim aslında cevabı belli ama yine de hani herkes için de bilgi olması açısından ben bir Nvidia’nın GPU’sunu kullanacağım. gömürlü GPU’ları var ya, orin, minat. Evet. Orada mesela hangi yaklaşımı aslında kullanmış oluyorum? GPU kullanma şeyine geldiğinde mesela işte kuda vesaire falan GPU üzerine yazılım geliştirmek üzerine kullanılıyor. İşte C++’lar hani o taraflarda tam olarak ne geliştirdim ben de bilmiyorum ama operating system olarak orada kullanmak daha mantıklı. Evet, güzel yaklaştın zaten.
MB’de Linux aslında GPU dediğinde orada bir acelerator. Aynen. Aynen. Burada da FBC’de de bizim aceleratorlarımız var. periferalarımız var. Neden len kullanıyoruz? Bahsedeceksin ama hani aslında bir GPU tabanlı bir şey de kullansam. TPU var artık tensor processing unit. O tabanlı bir şey de kullansam genelde aseded Linux’a kaymak zorunda kalıyorsunuz veyaeded Linux olmasa da bir embeded operating system diyebiliriz. Yani Windows da olabilir. Ya şöyle bir şey var. Bahsetmiş olduğun işte GPU kullanımı veya yapay zekayla alakalı olan şeylerin hepsi artık high level’da user seviyesinde artık geliştirilen applicationlar. O yüzden bu tarz bir şeyi ben işte low level bir şeyde yazmaya çalışacağım demek daha çok amelasyon getiriyor aslında projeye. O yüzden yüksek seviyede yani bir operating sistemi geliştiren 3.000 insan, 4.000 insan var.
Yani bunlar open source projeleri olduğu için belki daha fazla dünya üzerindeki bir ton çılgın adam oturup oturmuş o open source kaynaklara contribute ediyorlar ve o yüzden aslında senin için var olan bir altyapı hazırlıyorlar. Sen de bunların üzerine aslında o applicationları geliştirmen daha kolay oluyor. O yüzden bu tarz uygulamalarda daha çok operating systemler kullanılıyor. Evet. Yani temel eğitim arasından böyle bir giriş yapmış olduk. Yani gömülü sistemlerde filan da ve projeye girerken aslında ilk başta sorulan soru biraz şey oluyor. Hani biz bir dizayn yapacağız.
Tamam. Şöyle bir proje geldi işte bize. X projesi geldi. Bu projeyi aslında hangi katmandan itibaren yazmaya başlayacağız diye bir soru sorabiliriz aslında. Çünkü bahsettiğimiz şeyler hepsi aslında hardware’in üzerine çıkılmış olan katmanlar. Yani işte mesela physical layerlar hani bir noktada mesela FPJ’de yaptığımız IP dizaynları vesaire filan da aslında bu hardware tarafına geliyor ve physical taraf onlar. Physical tarafın üstüne işte hardware componentler var. Mesela buraya ben internetten bulduğum bir şeyi koydum ama hani mesela burada hardware abstraction layer yani tamamen artık hardware’a bağlı olmayacağım bir layer olabilir. Ondan sonra hani hardware’i düşünmeden geliştirme yapabileceğim bir layer. Zaten bunu birazdan örneğini de vereceğim. Veya onun üzerine çıkılmış device driverlar yani şu an kullanıyoruz.
Mesela hani diyelim ki mesela sen bir tane entegre aldın. O entegrenin bir device driverı var. Hani herhangi bir şey kullanmadan o device driver’ı kullanarak o entegrenin hardware’inden bağımsız olarak o entegreyi kullanabiliyorsun. Mesela bunların hepsi aslında o yüzden hardware’in üstüne veya bir sonraki layerların üstüne çıkılmış katmanlar ve layerlar aslında. Ve bizim de sonra sorduğumuz soru o. Yani hani biz hangi layer’ın üzerine bir şeyi geliştireceğiz?
Mesela buna örnek olarak şöyle şimdi en temelde çok duymuşsunuzdur. Beer metal programming. Beer metal be metal programming nedir? Ya aslında be metal programming hardware’in üzerine yapılan bir işlem. Yani herhangi bir abstraction layer olmadan, herhangi bir operating system olmadan yani directly registerlara yapılan yani farzı misal veriyorum. STM üzerinde yazıyorsunuzdur. ARM tabanlı bir e işlemciyle çalışıyorsunuz. İşte interupları ayağa kaldırmak istiyorsunuz. Interup’ların içeride var olan bir registerı var. Siz gidip bu interup’ı enable etmek istediğinizde işte memorydeki adresi verilmiş olan registerlara gidip onları oradan hangi bitleri enable etmediğinize karar vererek onları enable etmeniz gerekiyor.
İşte bu be metal programming aslında ve işte mesela konuşuyoruz mesela bir yandan hani IP dizaynları yaptığımızda bu IP’lere bir noktada ne dedik? Registerlar tanımlayacağız dedik ve o registerların üzerine driverlar yazacağız dedik. Aslında bu tamamen aslında bir be metal programing oluyor. Bunu AMD’de de FBC’de de yaparken birkaç isim vermişler buna. Hı hı. Be metal bir tanesi standalone. Evet. Standalone da kullanılıyor bu tabir. Bir de no os. No os. No slash işte pardon tire os der. Yani anladım. ü ayrı tabir kullanıyorlar. Herhangi bir şey yok yani. Hani tamamen be yani gerçekten yani yani stand alone kendi kendine ayakta duran mı artık? Standalone tek başına yalnız gibi değil mi? Stand yalnız. Evet aynen yalnız kurt ya.
Abstruction layer nedir dediğinde aslında abstraction layer zaten şeyden geliyor. Hani dil olarak baktığında abstraction soyutlamak hani demek yani aslında seni hardware’den soyutlayan şey oluyor bir yerde abstraction layer mesela işte daha çok ben hani ARM tabanında ve STM’de çalıştığım için söylemem gerekirse mesela hani STM32’lerde şeyler var. Hal hal libraryleri var. Hal kütüphaneleri var. E bu hal kütüphanelerin açılımı zaten şey hardware abstruction library yani hani direkt olarak bu sana neyi sağlıyor? İşte gidiyorsun mesela hal you init çağırıyorsun. Halard init çağırdığında ne oluyor aslında? O gidiyor arm işlemcinin içerisindeki art periferalın registerlarına gidiyor. O registerları gerekli initialization için gerekli olan işte ayarlamaları yapıyor filan.
Sen sadece şunu demiş oluyorsun adama. İşte ben you’ ayağa kaldırmak istiyorum. Bunu fonksiyonun içerisinde argümanlara veriyorsun ya işte şunu ayağa kaldırmak istiyorum. İşte şu kadar bat rate olsun istiyorum. Hani sen gerekli spekleri verip aslında o donanımı ayağa kaldırıyorsun. Y register adresi vermiyorsun da user manuele okuyup da register işte bow rate register atıyorum base adresin üzerine 16 registerdaysa gidip öyle bir pointerla erişmiyorsun da evet aynen öyle onun yerine bir instance tanımlıyorsun cd diliyle konuşursak bir tane aslında pointer tanımlıyorsun structyorsun o struct’ta bir pointer üzerinden de bu fonksiyonları çağırıyorsun aynen aynen öyle aynen öyle diğer türlü bahsettiğin gibi gidip registerlarda maskeler eme işlemleriyle vesaire filan gidip o şeylerin ayarlamalarını yapman lazım.
Peki real time operating system’lar nedir? Yani real time operating system’lar aslında artık birazcık daha hani o bear metalin de üstüne çıkıyorsunuz. Size eee şey sağlıyor. Yani kendi içerisinde bir memory management sağlayanlar var. Freartos’un falan kendi içerisinde dynamic memory management sağlayan yapıları filan var. E real time operating system’lar birazcık daha dediğim gibi hani be metalin de üstüne çıkan bir hal abstraction da olabilir. Yani hardware abstraction layer da diyebilirsiniz buna bir noktada.
Ama daha çok real time operating system’lar da önemli olan şeylerden bir tanesi ben şeyi kapatmıyorumdur herhalde. Predictable olması. Yani biz genelde öyle diyoruz. Hani predictable olmaları. Yani bu da şunu demek aslında. Timing açısından real time operating system’lar sana öngörülebilirlik sağlıyor. Bu da şu demek. Şimdi sen bir task, bir işlem yapmak istiyorsun. Bunu bir task olarak değerlendiriyorsun ve bu yapmak istediğin işlemi diyelim ki sen her 2 milisaniyede bir yapmak istiyorsun. Free Artos sana bunu sağlıyor. Mesela freeartos veya zifir.
Bu direkt ben free artos dedim. Celpck mendil gibi şey olduğu için real time operating systemler sana bunu sağlıyor. Works var. Vakw falan. Vak Works var. Aynen. Bunlar açık kaynak olanlar. Free Aos’la ZF Evet. Embedos filan var. İşte NASA’nın kendi geçen hafta görüşmüştüm. NASA’nın kendi yazdığı işte uzay araştır kullandığı OSTAR TÜBA bir kendi artosu var. Hı hı. TÜBİTAK bazı projelerde o kullanılıyor diye biliyor. Öyle mi? Evet. Evet. Yani real time operating systemların genel kullanım amaçları da bunlar. Yani temel itibariyle sen daha timingleri kontrol edebildiğin işte nasıl diyeyim? Kesin olarak bir taskım vardır. Çok önemli bir taskır. Bu taskın sürekli olarak belli saniyelerde, belli zamanlamalarda çalışmasını istiyorsundur.
Bu tarz işlemlerde aslında real time operatinglar, real time operating sistemleri tercih ediyorsun. Veyahut priority söz konusu var. Mesela diyelim ki senin elinde 4 tane task var. 4 tane işlem yapıyorsun. İşte bir tane entegreden data okuyorsun. İşte ondan sonra bir tane yerden temperature okuyorsun. İkisi de aynı şeye geliyor da bir yerden mesela motor kontrolü yapıyorsun diyelim veya bir calculation’ın var. Bu calculation ayrı bir task yapıyorsun. Şimdi burada bir taskın diğerlerinden daha büyük önceliği olabilir. Yani sen bu taskın gerçekleşmesi gerektiği zaman da ertelenmesini istemiyor olabilirsin. Başka bir task bunu çalışmaya devam ederken bu taskı ertelemesini istiyor olabilirsin. Real time operating sistemler biraz bunu yapıyor.
Senin priorityi yüksek olan bir taskın varsa ne yapıyor? araya giriyor. Diyor ki, “Pries daha yüksek olan birisi geldi. Aradan çık, bir dur sen. O çalışsın ondan sonra.” Ya bu şey gibi bir şey aslında. Şimdi biz hep beraber konuşuyoruz. Eee, hepimiz konuşurken bu sefer Burak abi bir şey diyecek oluyor. Burak abi bir şey diyeceği zaman biz bir duruyoruz. Burak abi konuşmaya başlıyor. Burak abinin sözünü kimse kesmiyor. Burak abi bitirdikten sonra biz devam edebiliyoruz. Çünkü hani prers daha yüksek oluyor mesela konuştuğu esnada. Mesela farzı misal bunun gibi bir örnek olabilir bu hani bizde yoksa şey olur. Normal real time operating bir sistem olmadığını düşünelim. Şey diyebilirsin mesela işte ben Abdülkadir’le konuşuyorum mesela. Abdülkadir konuşurken ya bir sözünü unutma ben giriyorum oraya mesela sonra sen devam ediyorsun filan veya sen beni tekrar bölüyorsun hani o şekilde bir conversation yürütüyoruz mesela. Ama real time opening sistemde öyle olmuyor.
Pri daha yüksek birisi geldiyse herkes diyor ki buyur abi sen işini yap. O işini yapıyor. O bitirdikten sonra geri kalan sistem tamam biz devam edebiliriz deyip onlar devam ediyorlar. Bir şey soracağım ben araya girip priority priority yüksek olan birisi olarak be metal predictable değil mi? Yani soru bu biraz şey tam olarak değil aslında. Zorlayıcı bir soru olabilir ama yani neden bear metal değil de freeartos kullanayım? Farzı misal. Şimdi diyelim ki şöyle bir şey söz konusu. Sen be metal bir mantıkta bakayım bundan sonraki task mı? Evet bundan sonraki şey. Şimdi be metal bir şeyde bir main fonksiyonum var ve bir main fonksiyonun içerisinde aslında bir sonsuz döngün de var. While döngün var ve aslında sürekli olarak proses onun içerisine dönüyor ve yaptığın işlemlerde filan hani tamam bunun üzerine de farklı metotlar var. İşte nasıl diyeyim mesela interap bazlı efendim?
Evet böyle air metal’de de interupt vector table gibi bir şey vardı sanki bazı var interaptlar tabii ki var ama interapların dışarısın dışında işte ne bileyim eee mesela noncopy sistemler var. Sistemi hızlandıracak şeyler var ama en temelde mesela şöyle bir şey söz konusu. Sen bir fonksiyona girdiysen o fonksiyon bitmeden başka fonksiyon çağırmıyorsun. Yani devamında gelen fonksiyon ondan önce veya ondan sonra hemen araya girip çalışamıyor. Yapabilirsin de çok fazla elle manual şey yapman lazım. Handcraft yapman lazım. Onu yaparsan büyük ihtimalle zaten kendine bir scheduler tarzı bir şey yazmış olursun. Aslında Evet. Benim duymak istediğim cevap sanırım oydu. Yani scheduler yok.
Artı scheduler var. Aynen. Bununla scheduler olmadığı için kendi schedulerını yapman gerek. Ben bunu buraya yazmıştım. Onu söylememiş miyim? Zaten altta söylemiştim ben. Yani aslında realtime operating systemlar tamamen bir operating system değil. Yani eee operating system olabilmesi için içerisinde çok daha kapsamlı işlemlerin yapılması lazım. Real time operating systemlar birazcık daha microcontroller düzeylerinde falan yazıyorsanız aslında bir scheduler görevi görüyor. Yani senin taskın prioritylerine göre görevlendirme yapıyor. İşte kesiyor, bölüyor. Memor ile alakalı belli başlı şeyler yapıyor. Ama bir operating sistemi olabilmesi için çok daha kapsamlı şeyler gerekiyor.
O yüzden aslına bakarsan be metalin üstüne ya evet ben işte işte bazı tasklarım daha bazı fonksiyonlarım daha önemli tşler yapmaya başlıyorsan zaten ufak ufak üstüne şey geçmeye başlıyorsundur. Bir scheduler mantığına bir şey yedirmeye başlıyorsundur. Sıfırdan bunu yapma da zaten Free Artos veya Zeper bunları yapmış. Hani bunların kendi task schedulerlarını, Q’larını, şeylerini kullanaraktan Aynen. Aslında öyle yapmak daha mantıklı. Eğer öyle bir noktaya gidiyorsa veya baştan kodun öyle bir noktaya gideceğini öngörüyorsan sanki en baştan bir Artos mimarisi seçip Evet. oradan devam etmek daha mantıklı gibi o zaman. Evet. Onları biraz sonda bir ufak böyle konuşalım. Konuşuruz şey yaparız.
Eee ama evet buradaki mantıkta zaten dediğimiz hani interupların her zaman şeyi daha yüksektir. Hani priority çok yüksektir interupların genel itibariyle. O yüzden de zaten tradlerin dışında da tutulur ISR’lar filan. Iasarlar veya işte reset vektörleri, reset işlemleri vesaire filan priority çok yüksek. En yüksek olan şeylerdir yine hem real time operating sistemlerde hem de be metal tarafında. Ve buradaki fakt da aslında bu. Yani gerçekten bir loop’un var be metal’de ve o loop’u takip ediyorsun. Ama real time operating system’lerde sen kendin tasklar tanımlıyorsun.
Artık bu taskların farklı görevleri var ve farklı görevler aslında içeride kendi başına bir bear metal koduymuş gibi aslında. Kendi onların kendi mainleri var. kendi infinity loop’ları var, kendi while döngüleri var ve hepsinin ayrı stack usage’ları filan var. Hani tabii ki burada real time operating sistemlerinin detaylarına girmeyeceğiz ama hani en temelde ikisi arasındaki fark nedirin veya real time operating sistemini neden tercih edilirin cevabı birazcık da bu. Mesela real time operating systemler dediğimiz bu. Yani operating system’da sürekli olarak giren bir idle sekansı var. Ve bu idd sekanı aslında hangi taskın şu an aktif olan bir task var mı? Priest daha yüksek bir task geldi mi? onun şeyini yapan taraf ve priority daha yüksek bir task.
Mesela burada A taskı geliyor. A taskı geldiğinde yine B taskı, C taskı gelmemiş. Priorties daha yüksek olan bir task yok. A taskı gelmeye devam ediyor. Priorties daha yüksek olan bir task. Mesela B gelmiş. B gelince A kesiliyor. Ondan sonra B çalışırken bu sefer C’nin büyük ihtimal prioritesi daha yüksek olsa gerek ki burada C araya giriyor. C araya girdikten sonra B devam ediyor. C işini bitiriyor. Sonra B araya B devam ediyor. B devam ederken mesela burada hardware’den ASR geliyor. Bunun pralesi daha yüksek olduğu için bu sefer B’yi bölüyor. Ondan sonra devam ediyor. B işini bitiriyor. C devam ediyor.
Artık PR daha yüksek olan bir task yok. Bu sefer a devam ediyor. Hani bunların kendi içerisinde belli başlı eee tabii ki zorlayan problemleri oluyor bu task yönetimlerinin filan. Onların hepsi artık içine işin içine girdiğinde senin dizaynınla alakalı kısımlara geliyor. Ama en temel de bu. Burada assuming single core processor demişsin. Eğer core sayısı artarsa ne oluyor mesela? İki core’umuz ik core olsun mesela. O zaman ne olacak? Yine yukarıda bir tane daha idd geçen yerler mi olacak? Yukarıdan ekstradan tasklar tanımlayabilecek miyiz? Nasıl? Ben de bir soru sorayım mı? Buyur.
Bu task B ile C’nin prioritesi aynı görünüyor ya. Acaba bu task C’nin B’ye bölmesi bir schedule’a mı örnek? Linux’a geçmeden bir şey sadece söylemek veya sormak istiyorum. Be metal kodlayan genelde insanlar be metalle giriyor öğrenciler. Yani Artos’la yazılıma girmez genelde gömülü sistemi. Niye? Ardino kodlamıştır veya işte STM en çok Türkiye’de popüler ber metal kod diyorlar. Evet. Bundan Artos’a geçmek çok zor mu? Var mı bir görüş?
Bundan Artos’a geçmek çok zor değil. Hatta eee şöyle bir şey var. Bayer metal kodluyorsan eğer sen kodlamışsan zaten arka planda neyin nasıl koştuğunu biliyorsun. Yani çalışma mantığını biliyorsun. Ne bileyim işte gerçekten IC’nin nasıl initialize edildiği hakkında bir fikrim var. Hani o yüzden aslında real time operating system tarzı bir layer çıkıldığı zaman üstüne işte sen orada bir taskı dizayn ettiğinde, taskı tasarladığında bu sefer orada şöyle bir şey oluyor. Tamam zaten burada bunu çağırıyormuş. Tamam hani burada yaptığı işlem arka planda şunları şunları yapıyor. Ben bunları zaten biliyorum diyorsun. O yüzden aslında bu tarz bir realtime operating sisteme geçmek be metal’den açıkçası çok zor değildi.
Düşünüyorum hani mesela mantıken bir farklılığı var mı? Aslına bakarsan her taskı kendi içerisinde bir mantıkta düşündüğün için yani sanki kendi içerisinde bir loopmuş, kendi içerisinde bir akışmış gibi düşündüğün için aslına bakarsan şey olmuyor. Hani çok büyük bir zorluk çıkartmıyor. IPC bloklarıyla çalıştığın zaman illaki birazcık daha farklı oluyor. Büyük ihtimalle ben onlarla çalışmadım ama onlarla çalışsaydım büyük ihtimalle işler birazcık daha karışabilirdi. Çünkü onlarda bu sefer shared memory mantığı var. İşte mutex yapılarını filan kullanman lazım.
işte bir kaynağı diğeri kullanırken başka kaynağı o kaynağı başka birisini kullanmaması lazım. En zorlayan şey bu olabilir. Yani bu tarz böyle multitasking bir şeye geçtiğin zaman bir metalden farklı olarak en zor şey belki de bu mutex mantığını anlamak. Çünkü bu mutex mantığında ve DMAI kullanma mantalitesinde düzgün anlaman lazım şeyi ve kaynakları kullanımın falan düzgün olması lazım. O yüzden birazcık daha kitabi bilginin de teorik bilginin de iyi olması lazım. onları öğrendikten sonra yani ben direkt internetten bakıp devam edeceğim dediğin zaman proje eğer büyük bir projeyse o zaman sıkıntılar yaşama ihtimalin var.
Çünkü arkada ne döndüğünü bilmiyor olabiliriz. O yüzden önemli olan şeen bir tanesi herhalde bear metalden Artus’a geçtiğinde birazcık daha o multitasking veya işte eş zamanlı task çalışma mantalitesini anlayabiliyor. Anlamış anlaman yani aslında bunu anladıktan sonra artık zaten akıyor. Yani görselle ilgili bir şey soracaktım. Mesela task A için konuşalım. Mesela bunları schedulellara bölmüş ya mesela atıyorum bunun garantisini sağlayabiliyor mu? Mesela 5 milisaniyede bu görev bitecek gibi bir garantisini verebiliyor mu sana? Ya çünkü mesela bir sürü interup girerse bu işini geciktirebilirsin.
Mesela sürekli böldü böldü ama her seferinde kaldığı yerden devam ederek mi o şeyi sağlayabiliyor? Evet. Bence burada bitirelim. Çok Yusuf’a teşekkür ediyoruz. İkinci bölüm bundan sonra gelecek. Embeded Linux aslında oraya başlıyordun değil mi? Yanlış. Evet. Ve aslında ondan sonrasında şey hani konuşulacak şey yani kısa geçmeyelimet Linux’u da hani bunlar tam olarak nasıl projede neden seçilirler? Hani neden Linux kullanılır? Neden inşallah ikinci videoda devam edeceğiz. Takip ederseniz Yusuf Bey’in estağfurullah anladıklarını teşekkür ed sürçü lisan ettiysek yanlış bilgi verdiysek affola diyelim. O zaman yorum yazın, düzeltin, deyin ki bu öyle değil de şöyle deyin. Biz de öğrenelim. Aynen öyle. Teşekkür ediyoruz.
