avrx RTOS

Başlatan PROTECH_, 21 Mart 2011, 12:24:56

PROTECH_

Selam,
         AvrX rtos u bir projemde kullanmayı düşünüyorum. AvrXi etkin olarak kullanabilmem için biraz örneklere ihtiyacım var.
AvrX tecrübesi olan arkadaşlar öneride bulunabilirlermi ?

Merak eden arkadaşlar AvrX hakkında aşağıdaki linkten bilgi edinebilir.
http://www.barello.net/avrx/
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

PROTECH_

      Arkadaşlar RTOS konusunda göründüğü kadarı ile pek bilgi sahibi olan kişi yok sanırım.
Ama RTOSun microcontroller yazılımında Çok önemli ve gerekli bir yeri  var.
Almanya fransa gibi avrupa ülkelerinde microcontroller yazılımı deyince akla RTOS geliyor.

RTOS un profesyonel işlerde ne derece önemli olduğunu anlamak için, sadece PC nize windows olmadan yazılım yapıp bişiler yapmayı deneyin  ;D
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

serdararikan

Alıntı yapılan: PROTECH_ - 22 Mart 2011, 16:54:04
      Arkadaşlar RTOS konusunda göründüğü kadarı ile pek bilgi sahibi olan kişi yok sanırım.
Ama RTOSun microcontroller yazılımında Çok önemli ve gerekli bir yeri  var.
Almanya fransa gibi avrupa ülkelerinde microcontroller yazılımı deyince akla RTOS geliyor.

RTOS un profesyonel işlerde ne derece önemli olduğunu anlamak için, sadece PC nize windows olmadan yazılım yapıp bişiler yapmayı deneyin  ;D

bilgilerinizi bizimle paylaşırsanız seviniriz.

mufitsozen

Alıntı yapılan: PROTECH_ - 22 Mart 2011, 16:54:04
      Arkadaşlar RTOS konusunda göründüğü kadarı ile pek bilgi sahibi olan kişi yok sanırım.
Ama RTOSun microcontroller yazılımında Çok önemli ve gerekli bir yeri  var.
Almanya fransa gibi avrupa ülkelerinde microcontroller yazılımı deyince akla RTOS geliyor.

RTOS un profesyonel işlerde ne derece önemli olduğunu anlamak için, sadece PC nize windows olmadan yazılım yapıp bişiler yapmayı deneyin  ;D

Ben PCime Linux kurdum, sahane calisiyor.

Hem bu RTOS hakkinda bildikleriniz daha duzenli bir sekilde paylassaniz bizimde isimize yarar belki.

Mesela ben PIC16f877A kullaniyorum RTOS calistirabilirmiyim?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Erol YILMAZ

PIC16 yapısı RTOS a çok uygun değil,
Ama Round Robin tarzı uygulamalar rahatlıkla yapılabiliyor...
Temel manada Novo var PIC16 da çalışabilen...

Ruslardan bi eleman vardı... bulucam adını :)

teknikelektronikci

pic avr 8051 arm icin bedava rtos sunan bi site vardi hatirlayan varmi ?
bu arada merakimdna soruyorum hadi rtosu diyelim kurduk (kuruyormuyuz bilmiyorumda) bu rtosun icin kendi kodlarimizimi ekleyecez veya rtosa nasil komut göndercez git sunu yap lcd yi sür giris cikisi kontrol et v.s
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

PROTECH_

Bildiklerim çerçevesinde, kısaca bir  giriş yapacak olursak
           
RTOS'un açılımı real time operating system dır. Açılımından da anlaşılacağı üzere bir tür işletim sistemidir.

Bir işletim sisteminin bize ne gibi faydalırı var?
          İşletim sisteminin en büyük avantajı MULTI-TASKING'dir yani birden fazla  görevi bir işlemciye  verimli bir şekilde yaptırmanızı sağlamasıdır.
          Multi-Tasking in ne olduğunu anlamak için aşağıdaki projeyi inceleyim:
   
Proje: Kombi elektronik Kontrol kartı
   Görevler:
      (1sn )      1-Keypad den girilen bilgileri alma ve tuş basılma  sürelerine göre farklı fonksiyonları çalıştırma
      (10ms)     2-istenilen verileri Display de gösterme, 7segment display tarama
      (100ms)   3-Verilen set değerlerine Uygun Matematiksel hesaplamaları yapma
                       ve giriş durumlarına göre çıkış değerlerini hesaplama ve çıkış verme
       (1ms)      4-Zamanlama işlemlerini yapma
       (1sn )      5-Buzzer sinyali üretme ve duruma göre farklı sürelerde sinyal çıkışı verme
                      .
                      :
                     vs.

Toplam tarama süresi bütün görevler çalışması gerektiğinde 2sn +111msdir
                           
        Görevlerin, 2 tarama arasındaki max süre:
                     1.görev 100ms de bir
                     2.görev 40 ms de   bir
                     3.görev  1 sn de     bir
                     5.görev   0.5 ms de bir  (1 khz lik ses sinyali için)
                               
    Yukarıda verilmiş sistemde aklıma gelen görevleri yüzeysel olarak  sıraladım.

------------------------------------------------------
Şimdi RTOSun farkını anlamanın püf noktasına geldik.

OS(operating sys.) siz bir programlama mantığı ile yani temel bir programlama mantığı ile bu işlemi yap yapmaya çalışırsak izleyeceğimiz yol kabaca şu şekilde olacaktır
             
             Başla
                   1.göreve başla bitir
                   2.göreve başla bitir
                   3.göreve
                    .
                    :
               Başa dön tekrar tara
1-)Multi tasking yapılmayan bir yazılımda bir işlem bitmeden diğer işleme geçme gibi bir durum kesmeler rutinleri dışında mümkün değildir. Bu şekilde bir sistemde uzun süren matematiksel işlemler yüzünden tarama yapmanız gereken 7segment displayde gözle farkedilir tarama gecikmeleri,  Keypad deki kısa süreli tuşa basmaları kaçırma, veya buzzerden saçma sapan sesler alma gib durumlar sözkonusu olması gayat doğaldır. Çünki bir işlem bitmeden diğer işleme başlanılmamaktadır.
Toplam işlem 2sn,111ms sürmektedir ama displayde kesintisiz görüntü için 40ms de bir taramanın bitmesi gerekmektedir. Diğer işlemlerin uzun olması displayin tarama süresini etkilemektedir.
Bu şekilde bir sistem eksikliği, profesyonel bir üründe kabul dilebilir bir veya gözardı edilebilir bir dezavantaj olma gibi bir şansı yoktur.

2-) 
Peki kabaca bir RTOS bunu ne şekilde yapardı
                         
                   Başla
                         1.göreve başla, 0.2ms sonra  kaldığın adresi sakla ve 2.göreve başla
                         2.göreve başla, 0.2ms sonra  kaldığın adresi sakla ve 3.göreve başla
                         3.göreve başla, 0.2ms sonra  kaldığın adresi sakla ve 4.göreve başla
                         4.göreve başla, 0.2ms sonra  kaldığın adresi sakla ve 5.göreve başla
                         5.göreve başla, 0.2ms sonra  kaldığın adresi sakla ve 1.göreve başla kaldığı yerden devam et           
şeklinde olur Ve bir görevin uzun sürmesi diğer görevi etkilemez ve bütün işlemler paralel olarak işlenmiş olur.
Işlenme süreleri görev sayısına göre değişmektedir, DİĞER GÖREVLERİN uzun sürmesine göre değil...


Bu örnek RTOS mantığının temelde anlaşılmasını sağlamıştır umarım.
İşin özüne indiğinizde RTOSların sağladığı:
Görev önceliği, görev silme, Zamana bağlı görevler Görev durumu gibi zengin bir TASK kontrol mekanizması sunmaktadır.

Buda hem Yazılım hazırlama süresini kısaltmakta hemde yazılımın etkin ve rahat bir şekilde işlenmesini sağlamaktadır.
Microchip te PIC18 lerin birkaç adet RTOS seçeneği mevcut.

AVR de bu imkanlar biraz daha geniş. Eğer profesyonel micro yazılımı yapmak istiyorsanız RTOS vazgeçilmeziniz olmalı.
Çünki micro yazılımlarını Belkemiği niteliğinde öneme sahiptir.

kolay gelsin                 
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

teknikelektronikci

hocam elniez saglik güzel bilgiler
peki hocam teoride tamamda pratikde adamin biri 18f icin rtosu bedava sunmus ben bunu indirdim diyelim karsima ne gibi dosyalar cikacak ben kodlarimi nereye entegre edecem ve rherseyden önce benim gene bu rtosu derlemem gerekirmi ? yoksa önce os gibi rtosu kurup daha sonra belli bir alana hex mi atilir ? bu konuda bilginiz varmi ?
Ey Türk istikbalinin evlâdı! İşte, bu ahval ve şerâit içinde dahi, vazifen; Türk İstiklâl ve Cumhuriyetini kurtarmaktır! Muhtaç olduğun kudret, damarlarındaki asil kanda mevcuttur!

PROTECH_

Alıntı yapılan: teknikelektronikci - 23 Mart 2011, 23:31:46
hocam elniez saglik güzel bilgiler
peki hocam teoride tamamda pratikde adamin biri 18f icin rtosu bedava sunmus ben bunu indirdim diyelim karsima ne gibi dosyalar cikacak ben kodlarimi nereye entegre edecem ve rherseyden önce benim gene bu rtosu derlemem gerekirmi ? yoksa önce os gibi rtosu kurup daha sonra belli bir alana hex mi atilir ? bu konuda bilginiz varmi ?

Microcontroller RTOS ları genelde bir Tamplate code olarak sunuluyor.  Projenize eklemeniz gereken ".h" ve ".c" gibi RTOS'un kodlarını import edip kendi kodlarınızı ekliyorsunuz.

Aşağıda Code blogunda avrx rtos kullnılmış bir örnek yeralmakta
//#define ENABLE_BIT_DEFINITIONS
//#define _SFR_ASM_COMPAT 1
#include <avr/io.h>
#include <avr/interrupt.h>
#include "AvrXC.h"
#include "hardware.h"

AVRX_GCC_TASK(task1, 20, 3);
AVRX_GCC_TASK(task2, 20, 2);
AVRX_GCC_TASK(task3, 20, 2);

AVRX_MUTEX(TimerSemaphore);


int main(void)
{
    AvrXSetKernelStack(0);

	MCUCR = _BV(SE);      // Initialize Timer Hardware
	TCNT0 = TCNT0_INIT;
	TCCR0 = TMC8_CK256;
	TIMSK = _BV(TOIE0);    // Enable Timer overflow interrupt

//    outp((1<<SE) , MCUCR);
//    outp(TCNT0_INIT, TCNT0);
//    outp(TMC8_CK256 , TCCR0);
//    outp((1<<TOIE0), TIMSK);

    AvrXRunTask(&task1Tcb);
    AvrXRunTask(&task2Tcb);
    AvrXRunTask(&task3Tcb);

    Epilog();                   // Switch from AvrX Stack to first task
    while(1);
}

AVRX_SIGINT(SIG_OVERFLOW0)
{
    IntProlog();
    TCNT0 = TCNT0_INIT;
//    outp(TCNT0_INIT, TCNT0);
    while(AvrXIntTestSemaphore(&TimerSemaphore) == SEM_WAIT)
        AvrXIntSetSemaphore(&TimerSemaphore);   // Flush all waiting tasks
    AvrXIntSetSemaphore(&TimerSemaphore);       // Set Semaphore (short path)
    Epilog();
}

NAKEDFUNC(task1)
{
	DDRB = 0xFF;
	PORTB = 0xFF;
//    outp(0xFF, DDRB);
//    outp(0xFF, PORTB);

    while(1)
    {
        AvrXWaitSemaphore(&TimerSemaphore);
        PORTB ^= _BV(PORTB0);
//        outp(inp(PORTB) ^ 1, PORTB);          // Toggle bits
    }
}

// Task two ping pongs between 1 and 3 priority
NAKEDFUNC(task2)
{
    unsigned char tPri = 3;
    while(1)
    {
        AvrXWaitSemaphore(&TimerSemaphore);
        tPri = AvrXChangePriority(AvrXSelf(), tPri);
        PORTB ^= _BV(PORTB1);
//        outp(inp(PORTB) ^ 2, PORTB);          // Toggle bits
    }
}

// Task three ping pongs between 4 and 0 priority

NAKEDFUNC(task3)
{
    unsigned char tPri = 0;
    while(1)
    {
        AvrXWaitSemaphore(&TimerSemaphore);
        tPri = AvrXChangePriority(AvrXSelf(), tPri);
        PORTB ^= _BV(PORTB2);
//        outp(inp(PORTB) ^ 4, PORTB);          // Toggle bits
    }
}
Multi-Core ,RTX,ThreadX, FreeRTOS, MODBUS  RTOS - Electronic-Hardware -- BERLIN

Erol YILMAZ

Alıntı yapılan: Allegro - 22 Mart 2011, 18:11:42
PIC16 yapısı RTOS a çok uygun değil,
Ama Round Robin tarzı uygulamalar rahatlıkla yapılabiliyor...
Temel manada Novo var PIC16 da çalışabilen...

Ruslardan bi eleman vardı... bulucam adını :)


OSA is a cooperative multitasking real-time operating system (RTOS) for Microchip PIC-controllers

PIC10, PIC12, PIC16, PIC18, PIC24, dsPIC, for Atmel AVR 8-bit controllers, and for STMicroelectronics STM8. 


http://www.pic24.ru/doku.php/en/osa/ref/introduction/intro#what_is_osa

mufitsozen

rus icin teşekkür.

bu OSA cooperative bir RTOSmus, o zaman CCS_Cdeki RTOS'u kullanmak daha isime gelir netekim.

Yinede faydali bilgi , alakan icin tesekkurler.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

Erol YILMAZ

Cooperative olması amacına mani mi bilmiyorum ama, CCS dekinden daha verimli old. düşünüyorum :)

Ayrıca ticari RTOS lara benzer bi yapıya sahip,
Denemeni tavsiye ederim.

mufitsozen

#12
Alıntı yapılan: Allegro - 25 Mart 2011, 18:45:28
Cooperative olması amacına mani mi bilmiyorum ama, CCS dekinden daha verimli old. düşünüyorum :)

Ayrıca ticari RTOS lara benzer bi yapıya sahip,
Denemeni tavsiye ederim.

Yav, bu rus simdi bunun icine bir tarafa komonizm filan sokusturmustur (marx/lenin filan diye variable name filan) yazdigimiz programlar mundar olmasin!  ;D

isbirlikci olmasi, butun task assignmentlarini senin excel vb ile hesaplayip design etmeni, sonrada run-time'da kontrol etmeni gerektiriyor, bana yeni bir kabiliyet katmadigi icin oyle soyledim, Aslinda PIC gibi koturum (crippled) bir mimariye sahip bir MCU icin preemptive vs birsey de beklemiyordum ama kim bilir.

Saka bir yana CCS_C nasil olsa daha cok kullaniliyor(dolayisi ile daha ayrintili dokumani var, buglarini CCS hemen duzeltiyordur vs) ve oldukca fazla fonksiyonu var, zaten PICde daha fazlasina gerek yok 16F877A kullaniyorum, problemsiz calisiyor, Daha verimli derken footprint'i daha kucuk az variable kullaniyor dersen, 1 dolar daha verip daha buyuk PIC alirim, oglen yemegindede simitsiz idare ederim, bu cagda 3-5 bytin hesabinimi yapacagiz  ;) Hem Turkiye buyuyor artik, bu kucuk hesaplari birakalim arkadaslar!  :P arm 80188 filan icinde freeRTOs kullaniyorum zaten.

Alakan icin bir kere daha tsk ederim, tabiiki bu rus vatandasin urununude download ettim, yazin bir stajiyer filan bulursam ona denetirim bakalim neler cikacak.?

Keyifli bir hafta sonu dilerim.

Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.