Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Kernel Standartları

Başlatan Farukc, 14 Haziran 2014, 08:22:47

Farukc

Öncelikle herkese merhaba uzun bir aradan sonra yine başınızı ağrıtmaya geldim :D. Malum okul sezonu dersler falan insan ilgilenemiyor.

Okul zamanlarında hafta sonları uğraşarak kendimi geliştirmek için yazılımlar yazıyordum. Geçen günde kernel kodlarına bir merak sardım ve basit bir kernel yaptım. Fakat yazdığım kernel i586 içindi.

Aklıma takılan soru şu en basitinden biz gömülü programlama yaparken her kart için ayrı ayrı yazılımlar yazıyoruz. Örneğin bir led blink projesi için Stm32f4 için ayrı TM123G için ayrı yazılım yazıyoruz. Ama bir linux kerneli derlerken raspberry pi için ve beagle bone için ayrı bir yazılım yazmıyoruz. Mesela kernel ayarlarını yaparken ARM platformunu ve cortex serisini seçtikten sonra derleme oluyor. Ama bize frima ve model sormuyor.

Sormak istediğim özetle şu; Register adresleri gibi şeyler farklı iken bu linux kerneli nasıl oluyor da bunları yönetebiliyor. Yada benim fark edemediğim bir yerde her model için ayrı ayrı config dosyalarımı var. Varsa kullandığımız kernelin hangi modele göre derleyeceğini nasıl anlıyor. Veya ARM platformu için bir standart mı var?

Saygılar..

Tagli

Kernel kodunu internetten indirip bakarsan, /arch diye bir klasör görürsün. Kernelde mimariye bağımlı kodlar burada bulunur. Kullandığın işlemciye göre farklı kodlar derleme işlemine dahil edilir. Zaten kernel derlemeden önce config işlemi yapılmasının sebeplerinden biri de bu.
Kullanıcı tarafından çalıştırılan programlar da zaten mimariye göre derleniyor. Ancak bunların donanım ayrıntılarını bilmelerine gerek yok, zaten bunlara doğrudan erişemezler de. Bunun için sistem çağrısı yapmaları gerekir. Yanlış bilmiyorsam, bunlar o platform için derlenmiş standart c kütüphanesi aracılığı ile yapılıyor. glibc olarak da bilinir.
Gökçe Tağlıoğlu

MC_Skywalker

şurası kernel hakkında belki yardımcı olabilir 

Anatomy of the Linux kernel  http://www.ibm.com/developerworks/library/l-linux-kernel/

Farukc

Alıntı yapılan: Tagli - 14 Haziran 2014, 14:52:36
Kernel kodunu internetten indirip bakarsan, /arch diye bir klasör görürsün. Kernelde mimariye bağımlı kodlar burada bulunur. Kullandığın işlemciye göre farklı kodlar derleme işlemine dahil edilir. Zaten kernel derlemeden önce config işlemi yapılmasının sebeplerinden biri de bu.
Kullanıcı tarafından çalıştırılan programlar da zaten mimariye göre derleniyor. Ancak bunların donanım ayrıntılarını bilmelerine gerek yok, zaten bunlara doğrudan erişemezler de. Bunun için sistem çağrısı yapmaları gerekir. Yanlış bilmiyorsam, bunlar o platform için derlenmiş standart c kütüphanesi aracılığı ile yapılıyor. glibc olarak da bilinir.

Anlaşılan pek demek istediğim anlaşılmamış. Stm32 de TM4c123g 'de ARM mimarisi olmasına rağmen farklılıkları var ikisinin kodları birbirinde çalışmıyor. Bunun en temel nedeni de register adresleri vektör tabloları falan..

Peki bunlar farklı iken linux veya başka bir kernel derlenirken mimariyi seçmemize rağmen bizden işlemci modelini veya vektör tablosu gibi şeyleri istemiyor. Peki bunları neye göre ayarlıyor?

Farukc