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 kodu 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.nı her saniye görebilirsiniz. Makinenizin yapılandırmasına bağlı olarak onu ya doğrudan konsolda ya da

$ dmesg

komutunu girerek görebilirsiniz. Programı sonlandırmak için onu çekirdekten çıkarmanız gerekir. Bunu yapmak için:

$ rtlinux stop hello

Bu 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);