Derleme ve Çalıştırma
Önceki RTLinux için Modül Geliştirme NASIL Sonraki
Derleme ve Çalıştırma
hello.c programını çalıştırmak için (tabii ki RTLinux açılışından sonra) aşağıdaki adımları sırası ile yapmalısınız:
  1. GCC derleyicisini kullanarak kaynak kodunu derleyip bir modül oluşturun. Birşeyleri basitleştirmek adına bir Makefile oluşturmak daha iyidir. Böylece kodu derlemek için tek ihtiyacınız make yazmak olacaktır.
    Aşağıdaki satırları Makefile isimli bir dosyaya yazarak Makefile'ı oluşturabilirsiniz:
    include rtl.mk
    all: hello.o
    clean:
        rm -f *.o
    hello.o: hello.c
        $(CC) ${INCLUDE} ${CFLAGS} -c hello.c
    
  2. rtl.mk dosyasını hello.c ve Makefile ile aynı dizinin içine kopyalayın. rtl.mk dosyası, kodu derlemek için gerekli bütün seçenekleri içeren bir başlık dosyasıdır. Bunu RTLinux kaynak ağacından kopyalayabilirsiniz ve hello.c dosyasının yanına koyabilirsiniz.
  3. Kodu derlemek için 'make' komutunu kullanın:
    $ make
    
  4. Oluşan ikilik nesne dosyası RTLinux tarafından çalıştırılacak çekirdeğe eklenmelidir. Bunun için 'rtlinux' komutunu kullanmak gerekir (tabii önce 'root' olmak gerekir).
    # rtlinux start hello
    
Artık hello.o programının iletisini saniyede bir yazdırması izleyebiliyor olmalısınız. Makinenizin yapılandırmasına bağlı olarak çıktıyı konsolda doğrudan ya da
$ dmesg
komutunu girerek görebilirsiniz. Programı sonlandırmak için modülü çekirdekten ayırmanız gerekir. Bunu yapmak için:
$ rtlinux stop hello
Modülü eklemek ve çıkarmak için diğer bir yol da sırayla insmod ve rmmod kullanmaktır.
Burada örnek programımızı çok basit yaptık. Gördüğümüzün aksine burada bir programda çok sayıda evre olabilir. Öncelik evre oluşturulurken belirtilebilir ve daha sonra değiştirilebilir. Ayrıca kullanılacak işlemci zamanlama algoritmasını da seçebiliriz. Aslında kendi zamanlama algoritmamızı kendimiz yazabiliriz!
Örneğimizde, evreye öncelik olarak 1 verebilir ve evre_kodu() işlevinin başlangıcına aşağıdaki satırları ekleyerek FIFO zamanlamasını seçebiliriz :
struct sched_param p;
p.sched_priority = 1;
pthread_setschedparam (pthread_self(), SCHED_FIFO, &p);
Önceki Üst Ana Başlık Sonraki
RTLinux Programları Yazmak Başlangıç Süreçlerarası İletişim
Bir Linux Kitaplığı Sayfası