2010-02-03 19 views
14

Birisi, basit bir önyüklenebilir merhaba dünya programı oluşturmak için hangi yol/adımların atılacağı konusunda bana rehberlik edebilir mi? C/C++ ile ilgili temel bilgilere sahibim.Basit önyüklenebilir C programı oluşturmaya başlama

Amacım, çok basit işletim sistemi oluşturmaktır.

Mümkün olduğunca çok referans ve örnek ile alakalı bağlantılar istiyorum.

+3

Önyükleyici terimi için arama yapın. Çevrimiçi mevcut kaynaklar ton. Bakınız: http://www.codeproject.com/KB/tips/boot-loader.aspx – dirkgently

+0

Buradaki büyük sorunun "hangi işlemcide?" Olacağını düşünüyorum. Çoğu durumda, bu işlemcinin bir fikir edinmek için bir önyükleyiciye bakmanızı öneririm - ve evet, programın gerçekten tek başına olmasını istiyorsanız, bazı montajcıları, temel çıktı rutinlerinizi, vs. yazacaksınız. –

+0

Biraz ilgili http://stackoverflow.com/questions/2145501/writing-an-operating-system-in-c/2145556#2145556 – sud03r

cevap

5

Bkz. this. Çok temel bir önyükleyici için bir öğretici. C/C++ ile ilgisi yok, ama bir bootloader'ın temel yapı taşları hakkında gerçekten iyi bilgiler var.

Yapı taşlarını gerçekten merak ediyorsanız, ders kitapları biçiminde daha fazla kaynak var. Bu eğitici, örneğin, önyükleyicinin neden 55 AA ile bitmesi gerektiğini açıklamıyor. Ayrıca, nispeten dar.

+1

OSdever.net'in bağlantısı için teşekkürler. Herhangi birinin soruları varsa, forums.osdever.net adresini deneyin. Birbirimize yardım etmek konusunda oldukça iyiyiz;) – Brenden

+1

Bu cevap gerçekten SO'nun ruhu değil. Geç kaldım, biliyorum. – corazza

0

Statik olarak bağlantılı bir ikili oluşturmak istiyorsunuz (ld.so içermiyor) ve başlangıç ​​noktasına atlayarak başlatabilirsiniz. Giriş noktası genellikle .txt bölümünün başlangıcıdır. Maye, adresini bulmak için objdump --section-headers image'u çalıştırın.

Yerleşik bir aygıtta çalışmaya çalışıyorsanız, yerleşik bir işletim sisteminin çekirdeğinin nasıl oluşturulduğunu ve önyüklendiğini kontrol edin. Örneğin, U-Boot'ın bir Ångström linux tabanlı sistemi nasıl oluşturduğuna bakın.