Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => RTOS Uygulamaları => Konuyu başlatan: bulut_01 - 02 Aralık 2017, 22:40:27

Başlık: Rtos hakkında
Gönderen: bulut_01 - 02 Aralık 2017, 22:40:27
İyi aksamlar arkadaslar rtos hakkında bazı sorularım olacaktı sizlere öncelikle ccs kullanıcısıyım ccs freertos kullanıyor sanırım rtos gercek zamanlı işletim sistemi mantıgıyla calışıyorsa, ben test yaptım 3 tane task yapıp denedim 2 ci taskımda 5 sn delay fonksiyonu yazdım diğer tasklar bu delay bekledi 5 sn o zmn rtosun ne avantajı varki delay fonksiyonu bütün taskları etkiliyorsa ayrıca rtos normal kodlamaya göre ne kadar güvenilir ve stabildir bu konuda düşüncelerinizi burda paylaşırsanız rtos hakkındaki soru işaretlerinide gidermiş oluruz.
Başlık: Ynt: Rtos hakkında
Gönderen: cetin1990 - 02 Aralık 2017, 22:49:47
Rtos içine  için özel bir gecikme mekanizması vardır. Bu şekilde yazmak gerekir. Kılavuzunda , belgesinde açıklanmıştır.
Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 02 Aralık 2017, 22:59:02
Peki üstad ccs için bu mekanızma nasıl oluyor help bölümünde bana yeterince acıklayıcı gelmedi rtos konusunda
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 02 Aralık 2017, 23:17:01
Alıntı yapılan: bulut_01 - 02 Aralık 2017, 22:40:27
İyi aksamlar arkadaslar rtos hakkında bazı sorularım olacaktı sizlere öncelikle ccs kullanıcısıyım ccs freertos kullanıyor sanırım rtos gercek zamanlı işletim sistemi mantıgıyla calışıyorsa, ben test yaptım 3 tane task yapıp denedim 2 ci taskımda 5 sn delay fonksiyonu yazdım diğer tasklar bu delay bekledi 5 sn o zmn rtosun ne avantajı varki delay fonksiyonu bütün taskları etkiliyorsa ayrıca rtos normal kodlamaya göre ne kadar güvenilir ve stabildir bu konuda düşüncelerinizi burda paylaşırsanız rtos hakkındaki soru işaretlerinide gidermiş oluruz.

1- ccs rudimentary(ilkel, temel) bir cooperative(isbirlikci) rtos icerir. Bazi MCUlar icin freertos ccs ile uyarlanabilir ama halihazirda calisan ve ticari olarak desteklenen bir urun oldugunu zannetmiyorum. Ccs icinde freertos geldigini hic duymadim.

2- RTOSun "normal kodlamaya" gore bircok avantaji vardir, cok daha guvenilir ve en ust derecede stabil olarak kullanilabilir.

3- RTOS ile program yazmadan once real-time programlama teknik ve veri yapilari, sistem komponentleri hakkinda bilgi sahibi olmak gerekir.
Başlık: Ynt: Rtos hakkında
Gönderen: kimlenbu - 02 Aralık 2017, 23:40:45
ti sitesinde rtos için 10 küsur bölümlük eğitim videosu var, izlersen orada anlatıyor.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 02 Aralık 2017, 23:50:12
Alıntı yapılan: kimlenbu - 02 Aralık 2017, 23:40:45
ti sitesinde rtos için 10 küsur bölümlük eğitim videosu var, izlersen orada anlatıyor.
Satin @kimlenbu
TI sitesindeki rtos kendi mculari icin ozel olarak support ettikleri bir rtos'u anlatiyor, bunun ccs'in rtos fonksiyonlari ile bir alakasi yok.
Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 02 Aralık 2017, 23:59:01
Simdi hangi editör olursa olsun gercek zamanlı işletim sisteminden bahsediyor isek rtos en küçük örnegi delay fonksiyonundan diğer görevlerin etkilenmemesi gerekmez mi?  basic rtos bile olsa.
Başlık: Ynt: Rtos hakkında
Gönderen: cetin1990 - 03 Aralık 2017, 00:02:06
Bence delay rtosta öyle kullanılmaz.
Bayrak ile kontrol edilir. Her turda sayac azalır. Task içinde  bir bayrak kontrol edilir. Sayı sıfırlandıysa  gecikme bitmiş demektir. Sonraki işlere geçilir. Delay süresi boyunca boş boş beklenmez
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 00:13:40
Alıntı yapılan: bulut_01 - 02 Aralık 2017, 23:59:01
Simdi hangi editör olursa olsun gercek zamanlı işletim sisteminden bahsediyor isek rtos en küçük örnegi delay fonksiyonundan diğer görevlerin etkilenmemesi gerekmez mi?  basic rtos bile olsa.

Hayir, adi ustunde bu bir COOPERATIVE scheduler olan rtos. Yani her task sira ile kendisi kontrolu birakana kadar calisir. Her task kendisi calisirken oburleri duracak diye bilinerek programlanmali.

Rtos schedulerin kullandigi yontemi bilmeden bu task oyle calisir obur task boyle calisir diyemezsiniz. Yani bilgi eksikligini duz mantikla fikir yuruterek gideremezsiniz.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 00:19:17
Alıntı yapılan: bulut_01 - 02 Aralık 2017, 23:59:01
Simdi hangi editör olursa olsun gercek zamanlı işletim sisteminden bahsediyor isek rtos en küçük örnegi delay fonksiyonundan diğer görevlerin etkilenmemesi gerekmez mi?  basic rtos bile olsa.

Sizin editor kelimesini kullaniminizdan ccs'in ne oldugunu ve nasil calistiginida tam olarak bilmediginizi dusunuyorum.

Ccs c kullandiginiz mcu icin yazilmis bir C derleyicisidir, bir takim yan fonksiyonlar ile programlamayi biraz daha kolaylastiracak sekilde zenginlestirilmistir. Adina rtos dedikleri fonksiyon grubununda ne real-time nede os yani isletim sistemi ile bir alakasi yoktur.
Bu cok basit, kisitli fonksiyonlar ile ayni anda calisiyor intibasi veren ve zaman paylasimli calisan bir takim tasklar yapilabilir.
Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 03 Aralık 2017, 00:25:55
Hocam belirtiğiniz rtos bicimini ccs kullandıgını nerden ögrendiniz ben bu konuda bilgi edinemedim eger dediğiniz gibiyse ccs deki rtos diye gecen kavramın gercek zamanlılıkla alakası yok kandırmaca o zaman
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 00:52:30
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 00:25:55
Hocam belirtiğiniz rtos bicimini ccs kullandıgını nerden ögrendiniz ben bu konuda bilgi edinemedim eger dediğiniz gibiyse ccs deki rtos diye gecen kavramın gercek zamanlılıkla alakası yok kandırmaca o zaman

Ccsin rtos manualda yaziyor http://silanus.fr/sin/formationISN/Robotique/Logiciels/CCS/Data%20Sheets/RTOS.pdf (http://silanus.fr/sin/formationISN/Robotique/Logiciels/CCS/Data%20Sheets/RTOS.pdf)

Bilgisayardaki gercek zamanlilik ile sizin gunluk kullaniminizdaki gercek zamanliligin bir alakasi yok. Cok cekirdekli bir takim cok ozel ortamlar haricinde gercek zamanlilik bir anda sadece bir task run edip, ZAMAN PAYLASIMLI olarak butun taskleri gerektigi zamanda calistirarak elde edilir. Bunun nasil yapildiginida Bilgisayar bolumlerinin 3,4 siniflarinda yada master doktora seviyelerinde ogreniriz.

Bir COOPERATIVE RTOS ilede bir cok gercek zamanli is yapilabilir Ornegin ayni anda 100binlerce cagri isleyebilen Alcatel S12 santrallerindeki RTOS bir cooperative rtosdu.
Yani aldatmaca filan yok, neyi nasil yapacagini bilmemece var. Ornegin ben derin S12 bilgimi ve cooperative rtoslardaki tecrubemi kullanarak herhangi bir urunu ccs c rtos ve kendi yazacagim bir takim fonksiyonlarla yapablirim.

Rtos adinin kapsadigi buyuk ve karisik bilgi kumesini, bir iki ornekle anlayabilmek pek mumkun degil.

Keske ingilizce bilginiz cok iyi olsa, bu konuda size daha yardimci olabilsem.

Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 03 Aralık 2017, 01:48:09
Hocam döküman için tşk ederim keşke tr olsaydı bu konuda örnek vererek açıklama yaparsanız burda benim gibi bu konuyu fazla bilmeyen arkadaslarda yararlanır örnek verecek olursam rate ve max kısmı var rate kısmındaki süre boyunca komutlarımız calısacak eger komutlarımız max bölümündeki süreyi geçtiği taktirde yarım bırakılıp diğer task mı geçeçek bu işleyiş hakkında da bilgilerinizi paylaşırsanız daha hakim olacagınız bu konuda.
Başlık: Ynt: Rtos hakkında
Gönderen: foseydon - 03 Aralık 2017, 02:47:06
CCS be freeRTOS hiç duymadım.

Çoğu kişi delay rutinini count yaptırarak geçiriyor. Muhtemelen sende öyle yazmışsındir. Bu durumda, delay rutinini içine yazdığın task in öncelik sırası en büyük ise programı bloklarsin. O tasktan çıkamazsın.

FreeRTOS un kendi delay rutinini var, onu kullanman gerekiyor. Çalışma mantığı olarak, FreeRTOS bir Timer a bağlı olarak çalışıyor, bu Timer FreeRTOS icin tick adi verilen eş zaman aralığına sahip interrupt üretiyor. Her tick interrupt i geldiginde ve task rutinini işini bitirdiğinde ve kendin cagirirsan task scheduler adı verilen ve hangi taşkın çalışması gerektiğine karar veren mekanizma çağırılır. FreeRTOS un kendi delay rutinini çağırdığın zaman, task scheduler i cagirir, scheduler sıradaki taşla zaman verir ve senin belirlediğini delay süresi için her Tick the counter artırır. Counter taşınca, delay koydugun task i cagirir. Kabaca böyle.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 03:09:11
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 01:48:09
Hocam döküman için tşk ederim keşke tr olsaydı bu konuda örnek vererek açıklama yaparsanız burda benim gibi bu konuyu fazla bilmeyen arkadaslarda yararlanır örnek verecek olursam rate ve max kısmı var rate kısmındaki süre boyunca komutlarımız calısacak eger komutlarımız max bölümündeki süreyi geçtiği taktirde yarım bırakılıp diğer task mı geçeçek bu işleyiş hakkında da bilgilerinizi paylaşırsanız daha hakim olacagınız bu konuda.

Rate taskin kosacagi period ve max ise en fazla ne kadar surecegi. Butun tasklerin max surelerine bakarak timeri nasil kullanacagini hesapliyor. Benim verdigim  dokumanda 10 bolumde cok ayrinti vermeden anlatiyor.

Task gecisi diye bir sey yok, task isini bitirince oburlerine geciyor. Otomatik bir kontrol soz konusu degil.(ccs rtos baglaminda)

Atolyem ankarada ben ise artik emekli oldum urladayim. Yanimda kullanacagim bir dev kit yada pc bile yok, bu yaziyida tabletden yaziyorum. Bu yuzden uzulerekte olsa size yardimci olacak ornekler veremiyecegim.

Yapmak istediklerinizi yapabilirsiniz, ama kolay, kisa ve cabuk bir sekilde mumkun degil. Yinede rtos ile calismak icin en elzem kavramlardan biri FSM (finite state machine) bu konuda turkce kaynak bulanilirseniz ccs rtos ortamini kullanarak delay vb konuladda cozumler yapabilirsiniz diye dusunuyorum.
Başlık: Ynt: Rtos hakkında
Gönderen: elt42at - 03 Aralık 2017, 10:01:35
Merhaba arkadaşlar. Rtos konusu benim de cok ilgi duyduğum konudur. Pic18f serisi ile cok kez kullanmak isteyip te fırsatim olamamisti.


Normal bir kod döngüsünde delay için kullandığımız, işlemci calisma suresine dayanarak peş peşe NOP (no op.) kullanımı ile gecikme elde ettiğimizde TİMESHARİNG mantigi ile multiTask kurgusu calismalarimizda diger tasklar etkilenir. Ama cooperarive bir rtos mekanizmasinda scheaduler zamanlama mekanizmasi o anki task dan digerine vakti geldiginde gecmelidir. Ozetle diger tasklar mevcut task içindeki beklemeden etkilenmemelidir. Olabilecek en mantikli durum ise 5sn lik gecikme komutu diger tasklardan dolayi daha uzun bir bekletme süresi sağlayabilir.
Calisma arkadaslarimdan ogrendigim bilgilere göre, rtos calisan sistemlerde osTimer veya realTimeClock mekanizmadindan faydalanarak gecikmeler kurmaktir. OsWait gibi metodlar ile 1sn lik gecikme eklenen task, task yönetimi katmaninda sure tukenene kadar o taski cagirmayarak gerceklestirir.
Tum bu islemlerde ya iki zaman farki kontrolu yapilarak karar verilmekte diye biliyorum.
Daha alt seviye basit islemciler ile performansli calisma elde etmek için daha ilkel fonksiyonlar olabilir ama mevcut konu açısından benim yorumum, rtos da 3 tane task var ve 1 task icinde ki bekletme komutu diğer tasklari etkilememeli. Bana cooperative yerine timesharing mekanizmasinda olabilecek durum gibi geldi.
Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 03 Aralık 2017, 13:31:34
Hocam max süresinin ccs rtos da fazla bir esprisi yok o zaman işlevsel olarak da bir getirisi yok max süre içinde task görevinin bitmemesi durumunda.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 13:59:07
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 13:31:34
Hocam max süresinin ccs rtos da fazla bir esprisi yok o zaman işlevsel olarak da bir getirisi yok max süre içinde task görevinin bitmemesi durumunda.

Var, rtos scheduler'a donunce zamanda bir tasma oldugunu istatisklere koyuyor, bu sayede size tahmininizin yanlis oldugunu gostermesini saglayan bir makanizma kurup ornegin bir hata mesaji vermenize imkan veriyor.

TEMEL BIR KAIDE OLARAK, kullanim amacini siz anlamasiniz bile rtos fonksiyonlarindaki her parametre size kendi ek ve kontrollerinizi yapabilecek imkanlar veriyor.

Bunun icin ccs rtos fonksiyonlari ile ilgili dokumani real-time kavramlari bilerek incelemek zorundasiniz.





Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 03 Aralık 2017, 14:32:03
Tşk ederim hocam verdiğiniz bilgiler için rtos hakkında sayenizde birşeyler daha ögrenmiş olduk.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 14:38:44
Alıntı yapılan: bulut_01 - 03 Aralık 2017, 14:32:03!
Tşk ederim hocam verdiğiniz bilgiler için rtos hakkında sayenizde birşeyler daha ögrenmiş olduk.

Tesekkure gerek yok, keske imkanlar cok daha elverisli olsa ve olmasi gerektigi sekilde bir bilgi paylasimi yapabilsem.


Sayin @bulut_01 sizin, yasiniz, egitiminiz, mesleginiz ve tecrubeniz vb hakkinda hicbir fikrim yok, ama eger guncel elektronik teknolojisi ile ilgileniyorsaniz size verecegim ilk ve acik ara birinci tavsiye ingilizce ogrenmeniz. Eger duzenli, surekli ve disiplinli olarak calisirsaniz yaklasik 2 sene icinde teknik ingilizcenizi yeterli seviyeye getirebilirsiniz.(sifirdan basladiginizi varsayarsak)

Aksi takdirde yapabilecekleriniz hobi seviyesini gecemez.
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 03 Aralık 2017, 15:43:10
Alıntı yapılan: elt42at - 03 Aralık 2017, 10:01:35

Daha alt seviye basit islemciler ile performansli calisma elde etmek için daha ilkel fonksiyonlar olabilir ama mevcut konu açısından benim yorumum, rtos da 3 tane task var ve 1 task icinde ki bekletme komutu diğer tasklari etkilememeli. Bana cooperative yerine timesharing mekanizmasinda olabilecek durum gibi geldi.
Bir task'daki bekleme zaten obur taskleri etkilemez. Performans, cooperative, timesharing kelimelerinin sozluk anlamlarindan bakip, mantik yurutmeye calismak yerine bu terimlerin meslek icindeki anlamini ogrenerek kullanmak lazim.

Hepimizin anlayacagi dille anlatmak gerekirse:

Mesela bir konusmada "irade-i cuzz-iyye" tabirini kullandiniz, bende sozluge baktim, hur irade, ozgur secim filan diyor, kalkip size o zaman mantiken esirlerin yada mahkumlarin irade-i cuzz-iyyesi olmaz diyebilirmiyim. Onu birakin irade kelimesinin bile gunluk hayatta kullanimi(ne iradesiz adamsin gibi) ve ilahiyattaki anlami arasindaki farklari kisa ve basit bir sekilde aciklamak mumkun degil.

Umarim aciklayabilmisimdir.
Başlık: Ynt: Rtos hakkında
Gönderen: ahmet_zxc - 04 Aralık 2017, 09:04:10
bana kalırsa senin ulaşmaya çalıştığın rtos değil super loop.

Başlık: Ynt: Rtos hakkında
Gönderen: kimlenbu - 04 Aralık 2017, 16:55:31
@mufitsozen , CCS yazılınca code composer studio sandım.


Gene de izlenmesini tavsiye ederim, en azından kafada "delay kullandım, beklememesi lazımdı" diye sorular kalmaz :)


https://training.ti.com/ti-rtos-workshop-series
Başlık: Ynt: Rtos hakkında
Gönderen: mufitsozen - 07 Aralık 2017, 18:20:41
Alıntı yapılan: ahmet_zxc - 04 Aralık 2017, 09:04:10
bana kalırsa senin ulaşmaya çalıştığın rtos değil super loop.
Sayin @ahmet_zxc , galiba benden baska herkes bu "super loop' biliyor.

Rica etsem benim icin bu konudan biraz bahsedebilirmisiniz, varsa ingilizce kaynak gosterebilirmisiniz?
Başlık: Ynt: Rtos hakkında
Gönderen: ahmet_zxc - 07 Aralık 2017, 18:34:00
Alıntı yapılan: mufitsozen - 07 Aralık 2017, 18:20:41
Sayin @ahmet_zxc , galiba benden baska herkes bu "super loop' biliyor.

Rica etsem benim icin bu konudan biraz bahsedebilirmisiniz, varsa ingilizce kaynak gosterebilirmisiniz?
ne demek üstat emrin olur.

doyurucu bilgi(senin için) veriyor mu bilemedim.. ama doküman aşağıda. ayrıca google kitaparda arayınca da baya bişeyler çıkıyor.

https://en.wikibooks.org/wiki/Embedded_Systems/Super_Loop_Architecture
https://stackoverflow.com/questions/44429456/what-is-super-loop-in-embedded-c-programming-language
http://www.keil.com/forum/14158/super-loop/
http://www.includehelp.com/c/the-super-loop-architecture-for-embedded-c-programming.aspx

ayrıca pic mi döver atmel mi benzeri kapışma olayları rtos ve super loop ta da var..

https://www.embeddedrelated.com/showarticle/951.php
Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 08 Aralık 2017, 16:53:33
Rtos ile kücük bir örnek yazdım görev1 max süresi içinde işlemini bitiremez ise rtos_overrun() komutu altında led yakıyorum yanlız şöyle bir durum var görev1 max zamanı içindede bitirse overrun aktif oluyor bitirmesede overrun aktif oluyor bu overrun komutunda yanlış yaptıgım birsey mi var ?

#use rtos(timer=0,minor_cycle=100us,statistics)                            // rtos ayarı


#task(rate=100us,max=100us)
void Gorev1 (){

  // if(sayac<=0){
//for(sayac=0;sayac<50000;sayac++){
output_toggle(pin_a0);

}

#task(rate=100us,max=100us)
void Gorev2 (){

output_toggle(pin_a1);

if(rtos_overrun(Gorev1)){
output_high(pin_a2);
}}

Başlık: Ynt: Rtos hakkında
Gönderen: bulut_01 - 09 Aralık 2017, 12:20:42
Bu komut hakkında kimsenin bir fikri yok mu? Ovverrun( )