8 Bitler için Yeni Bir RTOS: cocoOS

Başlatan FxDev, 27 Temmuz 2014, 15:15:46

FxDev

Kullananlar problem yaşayanlar bilir benim RTOS ile tanışmamı sağlayan OSA RTOS artık Microchip tarafında XC8 ler ile uyumlu değil.
Bugün eski bir projemi yeniden derlemem gerekti, yeni derleyici destekleriyle birlikte ama bir de baktım OSA RTOS çakıldı. Eh rus arkadaşımız da projeyi artık ilerletmiyor.
Dolayısı ile araştırmalarımda cocoOS'u buldum. Hemen port ettim. Zaten RTOS kullananlar artık tüm RTOS'ların benzer mantıkla port edildiğini fark etmiştir. Şu an için sorunsuz çalışıyor.

Son bir not ekleyeyim, dsPIC tarafında yaptığım ciddi bir güç elektroniği projesinde OSA RTOS'u biraz da risk alarak kullanmıştım. 2 yıldır ürünler gidiyor, programsal geri dönüş hiç yaşamadım ve OSA RTOS yeni çıkan XC16'lar ile hala uyumlu.

CoOS'u da yine aynı proje kapsamında 2 yıldır kullanıyorum. Orada da bir sorun yaşamadım şu ana dek. Zaten o da gün geçtikçe güncelleniyor.

FreeRTOS neden kullanmıyorsun diyenler olacaktır, tek cevabım var: boyut.

Kullanmak isteyenlere cocoOS'un net adresi.

http://www.cocoos.net/index.html
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Karamel

hocam. size rtos hakkinda birseyler sormak istiyorum. oncelikle kendi bilgilerimi sunmak isterim.

RTOS demektir ki real time operating system. yani isletim sistemi. rtos ile ne oluyor? sistem bosta kaldigi zamanlari degerlendiriyor ve sanki paralel islem yapiyormus gibi davraniyor. hani su mesur delay lerimiz var ya mcu yu bos yere bekleten. rtosta mcu delayler ile beklemiyor. rtos un kendi delayini kullandigimiz zaman rtos baska tasklari islemeye geciyor. islem oncelikleri sayesinde islemler teker teker yapiliyor vs vs.

Peki hocam. neredeyse herkes bu kadarini biliyor. bu yuzden hadi biz led yak sondur yada pwm uygulamalarinin biraz otesine gidelim. projemizde 5 multi taskimiz olsun.

task1 butonlar
task2 lcd
task3 usart
task4 spi
task5 adc

butonlar belirli araliklar la okunabilir. lcd belirli araliklarla char 2x16 char dizi degiskeni ekrana basabilir. usart usart dizi degiskenlerine veri alabilir yada gonderebilir. ayni sekilde spi de oyle. adc de belirli araliklarla belirli kanallari okur falan filan olsun. bunlar nasil birlestirilir? birlestirirken nelere dikkat etmek gerekir? tasklari yazarken nerelere dikkat etmeliyiz?

Tagli

#2
Sitede sanki PIC için port göremedim. Benim mi gözümden kaçıyor acaba?

Ekleme: Aynı soruyu fb üzerinde de sormuştum, FxDev PIC üzerinde de çalıştığını yazmış. Koda sadece şöyle bir baktım ama diğer RTOS kodlarında gördüğüm ASM ile yazılmış platform bağımlı bir kısım göremedim. İlginç...
Gökçe Tağlıoğlu

FxDev

@Tagli: Ben kodları açıp hiç bakma fırsatım olmadı. ASM yoksa platform bağımsızdır o halde. Her yerde çalışır anlamına gelir bu bakmam gerekiyor. Akşam bununla ilgili bir yorum yapacağım.
@Karamel: Ben rtosta işlem yaparken Interrupt'larda neye dikkat ediyorsam Task'lar arasında da ona dikkat ediyorum. Normalde tasklar aralarında mesajlaşmaları gerekir, örneğin buton bilgisini bekleyen bir task, buton okuyan tasktan mesaj beklemelidir vs. Fakat hiç o kadar detaylara gitmediğim için global değişkenlerle işi yürütüyorum. Benim için RTOS'un avantajı şu, düzen oturtması, görevlerimi zamanında yapması vs. Yoksa bunları kendim yazıyor olacaktım. Genelde çalıştığım konular donanım ağırlıklı oluyor, yazılım yardımcısı oluyor. Örneğin bir Flyback'i işlemci ile kontrol ediyorsam genelde işleri Interrupt'a yüklerim, haberleşme, sıcaklık okuma vs. işlerini RTOS'a aktarırım. Ama söz konusu PID gibi konular olunca mecbur kesmeden kurtulamam.
Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Erhan YILMAZ


FxDev

Forumda bazı bağnaz kişiler tarafından engellenip, atıldım. Tüm bu bağnaz kişilere rağmen Atatürkçülüğü sonuna kadar savunacağım; onlar da bağnazlıklarında boğulacaklar. Haberleşme için: info[at]firatdeveci.com / ©firatdeveci.com - ße Different Everytime!

Erhan YILMAZ

#6
Basit sade bir şeye benziyor. MSP430 için port etmek geldi içimden.

mesaj birleştirme:: 31 Temmuz 2014, 14:08:00

Anlamadığım neden tasklara aynı öncelik seviyeleri verilemiyor? Birde taskları neye göre anahtarlıyor? örneğin tick timeri 1 ms için kurduk. Her 1 ms'de taskları mı çalıştırıyor? Öncelik nerede devreye giriyor? Aslında bir çok soru takıldı kafama ama toparlayamadım. :) Port edip debug etsem bazı cevaplar bulabilirim sanırım. Önce forumda ki rtos konularına bir göz atayım.