Picproje Elektronik Sitesi

BİLGİSAYAR => Linux => Konuyu başlatan: memo333 - 15 Eylül 2019, 10:53:11

Başlık: Gömülü Linux Notları
Gönderen: memo333 - 15 Eylül 2019, 10:53:11
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 (https://linux-readdocs.readthedocs.io/en/latest/index.html)


Başlık: Ynt: Gömülü Linux Notları
Gönderen: SpeedyX - 15 Eylül 2019, 13:04:22
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: Gediz1337 - 15 Eylül 2019, 15:39:28
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: OptimusPrime - 16 Eylül 2019, 00:08:23
@memo333

BSP tanimlamasi dogru degil.  ::)

Bu arada soyle yuzeysel bir baktigimda faydali bir icerigi oldugunu gordum. Ellerine saglik  ::ok 
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 16 Eylül 2019, 00:24:00
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: OG - 17 Eylül 2019, 06:55:08
https://www.picproje.org/index.php/topic,76064.0.html
siteyi bu başlığa da ekleyebilirsiniz.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: yamak - 17 Eylül 2019, 10:18:17
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ı
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 17 Eylül 2019, 11:20:28
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 17 Eylül 2019, 11:29:51
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: yamak - 17 Eylül 2019, 13:24:45
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ı.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 17 Eylül 2019, 13:38:24
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: yamak - 17 Eylül 2019, 13:41:14
    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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: memo333 - 21 Eylül 2019, 22:16:33
Ö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. 
Başlık: Ynt: Gömülü Linux Notları
Gönderen: foseydon - 21 Eylül 2019, 23:00:13
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.

Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 21 Eylül 2019, 23:03:16
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.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 21 Eylül 2019, 23:07:34
Ama yoctonun sevmediğin yönlerini say dersen, bir dokunursun bin ah işitirsin :) Dediğin gibi build süreleri çok uzun. Ben onu, 8 çekirdek, 16 thread olan bir işlemcili PC alarak çözdüm. Normalde bir buçuk saat süren build, 20 dakikaya indi.

Bunun dışında, en temel işletim sistemini build ediyorsun, oluşturduğu yan çıktılar 50 GB!

Kernel/u-boot için patch kullanmıyorum. Hem kernel hem u-boot üzerinde geliştirme yapmamız gerekiyor, o yüzden bunlar için ayrı git repo oluşturuyorum. Variscite'nin repo'larını da upstream olarak tanımlayıp arada bir bakıyorum neler yapmışlar. Gerektiğinde de merge/rebase veya charry pick ile alıyorum lazım olan şeyleri.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: taydin - 21 Eylül 2019, 23:15:54
Alıntı yapılan: foseydon - 21 Eylül 2019, 23:00:13yanlış 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.

Evet herkes ingilizceyi bilmeli ki var olan kaliteli ingilizce kaynaklardan yararlanabilsin. Ama ülkemizde ingilizce seviyesi düşük olmaya devam ediyor. Bu durumda iki seçenek var: Ya birbirimiz sırtını sıvazlayıp "evet haklısın, şunlar bir türlü ingilizceyi öğrenemedi" deyip şikayet edeceğiz, veya kaliteli türkçe doküman oluşturup o dokümanlarla birşeyler yapılabilmesini sağlamamız lazım.

Hatta onunla da kalmayıp, bizim dil kurumunun ingilizce teknik kavramların Türkçe karşılıklarını bulup yaygınlaştırması lazım.

Bu açıdan olaya bakınca Nazım bey'in yaptığı iş, o bahsettiğin hatalara rağmen çok değerlidir. Vatana hizmet etmenin en güzel örneğidir.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: OptimusPrime - 22 Eylül 2019, 02:36:32
@foseydon
Oldum bittim noktasinda kesinlikle degiller. Bu ise baslamak isteyen ingilazca bilenler icin bile hatiri sayilir bir kaynak.
Başlık: Ynt: Gömülü Linux Notları
Gönderen: memo333 - 29 Eylül 2019, 11:28:38
@SpeedyX
@OptimusPrime

Uyarılarınız üzerine değişiklikler yaptım teşekkürler.

@Gediz1337

Aklımda 3-5 kişilik bir ekip olarak gönüllülük esasıyla dökümanı geliştirmek. Dökümana eklenecek konular daha var, örneğin sıfırdan bir Device Tree dosyası nasıl oluşturulur derlenir?

Eğer sizin için uygun olursa sadece bir github hesabıyla bu dökümana katkıda bulunabilirsiniz.

İngilizce konusunda başka bir arkadaş daha yazmış, katılıyorum İngilizce olmadan teknik alanlarda ilerlemek zor/imkansız ancak eğitim sisteminde hazırlık sınıflarını kaldıran ben değilim. Üniversitede ders verdiğimde durumun vahameti beni çok ama çok üzmüştü. Zaten bence artık İngilizce ve Araştırma Yapabilme okulların ilk önceliği olmalı.

Dökümana iki örnek daha ekledim, deneyebilen olursa sevinirim.

Son olarak dökümana isim arıyorum uygun olursa domain'de alacağım, şu haliyle ben bile bookmark ile gidebiliyorum.