Baking Pi eğitimlerini zaten buldum , ancak sadece montaj dilini kullanıyorlar . İlk dersleri takip ettim ama onun yerine C'yi nasıl kullanacağımı merak ediyorum. Yani, daha üst düzey diller icat etmelerinin bir nedeni var. Ben sadece bir nesne ( .o
) dosyasına C kodunu derleme, derleme çalıştı
.section .init
.globl _start
_start:
bl main
loop$:
b loop$
başka bir nesne dosyasına ve onları birbirine bağlamak ve böylece elde kernel.img
. Daha sonra zaten var olan çekirdeği kendi ile değiştirdim, ancak C kodunu yürütmüyor. Yazdığım C kodu sadece OK LED'ini açmalı ve sonra geri dönmelidir (sonra gelir loop$: b loop$
). Ancak OK LED'i birkaç kez rastgele yanıp söner ve ardından sönük kalır. İşte benim C kodum:
int main(int argc, char ** argv) {
volatile unsigned *gpioAddr = (volatile unsigned *)0x20200000;
*(gpioAddr + 4) = 1 << 18;
*(gpioAddr + 40) = 1 << 16;
return 0;
}
Raspberry Pi'de işletim sistemi geliştirmek için C'yi nasıl kullanabilirim?
(Ben sadece bir hobisi olmasına rağmen) kodda bir hata olduğundan şüpheliyim. C kurulumunun karmaşık olabileceğinin farkındayım, ancak bunu yapan ilk kişi ben değilim. AFAIK, şu anda baskın olan tüm işletim sistemleri çoğunlukla C ile yazılmıştır, bu yüzden süreci açıklayan bir makale olmalıdır. Ben de bir adım listesi ile çok mutlu olurdu, bu yüzden bu adımlar için google ve belki biraz daha az geniş bir soru sorabilirsiniz.
Not: Yukarıdaki C kodunun ARM montaj eşdeğeri gayet iyi çalışıyor. LED'i açar (biraz yanıp söndükten sonra). Ahududu Pi'imin iyi olduğunu gösteren (umut) düşünüyorum.