Gömülü Linux Notları

Başlatan memo333, 15 Eylül 2019, 10:53:11

memo333

Bir süredir üstünde çalıştığım 0'dan Gömülü Linux oluşturma üzerine notlarım artık paylaşılabilir hale geldi. Zamanla içeriği daha da ilerleteceğim. Şuan Logo site ismi gibi kozmetik olaylar eksik.
Notlarda herhangi bir hata görürseniz veya içerik konusunda bir isteğiniz olursa lütfen bana bildiriniz.

Bir süre sonra bu notlar üstünde çalışacak bir ekip olmayı hedefliyorum ancak olur mu bilemem.

https://linux-readdocs.readthedocs.io/en/latest/index.html


Gömülü Linux Notları --> http://linuxedu.xyz/

SpeedyX

Merhaba,

Şu bölümde ifade belki biraz değiştirilebilir.

Alıntı yapılan: undefinedGömülü Linux içeren bir sistem temelde 4 parçadan oluşur.

Bootloader
Kernel
RootFS
Cihaza yönelik kullanıcı uygulamaları
İlk 3 maddeye kısaca BSP (Board Support Package) denilir ve bu kitapta BSP konularını kapsamaktadır.

yerine

Alıntı yapılan: undefinedGömülü Linux içeren bir sistem temelde 4 parçadan oluşur.

Bootloader (u-boot)
Kernel
Dosya Sistemi (RootFS)
Cihaza yönelik kullanıcı uygulamaları Kullanıcı alanı (user space)
İlk 3 maddeye kısaca BSP (Board Support Package) denilir ve bu kitapta BSP konularını kapsamaktadır.

Linux temelde iki ana bölüme ayrılmıştır, bunlar;
Kernel Space
User Space

// TODO bu iki kavramın programlama ve erişim açısından farkı özetlenebilir

Çünkü artık uboot ve kernel çözüldükten sonra, geriye kalan şey normal bir linux olarak düşünülebilir. Donanım spesifik bölümler tamamlandıktan sonra elinizde normal bir linux var ve kernel space, geliştirici açısından bir HAL görevi görür. Syscall veya dolaylı erişim ile donanıma (izin verilen ölçüde) hükmedebilirsiniz.
Bu durum sadece gömülü linuxte değil, normal bilgisayarda da birebir aynıdır diyebiliriz. Aslında hepsi gömülü linuxtur yada hepsi linuxtur.
Gömülü kavramı sadece kernel space tarafında anlam kazanır.
İstisnaları görmezden gelip konuya böyle bakılırsa herkes için kavraması daha kolay hale gelecektir.

Ek olarak şöyle bir karşılaştırma eklemek faydalı olacak, zira yukarıda gömülü linux = linux dedik ama bu durum sadece bir kabuldür. Aslında tabiki farklar vardır ama bu farklar geliştiriciyi minimum etkiler ve zamanla teknoloji geliştikçe farklar azalmaktadır, örneğin birer gömülü sistem olan güncel cep telefonları artık bir bilgisayar kadar bellek barındırır ve gerçek zamanlı değillerdir, ek olarak piyasada kullanılan çoğu endüstriyel gömülü sistem artık tam anlamıyla gerçek zamanlı çalışmamaktadır ve bir çoğu sabit disk kullanır. Zamanla gömülü linux = linux haline gelecek yada aradaki fark daha da azalacaktır.

Alıntı YapGömülü Linux vs Masaüstü Linux
// TODO güncel durum dikkate alınarak özet bir karşılaştırma yapılabilir.
http://embeddedcraft.org/embedlinuxdesktoplinux.html
http://embeddedcraft.org/embeddedlinux.html

Ben üstünkörü yazdım, varsa yanlışlar ve gerekli noktaları iyileştirip ilerleyebilirsiniz.

Gediz1337

Bulunduğumuz ülkedeki yetkin insanların büyük kısmının tecrübelerini paylaşmaktan kaçındığı bir alanda böyle bir kaynak oluşturmaya girişmek bence saygı duyulacak bir iş.

Esasında ilk başlarda bazı soru işaretleri vardı aklımda. Bu alanda çalışmak isteyenler için temel kaynak daima İngilizce. İngilizce bilmeden bu işi yapmak isteyenlerin daima yarım kalacakları kanaatindeyim. Aynı zamanda uluslararası forumlarda diğer geliştiricilerin yaptığı işleri görünce ülkede bu konuda ne kadar yetersiz olduğumuz gerçeği yüzüme çarpıyor.

Ekosistem bazıları için çok "silikon vadisi özentisi" bir kavram olsa da bahsi geçen konuda önemli olduğunu düşünüyorum. Türk geliştiricilerin bu konuda sahip olduğu kaynakları arttırmak hepimiz için daha faydalı olacaktır.

Alıntı yapılan: memo333 - 15 Eylül 2019, 10:53:11Bir süre sonra bu notlar üstünde çalışacak bir ekip olmayı hedefliyorum ancak olur mu bilemem.

Birkaç aydır ben de iş dolayısıyla Gömülü Linux ile ilgileniyorum. Malumunuz, çok kapsamlı ve unutulması kolay bir alan olduğu için öğrendiğim bilgileri not tutmaya çalıştım. Olumlu bir yan etki olarak bu notların beraber çalıştığım arkadaşlarıma faydası olduğunu görmek beni bu notları toparlayıp düzenli bir kaynak haline getirdikten sonra paylaşmaya niyetlendirdi.

Bu konuda aklınızda bir yol haritası varsa elimden geldiği ölçüde yardımcı olmaktan mutluluk duyarım.

OptimusPrime

@memo333

BSP tanimlamasi dogru degil.  ::)

Bu arada soyle yuzeysel bir baktigimda faydali bir icerigi oldugunu gordum. Ellerine saglik  ::ok 
https://donanimveyazilim.wordpress.com || Cihân-ârâ cihân içredir ârâyı bilmezler, O mâhîler ki deryâ içredir deryâyı bilmezler ||

taydin

Elinize sağlık güzel bir çalışma olmuş. Benim naçizane bir önerim olacak. Arama motoru aramaları sonucunda daha kolay bulunabilmesi için ve herşeyin de topluca birarada olması için, yazdığınız bilgilerin belgeler.org sitesinde olması daha iyi olur diye düşünüyorum. O site, linux geliştiricileri tarafından bilinen ve sıkça başvurulan bir site.

Birde artık günümüzde gömülü linux sistemlerinden bahsederken yocto linux'tan da bahsetmek gerekir. MMU kullanılan modern gömülü 32 ve 64 bit işlemcilerin çoğunun işletim sistemi yocto ile oluşturuluyor, buildroot ise daha çok MMU olmayan işlemcilerde daha yaygın.
Timur Aydın (mekatronik.org)

OG

FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

yamak

Alıntı yapılan: taydin - 16 Eylül 2019, 00:24:00Elinize sağlık güzel bir çalışma olmuş. Benim naçizane bir önerim olacak. Arama motoru aramaları sonucunda daha kolay bulunabilmesi için ve herşeyin de topluca birarada olması için, yazdığınız bilgilerin belgeler.org sitesinde olması daha iyi olur diye düşünüyorum. O site, linux geliştiricileri tarafından bilinen ve sıkça başvurulan bir site.

Birde artık günümüzde gömülü linux sistemlerinden bahsederken yocto linux'tan da bahsetmek gerekir. MMU kullanılan modern gömülü 32 ve 64 bit işlemcilerin çoğunun işletim sistemi yocto ile oluşturuluyor, buildroot ise daha çok MMU olmayan işlemcilerde daha yaygın.
Hocam yocto ve buildroot için söylediğinizi neye göre söylediniz. Bana göre yocto zaman kaybı. Sonuçta embedded bir sistem oluşturuyonuz yocto kendi kafasına göre bişeyler yapıyo ve en son bıraktığımda geriye dönük uyumluluk diye bişey yoktu. Ancak kartın üreticisinin hazırladığı meta layerlar varsa rahat bi kullanım olabiliyodu.
Eğer sisteme tam anlamıyla hakim olmak istiyosanız buildroot bile değil lfs yöntemiyle oluşturmak gerekli.
Ayrıca MMU suz sistemlerde linux kullanımının amacını hâlâ anlamış değilim. Virtual adress space olmadan linux kullanmak çok mantıklı değil. Onun yerine sağlam bi rtos kullanmak çok daha mantıklı

taydin

#7
Alıntı yapılan: yamak - 17 Eylül 2019, 10:18:17Bana göre yocto zaman kaybı. Sonuçta embedded bir sistem oluşturuyonuz yocto kendi kafasına göre bişeyler yapıyo

Bu konuda birşey diyemeyeceğim, ama birçok işlemci mimarisi üreticileri ya yocto'ya geçtiler, yada geçme sürecindeler. Bu işlemciler ile çalışacaksanız yocto'yu kullanmak durumundasınız, beğenin beğenmeyin. Ben ikisini de kullandım. 32 bit AD Blackfin'de buildroot ile çalıştım ve şimdi ARM işlemcilerde yocto ile çalışıyorum.

Alıntı yapılan: yamak - 17 Eylül 2019, 10:18:17Eğer sisteme tam anlamıyla hakim olmak istiyosanız buildroot bile değil lfs yöntemiyle oluşturmak gerekli.

Mesele sisteme hakim olma değil, mesele, istenen özelliklere sahip ve istenen hizmeleri sağlayan bir linux dağıtımını en kısa zamanda oluşturmak. Eğer bunun için siz LFS ile başarılı olabileceğiniz düşünüyorsanız, buyurun, kullanın :) Kimse sizi ayıplamaz.

Alıntı yapılan: yamak - 17 Eylül 2019, 10:18:17Ayrıca MMU suz sistemlerde linux kullanımının amacını hâlâ anlamış değilim. Virtual adress space olmadan linux kullanmak çok mantıklı değil. Onun yerine sağlam bi rtos kullanmak çok daha mantıklı

Yaklaşık 10 yıl önce, MMU'su olmayan 32 bit AD Blackfin kullanan 3-4 proje için gömülü linux dağıtımı hazırladım. Ürünün web arayüzü var, LAN üzerindeki server'lere bağlanıp oradaki müzik kolleksiyonunu 4 tane ses kartından çalıyor, peryodik olarak yazılım güncellemesi var mı diye test ediyor ve varsa da kendini güncelliyor. Müşterinin onayı olursa, uzaktan bir teknik destek personelinin terminal bağlantısı açıp sistemde sorun gidermesine izin veriyor.

Şimdi böyle bir sistemi direkt bare metal firmware yazarak yapmaya çalışın :D Veya hadi RTOS da kullanabilirsiniz. Siz daha "hmm burasını nasıl yapacağız yav?" diye kafa patlatırken ben projeyi çoktan bitirmiş olacağım. "MMU'suz işlemcide niye linux kullanılır?" ın cevabı basit. Linux'un HAZIR olarak sağladığı sayısız servis var, ve bu servislerin kurulumu ve kullanımı ile ilgili onlarca yıla dayalı bilgi birikimi var. Bu da çok kısa sürede ürünü bitirip piyasaya sunmanızı sağlıyor.
Timur Aydın (mekatronik.org)

taydin

Birde tabi linux bedava iken RTOS kullanmanın on binlerce dolar olduğunu da es geçmemek lazım. RTOS lisans bedeli, onun eğitimi, teknik desteği, bakım anlaşmaları vs.

RTOS'lar, REAL TİME gerekli olduğu zaman "çok daha mantıklıdır", MMU'suz işlemci için değil.
Timur Aydın (mekatronik.org)

yamak

#9
Alıntı yapılan: taydin - 17 Eylül 2019, 11:29:51Mesele sisteme hakim olma değil, mesele, istenen özelliklere sahip ve istenen hizmeleri sağlayan bir linux dağıtımını en kısa zamanda oluşturmak. Eğer bunun için siz LFS ile başarılı olabileceğiniz düşünüyorsanız, buyurun, kullanın :) Kimse sizi ayıplamaz.
Bu şekilde kullanıyorum. Kimse ayıplayamaz zaten.

Ayrıca yeni rtoslardan haberiniz yok galiba. İçinde bir sürü stack barındırıyolar. Barındırmasalar bile bir sürü stack var alıp kullanabileceğiniz. Mesela TI Rtos'a bir bakın derim. Freertos'la bile kullanacağınız tonla stack var.

Ayrıca Rtos sadece Realtime gereken durumlarda kullanılır diyosunuz. Kesinlikle yanılıyosunuz. Tasarladığınız sistemi tasklara ayırmak, yaptığınız işleri daha düzenli hale getirmek için de kullanılır. Ki günümüz microcontrollerlarında baremetal kod yazmanın artık bir mantığı kalmadı.

taydin

Sanırım olayı biraz kişiselleştiriyorsunuz, o yüzden bu konuda tartışmayacağım. Sadece şunu belirteyim "şurada bu kesinlikle kullanılmaz" gibi kesin ifadeler artık günümüz gerçeklerini yansıtmıyor. Bir mühendis olarak, istenen özellikleri, istenen sürede ve istenen maliyetle sağlayabiliyorsanız, yasaları çiğnemedikten sonra HERŞEYİ KULLANMAK MUBAHTIR.
Timur Aydın (mekatronik.org)

yamak

    Hocam ben olayı kişiselleştirmiyorum.Biz de gereken durumlarda her türlü atraksiyonu yapıyoruz.
Buildroot MMU suz sistemlerde Yocto MMU lu sistemlerde kullanılır diyen sizsiniz.
    Zaten benim ilk cevabım bunun üzerineydi.

memo333

#12
Öncelikle cevaplar ve öneriler için teşekkürler. bu hafta bayağı yoğundum o yüzden önerilerinize göre güncelleme yapamadım.

@taydin

Neden Buildroot'u Yocto'ya tercih ediyorum?

Yocto'nun denediğim kadarıyla Buildroot'a göre bir avantajını göremedim.

Üreticiler destekliyor ancak;

* Build süreleri çok uzun.
* Kernel / U-Boot geliştirmelerini Yocto dışında yapıp patchleri Yocto'ya göstermek en mantıklısı ki bu sistem Buildroot'ta da aynı.
* Geriye kalan RootFS. Bu alanda Yocto'nun ekstra sunduğu bir paket yoksa Buildroot hızı ve basitliği ile öne geçiyor. 
Gömülü Linux Notları --> http://linuxedu.xyz/

foseydon

hepiniz yanlışsınız. en güzel binary. ben 10101 diye elle yazıyorum dosyaları, emek emek. en iyi yol bence bu. ayrıca en uzağa da ben şey yaparım.

nazım koç'un kitabını ben tavsiye etmem, düzenleme kötü, şekil hataları ve yazım hataları var. sitesindeki dökümanlar iyi. bence kitaba yönlendirmeyin. ha diyeceksin sen kimsin nazım hoca'nın kitabını kötülüyorsun. ben kendisine email atıp söylemiştim bunları, hak vermişti. sitedeki dökümanları kullanın hem daha güncel, hem daha düzenli demişti. latex'le yazıldığı belli güzel dökümanlar, onları tavsiye ederim.

yanlış anlamayın, bu tarz türkçe dökümanlar zaman kaybı bence. yani bu işi profesyönel seviyede yapacak adam zaten ingilizce öğrenmelidir. o yüzden ben türkçe birşey yapılacaksa, lise ve daha alt kademe öğrencilere yönelik heveslendirici birşeyler yapılmalı. zaten hevesi devam ederse, ingilizce öğrenmek için motivasyonu da oluşur.


taydin

Gömülü sistemlerde linux'tan bahsederken yocto'ya da değinmek lazım demiştim, herkes işi gücü bıraksın yocto'ya geçsin demedim  :) Amacım yocto'yu methetmek değildi. Eğer yocto ile çalışırken her sövdüğümde bir kutuya 1 TL atsam şimdiye zengin olurdum ;D

NXP nin imx6q ve imx6ul bazlı ARM işlemcilerini kullanan ve Variscite'nin ürettiği modüllerle çalışıyorum şu anda. Variscite de BSP yi ve temel OS'i yocto ile yayınlamış. Başka işlemci firmalarında da bu tercihi görmek mümkün. Bu durumda yocto kullanmak durumundayım, beğenip beğenmemem önemli değil.

Şu anda düşününce yocto ile ilgili aklıma gelen tek avantaj, buildroot'a göre paket sayısı çok çok fazla. Herkes belli bir kullanım amacına göre layer'lar yapmış, bu layer'i tanımlayıp oradaki paketleri işletim sistemine dahil edebiliyorsunuz.
Timur Aydın (mekatronik.org)