Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

RTOS nedir ?

Başlatan muhittin_kaplan, 12 Ocak 2011, 21:08:27

mufitsozen

Alıntı yapılan: bunalmis - 18 Kasım 2011, 21:53:06
Preemptive calisan sistem neden daha buyuk ve komplex oluyor?

round-robin calisan bir sistem daha kucuk ve basit oldugu icin.

Einstein'da daha once belirttigi gibi gibi her sey goreceli. ;D
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mufitsozen

Alıntı yapılan: gerbay - 18 Kasım 2011, 21:56:43
preemptive çalışan sistemler daha büyük ve complex değil..   ticari rtos lara bakın, hepsi default olarak preemptive ayarlı.. VxWorks olsun, Integrity olsun piyasayı elinde tutanlar o şekilde..

tabi round robin enable etme seçeneği de var. Hatta VxWorks kendi yazdığınız scheduler ı da kullanabilecek şekilde tasarlanmış..

ve VxWorks gibi microkernel kullanan RTOSlarda istenmeyen fonksiyonlari vs sisteme dahil etmeden kernelin daha kucuk yada buyuk oldugunu.

Istersen degisik opsiyonlar ile VxWorksun boyutlari nasil degisiyor bir dene.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

z

VxWorks anladigim kadariyla unlu RTOS'lardan. Peki bu, CM3 islemciler icin kullanilmak istendiginde preemptive calisacak sekilde kurgulandiginda RTOS'un kendisi kac kb yer kapliyor.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

VxWorks'un CM3 uygulamalarinda CPU'ya getirdigi yuku, gecis zamanlari, ram rom ihtiyaci gibi bilgileri nasil ogrenebilirim?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

vsalma

Vxworks ve Integrity i öğrenme amaçlı lisans satın almadan ücretsiz şekilde deneyebilir miyim? Bu osları çalıştıracak bilinene boardlara mı bakmalıyım yoksa herhangi SBC a konfigure edilmesi kolay mıdır? 

muhittin_kaplan

Başka Konu Açmak istemedim.
Android işletim sistemi bir  RTOS mudur
evet se nereden biliyoruz ?
hayırsa nereden biliyoruz ?

muhittin_kaplan

teşekkür ederim.
Hocam Wx in yanından geçememesi mi sizi bu "Değildir" yargısına ulaştırdı?
Zondroid altında RT-Linux mu var Linux mu

Erol YILMAZ

ChibiOS RT hakkında ne düşünürsünüz ?

Gördüğüm kadarı ile ciddi şekilde geliştirilmiş ve dökümantasyonu yapılmış.

http://www.chibios.org/dokuwiki/doku.php?id=start

Alıntı YapEfficient and portable preemptive kernel.
Best in class context switch performance.
Many supported architectures and platforms.
Static architecture, everything is statically allocated at compile time.
Dynamic extensions, dynamic objects are supported by an optional layer built on top of the static core.
Rich set of primitives: threads, virtual timers, semaphores, mutexes, condition variables, messages, mailboxes, event flags, queues.
Support for priority inheritance algorithm on mutexes.
HAL component supporting a variety of abstract device drivers: Port, Serial, ADC, CAN, EXT, GPT, I2C, ICU, MAC, MMC, PWM, RTC, SDC, SPI, UART, USB, USB-CDC.
Support for external components uIP, lwIP, FatFs.
Extensive test suite with benchmarks.

fatihinanc

Alıntı yapılan: Allegro - 16 Mart 2012, 21:40:21
ChibiOS RT hakkında ne düşünürsünüz ?

Gördüğüm kadarı ile ciddi şekilde geliştirilmiş ve dökümantasyonu yapılmış.

Ben bir yerde daha rastlamıştım bu RTOS'a. Fakat inceleme şansım olmadı maalesef.
Ama ilk izlenimlerim iyi gibi. Yani en azından dediğiniz gibi dökümantasyonu çok sağlam...
Genellikle örnekler ve anlatım hep açık kaynak IDE ler üzerinden gidiyor ama IAR ve Keil destekleri de var.

STM32F4 Discovery üzerinde bir örneği de var sitede. Bu örneği deneyen oldu mu ?
http://www.chibios.org/dokuwiki/doku.php?id=chibios:articles:stm32f4_discovery
Kainat dediğimiz kitap, yazıldığı dil ve harfler öğrenilmedikçe anlaşılamaz.  (Galileo Galilei)

mcan

Rtos kullanirken tasklar arasi veri aktarimi icin global değişken kullanıyorum ancak  bazı tasklarda sanki bu global değişken hiç değişmiyormuş yada yerel static bir değişkenmiş gibi davranıyor... Tasklar arası veri aktarımı için global değişken uygun değilmidir?

Erol YILMAZ

@mcan,
hangi rtos ve derleyici bu?

mcan

#101
Alıntı yapılan: Allegro - 17 Mart 2012, 10:16:18
@mcan,
hangi rtos ve derleyici bu?
hocam rtx kullanıyorum derleyici de keil-uv4, yazdığım ilk programda çakıldım probleme denk geldim. Problemi  sizin açtığınız başlıkda (Başka bir RTOS: Keil RTX) da yazdım ancak probleme dair bişey bulamadım ayrıca "keil rtx delay problemi" adlı başlıkda da global değişkenlerden kaynaklandığını düşündüğüm başka garip bir olay ile karşılaştım.Global kullanılırmı kullanılmaz mı anlayamadım.Amacım program yazarken cpu nun kullanım yüzdesinin gösteren ufak bir yardımcı program yazmaktı, yazdım çalışıyor fakat bazı durumlarda sapıtıyor mantıksız çalışıyor.

Erol YILMAZ

Mantıken verilerin hepsi taşınacak diye birşey yok...
RTX ile pek bir deneyimim olmadı açıkçası...

Problem noktasını iyice yakalamaya çalışırsan çok iyi olur.

z

Alıntı yapılan: mcan - 17 Mart 2012, 11:51:52
hocam rtx kullanıyorum derleyici de keil-uv4, yazdığım ilk programda çakıldım probleme denk geldim. Problemi  sizin açtığınız başlıkda (Başka bir RTOS: Keil RTX) da yazdım ancak probleme dair bişey bulamadım ayrıca "keil rtx delay problemi" adlı başlıkda da global değişkenlerden kaynaklandığını düşündüğüm başka garip bir olay ile karşılaştım.Global kullanılırmı kullanılmaz mı anlayamadım.Amacım program yazarken cpu nun kullanım yüzdesinin gösteren ufak bir yardımcı program yazmaktı, yazdım çalışıyor fakat bazı durumlarda sapıtıyor mantıksız çalışıyor.

Anladigimdan degil ama kafa yormaya calisalim.

Sozkonusu global degiskene ulasan tasklari buraya koyabilirmisin? Bir de bu degiskenin tipinin ne oldugunu bilelim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mcan

#104
Alıntı yapılan: z - 17 Mart 2012, 13:46:02
Anladigimdan değil ama kafa yormaya calisalim.

Sozkonusu global degiskene ulasan tasklari buraya koyabilirmisin? Bir de bu degiskenin tipinin ne oldugunu bilelim.

*---------------------------------------------------------------------------*/
__task void InitTasks (void) {

  	id2 = os_teşekkür_create (task2, 1);
	id1 = os_teşekkür_create(Cycler, 1);
  	os_tmr_create(100,33);    
	os_teşekkür_delete_self();

}


/*----------------------------------------------------------------------------
 *   Cycler:  RTX Kernel starts this task with os_teşekkür_create (Cycler, 1)
 *---------------------------------------------------------------------------*/
__task void Cycler (void) {
	for (;;) 
	{
	temp_cpu_load++;
	
	}
}


/*----------------------------------------------------------------------------
 *   Task 2:  RTX Kernel starts this task with os_teşekkür_create (task2, 1)
 *---------------------------------------------------------------------------*/
__task void task2 (void) {
  for (;;) {

	if(timer_exp==33)
	{
		temp_cpu_load = 0;
		timer_exp=0;
	  	os_tmr_create(100,33);
	}

  }
}

Tasklar bunlar

char timer_exp = 0;
volatile unsigned int temp_cpu_load=5,cpu_load=0;

Değişkenler bu şekilde tanımlı.

/*--------------------------- os_tmr_call -----------------------------------*/

void os_tmr_call (U16 info) {
  /* This function is called when the user timer has expired. Parameter   */
  /* 'info' holds the value, defined when the timer was created.          */
  cpu_load = temp_cpu_load;	
  temp_cpu_load = ((8727024-cpu_load)/87270);
  printf("Cpu Loads =%%%u , %u\r\n",temp_cpu_load,cpu_load);	
  timer_exp = 33;
  /* HERE: include optional user code to be executed on timeout. */
}
timer fonksyonu bu şekilde tanımlı.

Program her saniyede bir şu çıktıları sırası ile veriyor
Cpu Loads =%48 , 4497944<CR><LF>
Cpu Loads =%49211 , 8995884<CR><LF>
Cpu Loads =%49160 , 13493824<CR><LF>
Cpu Loads =%49108 , 17991764<CR><LF>
Cpu Loads =%49057 , 22489704<CR><LF>
Yani sayaç olarak kullanılan değişken hiç sıfırlanmıyor .Program her saniyede bir çıktı verdiği için os_timer doğru çalışıyor.
Çıktılardan sadece ilki doğruya yakın onuda rtos düzgün çalışsa kalibre ederim, tasklar aynı öncelikli round robin devrede dolayısıyla işlemcinin %50 vaktinde sayması gerekiyor.Çıktı olarak %48 almışım.

Not: verdiğim kodda teşekkür diye bir kelime yok ancak t s k harfleri yan yana gelince onu teşekküre çeviriyor.