Bu kadar Kolay Olamaz.

Başlatan muhittin_kaplan, 18 Kasım 2012, 20:53:36

yamak

Hocam RTX_RTOS da "run in privileged mode" diye bi olay var eğer bu aktifse interrupt oluştuğunda interrupt rutinine girer. Eğer bu mode aktif değilse interruptlar çalışmıyo.

muhittin_kaplan

Buradan devam Edeyim.

Anladım Benim gibi BAsit düzeyde Bu işi Öğrenmek isteyen biri için RTOS+Interrupt un Olmadığını anladım. Terimler üzerinden gitmeyi düşünüyorum

Mutex nedir ?

Semaphore Nedir ?

Bunlara neden nezaman ihtiyaç duyarım

mufitsozen

#17
sayin @gerbay yine mutex semaphore cart curt etmissin!  ;) context switch, task/thread, lock filan gibi turkce olmayan kelimeler kullanarak bize havami atiyorsun!  :P

Hem ben delay_us icin kucuk bir for loop yaptim, mis gibi calisiyor,

bide interruptda  cok zaman harcamamak lazim filan gibi garip laflar etmissin. Ben suru programda ISR icinde while bloklari, printf satirlari gordum. Ne yani simdi bunlar yanlis da senmi dogrusunu biliyorsun? ::)

Bence senin RTOS kuyruk acin var, daha once RTOS kullandinmi bakalim yoksa bir ebook buldunda oradanmi okuyup yaziyorsun?

Qing Li'nin Real-Time Concepts for Embedded Systems kitabi bizdede var, naaber?

dikkat et foyan ortaya cikabilir!!! ;D
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

mufitsozen

#18
Alıntı yapılan: gerbay - 19 Şubat 2013, 13:10:43
yine radara girdim galiba ama Qing Li nin kitabını Caroline Yao ile birlikte yazdığını belirtmek lazım..


Son gunlerde ulkemizdeki muhafazakar ruzgardan dolayi artik referans verirken kadin yazar adlarini vermiyorum :P, (eger cok tepki gelirde tt olursam, en az 3 mesaj geriden yaziyorum. Kadinla erkek bir olurmu yahu... Otursun evinde cocuk baksin, kocasina bi tas sicak corba yapsin, camasir bulasik utu bir suru ev isi var, niye kitap yaziyorlar ki değilmi ama!  :D


Simdi moderatorlerden sopa yiyecem ama, canim sikkin onun icin keyfim yerinde ! (nasil oluyorsa! ;))  Sayin moderatorler valla ciddiye alinacak bir sey degil, munferit bir sakaci alarmi!  :)


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

muhittin_kaplan

Peki Usart tan bilgi geldiğinde "interrupt" da kullanamıyorken nereden bileceğim, datanın geldiğini ?

mufitsozen

Alıntı yapılan: muhittin_kaplan - 19 Şubat 2013, 15:08:51
Peki Usart tan bilgi geldiğinde "interrupt" da kullanamıyorken nereden bileceğim, datanın geldiğini ?

af buyurun ama interrupt niye kullanamiyorsunuz?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

muhittin_kaplan

#21
pri.. bir şekilde çalışmayınca bu RTOS int kapalı oluyormuş ya hocam.

mesaj birleştirme:: 19 Şubat 2013, 15:18:53

Alıntı YapHocam RTX_RTOS da "run in privileged mode" diye bi olay var eğer bu aktifse interrupt oluştuğunda interrupt rutinine girer. Eğer bu mode aktif değilse interruptlar çalışmıyo.

mufitsozen

#22
premptive olmasinin size ne zarari var hocam. Premptive fixed priority scheduling kullaninki isler sizin icin daha kolay olsun.


Ama premptive olmak interruptlar kapali demek degil.

her serial data geldiginde (yada gittginde yada error oldugunda) ISR bilgiyi alir ve bir mailbox/queue/shared datat vb  arayiciligi ilede taska bildirebilir. Round-Robin yada non-premptive scheduling kullanirsaniz bu sekilde halledebilirsiniz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

muhittin_kaplan

#23
Kolayını öğreneyim hocam önce.
Yeri Gelmişken Çalışma Çeşitleri ve Aralarındaki Farklar neler ?

mufitsozen

Alıntı yapılan: muhittin_kaplan - 19 Şubat 2013, 15:22:57
Yeri Gelmişken Çalışma Çeşitleri ve Aralarındaki Farklar neler ?

Hocam bu Temelin bilgisayara "Ne var? Ne Yok?" diye sormasina benzedi!  :)

Bu sorunun cevabi cok kapsamli olur. Size ozet olarak yapmak vermek icin 2-3 gun calismak gerekebilir. Belki yuzyuze sorulu/cevapli yada yazili referansdan bakarak ogrenmek en dogrusu.

Yinede wikipediadan bakabilirsiniz. http://en.wikipedia.org/wiki/Real-time_operating_system#Algorithms

========================================
Advantages of Preemptive Scheduling

The main advantage of preemptive scheduling is real-time response on the task level. The task response time - i.e., the time required to activate a task waiting for an interrupt - largely depends only on the interrupt latency (the time span during which no other interrupts can be accepted). In cooperative scheduling, the task response time is the longest time span that can elapse between two calls to the kernel. Unfortunately, an upper limit for this time span cannot be defined in many cases. It is the responsibility of the programmer to ensure that the time spans between calls to the kernel or the scheduler are sufficiently small.
Advantages of Cooperative Scheduling

With cooperative scheduling and the single-processor kernel, substantially fewer reentrance problems are encountered than in preemptive scheduling, because tasks cannot be interrupted arbitrarily by other tasks, but only at positions permitted by the programmer (i.e., in kernel calls). This advantages does not apply to the multiprocessor kernel.

It should be noted that even though real-time response is impeded on the task level, it is fully preserved on the interrupt handler level. Interrupt handlers can continue to use semaphores and mailboxes in cooperative scheduling. Therefore, interrupt-driven modules like RTCom can run independently of the scheduling algorithm currently active. Also, these modules' performance is identical in both cases.

While RTKernel-32's Idle Task is running (or a task with a similar structure, e.g., the CPU Monitor Counter task), tasks' response times to interrupts are practically identical, with or without preemptive scheduling.

For programs that don't require a response time on the order of micro- or milliseconds at the task level, cooperative scheduling is recommended.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

muhittin_kaplan

Hocam Döküman Toplamaya Başladım. Okuyorum.

Peki Her Task geçişinin 10ms olduğunu düşünürsek,

TaskA işlemini 10ms bitiremezse Başta Tanımladığımız Stack a mı yazıyor "Kaldığı yerdeki" Değerleri ? (Ki Tekrar TaskA ya geldiğinde Değerleri Yükleyerek kaldığı yerden devam etsin)

Böylemi Oluyor ?

muhittin_kaplan

Bazı terimleri Bilmediğimden Herhalde Biraz Havada Kalıyor.
Stacktan Kastım

OS_STK   uart_print_Stk[TASK_STK_SIZE];

gibi tanımlamalar görüyorum. uart taskı için ayrılmış geçici depolama alanı olarak anlıyorum. ve mantığım "he bu kullanılsa kullanılsa buradaki değişkenleri vs yi yada kaldıkları yer için kullanılır" diyor.

peki tasklar neden değer döndürmüyor ve parametre almıyor ? ben bir tasktan başka bir task a bilgi gönderemeyecekmiyim ?
örnek olarak Uarttan okunan bir bilginin (task_usart), pwm değerini etkilediğini düşünürsem (task_pwm) ne yapmam gerek ?


mufitsozen

CoOs'da message queue veya mailbox kullanabilirsiniz

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

muhittin_kaplan

Bu Dediklerinizi Öğrenebilirsem Kullanacağım Hocam.