Hocam burayı okursam bir şey öğrenir miyim? The Linux Kernel API

Telefona ait tuşlar için, dokunmatik ekran için, ses entegresi için, GSM için vs. sürücü yazmak gerekli. Her cihazda farklı olan donanımları seçtim çünkü bu saydıklarımın çoğu zaman Android sürücüsünü Linux karşılamaz, üreticiler yazar. İlk test telefonunuz için mesela sürücü yazabilirsiniz datasheet okuyarak ve elektronik hakkında bilginiz varsa takımca.

Koskoca canonical ve Samsung'un yapamadığını bir ekibin yapması imkansız gibi gözüküyor ama yine de deneyebilirsin. Ya da açık kaynaklı olan mobil Linux'ları çatallayarak başlayabilirsin. Mesela Ubuntu touch var. Onun kaynak kodları ile oynayabilirsin. Ubuntu touch projesini diğer aygıtlara portlamakta mantıklı. Son düzenleyen: Moderatör: 28 Mayıs 2021

Linux çekirdeğini kullanarak mobil için işletim sistemi yapmak istiyorum aşamaları neler? İlk ne yapacağım mesela kernel yükledikten sonra ne yapacağım? Detaylı anlatabilir veya doküman atabilir misiniz? Not: Tek başıma yapmayacağım.

Bir sürü datasheet var hangisine bakayım hangisine bakmam daha iyi olur?

Senin yerinde olsaydım bir tane Raspberry Pi veya türevi bir makine alırdım. Bu makineye GPIO ile düğme gibi basit şeyler bağlar ve sürücüsünü yazardım. Örneğin GPIO pinindeki düğmeye basıldığında X eyleminin yapılması için bir sürücü. Böyle böyle sürücü yazmayı ve bir yandan elektroniği öğrenirdim. Düşük seviyeli koda inmek zorundasın çünkü gömülü Linux alanına gireceksen.

@TerabyteForever hocam telefon açılmadı maalesef kullandığın IPad'imin datasheetine baksam ona sürücü yazsam IPad'te sorun çıkar mı? Ve parçaların datasheetini nasıl öğrenebilirim?

Aslında evde gereksiz bir telefon var ona yapabilir miyim olur mu? Ve diyelim ki sürücü yazmayı öğrendim sonraki aşama ne olur? Ve sürücüyü yazmak için ne gibi kütüphaneler lazım? Projelere baksam öğrenir miyim?

Boşta duran telefonun merak ettiğin parçalarının datasheet'ine bakabilirsin. Daha sonra eğer Linux'ta sürücüsü varsa o sürücüye bakabilirsin.

Dostum dediğim gibi bu işle uğraşmak için önce datasheet okumayı bilmelisin. Donanımın hangi durumda nasıl davranacağını sana datasheet'ler söyler. Attığın faydalı bir referans tabii ki fakat önce elindeki donanımın nasıl çalıştığını bilmelisin sürücü yazmak için.

Baştan yapmak yerine var olanlara destek vermek daha iyi bir fikir olabilir. Ubuntu Touch'u diğer cihazlara portlayabilirsiniz. Introduction to porting - UBports documentation

O benim için pek sıkıntı olacağını sanmam. Android ve onun gibi dağıtımlara bakar bir şey öğrenirim. Ama nasıl başlayacağım onu bilmiyorum.

Bir donanımın nasıl davrandığını bilmiyorsan o donanıma sürücü yazamazsın. Bundan dolayı da datasheet okuman gerekli, tabii datasheet okuyabilmek için de belirli bir elektronik bilgisi gerekiyor. Kütüphane kullanamazsın, sadece kernel API'lerini kullanabilirsin. printf gibi C standart kütüphane fonksiyonlarını bile kullanamazsın, onun yerine kernel'e günlük yazmak için printk kullanabilirsin. Bu yaptığın sürücü ile Linux çekirdeği aynı seviyede çalışıyor, nasıl ki çekirdeğin kendisi C standart kütüphanesi kullanamıyorsa sen de kullanamazsın. Fakat bu geliştirdiğin sürücüler ile Linux çekirdeğine aslında katkıda bulunuyorsun ve CV'ne yazabileceğin bir beceri olmuş oluyor sürücü yazmak. Eğer nasıl çalıştığını bildiğin bir donanım varsa onun sürücüsünü okuyabilir ve sürücü yazmaya ufak adımlar atabilirsin.