Free RTOS Free RTOS Port Balant noktalar Free
Free. RTOS
Free. RTOS Port – Bağlantı noktaları • Free. RTOS, yaklaşık yirmi farklı derleyici ile oluşturulabilir ve otuzdan fazla farklı işlemci mimarisinde çalışabilir. • Her desteklenen derleyici ve işlemci bileşimi ayrı bir Free. RTOS bağlantı noktası olarak kabul edilir.
Free. RTOS projemize nasıl eklenir? • Free. RTOS, çoklu görev yetenekleri sağlayan bir kütüphane olarak eklenmektedir. • Free. RTOS, bir C kaynağı dosyası seti olarak sağlanır. • Bazı kaynak dosyaları tüm bağlantı noktaları için ortaktır, bazıları ise bir bağlantı noktasına özgüdür (yani mimariye veya işlemciye özgüdür). • Free. RTOS API'yi uygulamanız için kullanılabilir hale getirmek için projenizin bir parçası olarak kaynak dosyaları olarak eklenmesi gerekmektedir.
Free. RTOSConfig. h • Free. RTOS, Free. RTOSConfig. h adlı bir başlık dosyası tarafından yapılandırılır. • Free. RTOSConfig. h, Free. RTOS'u belirli bir uygulamada kullanılmak üzere uyarlamak için kullanılır. • Örneğin, Free. RTOSConfig. h, • config. USE_PREEMPTION gibi sabitler içerir; bu ayar, birlikte çalışan veya öncelikli zamanlama algoritmasının kullanılıp kullanılamayacağını tanımlar.
Tüm Portlar için Ortak Free. RTOS Kaynak Dosyaları • task. c • Görevlerin tanımlamak için hizmetleri sağlar. • queue. c • hem kuyruk hem de semafor hizmetleri sağlar. • queue. c neredeyse her zaman gereklidir. • timers. c • yazılım zamanlayıcı işlevselliği sağlar. • event_groups. c • etkinlik grubu işlevselliği sağlar. • croutine. c, Free. RTOS ortak rutini işlevselliğini uygular.
Free. RTOS Veri Türleri • Tick. Type_t • Free. RTOS, işaret kesmesi olarak adlandırılan sürekli bir kesmeyi yapılandırır. • Free. RTOS uygulamasının başlamasından bu yana meydana gelen işaret kesintileri sayısı işaret sayısı olarak adlandırılır. • İşaret sayımı, zamanın bir ölçüsü olarak kullanılır. • İki işaret kesintisi arasındaki zaman işaret periyodu olarak adlandırılır. Zamanlar işaret sürelerinin katları olarak belirtilir. • Tick. Type_t, işaret sayısının değerini tutmak ve zamanları belirtmek için kullanılan veri türüdür. • İşlemcinin mimarisine göre, Tick. Type_t, config. USE_16_BIT_TICKS=1 ise uint 16_t, config. USE_16_BIT_TICKS=0 ise uint 32_t
Free. RTOS Veri Türleri • Base. Type_t • Bu mimari için en etkili veri türü olarak tanımlanır. Tipik olarak, bu 32 bit mimaride 32 bit, 16 bit mimaride 16 bit ve 8 bit mimaride 8 bit türdür. • Base. Type_t genellikle sadece çok sınırlı bir değer aralığı alabilen dönüş türleri ve pd. TRUE / pd. FALSE tipi Boole için kullanılır. • Char • Free. RTOS kaynak kodu, char'ın her türlü kullanımını "işaretli" veya "işaretsiz" olarak kabul eder. • Düz int türleri asla kullanılmaz.
Değişken İsimleri • Değişkenler ön eklidirler. • • • Char için “c”, int 16_t(short) için “s”, int 32_t (long) için “l”, Basetype_t ve standart olmayanlar için “x” Eğer işaretsiz değişken kullanılacaksa başına “u” gelir. Eğer pointer kullanılacaksa «p» öneki • Örneğin uint 8_t için “uc” kullanılır. • Charın pointerı için “pc” kullanılır.
Fonksiyon isimleri • Fonksiyonlar, hem döndürdükleri hem de içinde tanımlandıkları dosya ile öneklenir. • Örneğin; • v. Task. Priority. Set(), void döndürür, task. c içinde tanımlıdır. • x. Queue. Receive(), Base. Type_t tipinde geri değer döndürür, queue. c içinde tanımlıdır. • pv. Timer. Get. Timer. ID() , voide pointer değer döndürür, timer. c içinde tanımlıdır. • Dosya kapsamı fonksiyonu private ise “prv” ile öneklendirilir.
Makro isimleri • Makroların çoğu büyük harfle yazılır ve makronun nerede tanımlandığını gösteren küçük harflerle öneklenir. Tablo da, öneklerin bir listesini sağlar. port (for example, port. MAX_DELAY) portable. h or portmacro. h task (for example, task. ENTER_CRITICAL()) task. h pd (for example, pd. TRUE) projdefs. h config (for example, config. USE_PREEMPTION) Free. RTOSConfig. h err (for example, err. QUEUE_FULL) projdefs. h • Tablo da tanımlanan makrolar, Free. RTOS kaynak kodu boyunca kullanılmaktadır. pd. TRUE 1 pd. FALSE 0 pd. PASS 1 pd. FAIL 0
Bazı Tanımlar •
Bazı Tanımlar • Preemption (Öncelik hakkı) - daha düşük öncelikli bir görev zaten çalışırken, daha yüksek öncelikli bir görev çalışacak şekilde ayarlandığında oluşur. Yüksek öncelikli görev düşük önceliği engeller ve yüksek öncelikli görev tamamlanmaya çalışır (daha yüksek öncelikli bir görev tarafından önlenmediyse). • Release time – Görevin geliş zamanı– görevin bir örneğinin çalışmaya hazır olduğu süre, • Deadline - Bir sistemin tüm zamanlanmış görevlerini yerine getirmeyi bitirmesi gereken bir bitiş zamanı. Bitiş süresi kaçırmanın türe göre faklı sonuçları vardır. • Hard Deadline : kaçırılması halinde sistemde tam bir arıza olacağı süre (örneğin, hava yastığının geç açılması kullanıcıyı öldürebilir) • Soft Deadline : Bitiş süresi kaçırıldığında bir ceza oluşan zaman, sistemi optimize etmeyi gerektirebilir. (örneğin, bir MP 3 çalar bitiş süresini kaçırırsa “boşluk” oluşturabilir, ancak sistem hala çalışır)
Bazı Tanımlar • Priority (Öncelik) - her göreve atanan önem derecesi; görevlerin birbirini yürütme / engelleme sırasını belirler; öncelikler genellikle 2 ana yolla belirlenir. • statik planlama politikası - öncelikler, tasarım zamanında kullanıcı tarafından belirlenir ve sabit kalır • Dinamik programlama politika - öncelikleri program yürütme sırasında değişebilir ve öncelik ataması kullanıcı tarafından değil programlayıcı tarafından gerçekleştirilir. • Kritik an - sistemdeki tüm görevlerin aynı anda yürütülmeye başlamaya hazır olduğu an.
- Slides: 13