RTOS för AVR
RTOS för AVR
Är det någon som har erfarenhet av Realtids-operativsystem (RTOS) för AVR?
Jag tänker jobba med ATMEGA88 (ev.128).
Jag tänker jobba med ATMEGA88 (ev.128).
För de mindre processorerna så finns Salvo, som finns i demoversion med begränsning på 3 tasks och 5 events.
För Atmega128 så tycker jag att du ska testa uCOS-II [mycos] som är betydligt bättre.. men det kräver 4kB RAM för att köras smärfritt.. det funkar på en Atmega8 med 1kB RAM också, men då inte med så många tasks.
uCOS-II är helt öppet och fritt att använda för utbildning/utveckling så länge man inte tjänar pengar på det... har för mig att det var så. Hittar dock ingetstans att ladda ner det på deras hemsida, men jag kanske har kollat dåligt.
För Atmega128 så tycker jag att du ska testa uCOS-II [mycos] som är betydligt bättre.. men det kräver 4kB RAM för att köras smärfritt.. det funkar på en Atmega8 med 1kB RAM också, men då inte med så många tasks.
uCOS-II är helt öppet och fritt att använda för utbildning/utveckling så länge man inte tjänar pengar på det... har för mig att det var så. Hittar dock ingetstans att ladda ner det på deras hemsida, men jag kanske har kollat dåligt.
Jag har inte gjort ett smack på AVR. Däremot har jag skrivit lite till PIC,
vilket m.a.p RTOS inte gör någon större skillnad. Vad har du själv gjort
med mindre 8-bitars processorer ?
Min personliga uppfattning är att de RTOS som finns till de mindre
processorerna, är mer exempel på vad man *kan* göra än än någonting
som har någon större praktiskt betydelse. De är mest i vägen...
> Har du klarat dig utan OS?
Det är fullständigt självklart att man inte behöver något "OS"
till denna typ av processorer ! Vad menar du igentligen ??
vilket m.a.p RTOS inte gör någon större skillnad. Vad har du själv gjort
med mindre 8-bitars processorer ?
Min personliga uppfattning är att de RTOS som finns till de mindre
processorerna, är mer exempel på vad man *kan* göra än än någonting
som har någon större praktiskt betydelse. De är mest i vägen...
> Har du klarat dig utan OS?
Det är fullständigt självklart att man inte behöver något "OS"
till denna typ av processorer ! Vad menar du igentligen ??
Jag har jobbat en hel del med PIC och väldigt mycket med en 16-bitars inbyggnadsprocessor, alla har haft realtidskrav osv.
Jag har kollat på RTOS och kommit fram till att de inte ger mig den kontroll jag vill ha/behöver.
Vid att hantera interrupts osv i eget program bygger man ju egentligen ett OS eller hur?
Så hur man klarar sig utan ett OS: alldeles utmärkt! (om vi här utgår ifrån ett "köpt" OS).
Jag har alltid fått veta att den mjukvara jag har gjort är mycket stabil och buggfri och tiden har visat att det är rätt fastän komplexiteten är så mycket högre i mitt senaste projekt.
Jag har kollat på RTOS och kommit fram till att de inte ger mig den kontroll jag vill ha/behöver.
Vid att hantera interrupts osv i eget program bygger man ju egentligen ett OS eller hur?
Så hur man klarar sig utan ett OS: alldeles utmärkt! (om vi här utgår ifrån ett "köpt" OS).
Jag har alltid fått veta att den mjukvara jag har gjort är mycket stabil och buggfri och tiden har visat att det är rätt fastän komplexiteten är så mycket högre i mitt senaste projekt.
Ajaj, du var PIC-kille sodjan. Blandar ihop stammisarna på forumet. Sorry!
Jag har delvis exakt samma känsla som du, den här typen av RTOS är mest en fräck grej. Det är lite därför jag startade tråden för att höra om någon har andra praktiska erfarenheter.
Däremot, när systemen blir lite större så är min erfarenhet att något slags os (eller annan "plattform") behövs. Och för mig som är van vid det känns det väldigt komplicerat att överhuvudtaget tänka på at hantera paralllella händelser utan RTOS.
Jag har delvis exakt samma känsla som du, den här typen av RTOS är mest en fräck grej. Det är lite därför jag startade tråden för att höra om någon har andra praktiska erfarenheter.
Däremot, när systemen blir lite större så är min erfarenhet att något slags os (eller annan "plattform") behövs. Och för mig som är van vid det känns det väldigt komplicerat att överhuvudtaget tänka på at hantera paralllella händelser utan RTOS.
Nu hänger jag inte riktigt med....???
"hantera paralella händelser utan RTOS"...? Vad menar du?
En cpu kan, i dagens utförande, enbart göra en sak i sände. Att den kan växla snabbt är en annan sak men den utför inte fler saker i "paralell".
Jag har i mitt senaste "OS-fria" projekt styrning av 2 UART (full duplex), 11 tidsstyrda processer samt ett antal "bakgrunds"-processer som inte är tidskritiska (uträkningar, statistikinsamling osv) och det kör hur stabilt och välfungerande som helst utan ett RTOS.
RTOS på en OS-fri processor är i mitt tycke löjligt men kommer man till Windows/Linux är det en helt annan sak, dessa OS har ju notorisk "non-real time" och ska man göra något som har realtids-krav är man automatisk inne på ett RTOS men det är för att kompensera för OS'et.
"hantera paralella händelser utan RTOS"...? Vad menar du?
En cpu kan, i dagens utförande, enbart göra en sak i sände. Att den kan växla snabbt är en annan sak men den utför inte fler saker i "paralell".
Jag har i mitt senaste "OS-fria" projekt styrning av 2 UART (full duplex), 11 tidsstyrda processer samt ett antal "bakgrunds"-processer som inte är tidskritiska (uträkningar, statistikinsamling osv) och det kör hur stabilt och välfungerande som helst utan ett RTOS.
RTOS på en OS-fri processor är i mitt tycke löjligt men kommer man till Windows/Linux är det en helt annan sak, dessa OS har ju notorisk "non-real time" och ska man göra något som har realtids-krav är man automatisk inne på ett RTOS men det är för att kompensera för OS'et.
Jag har pysslat en del med Nut/Os som följer med Ethernut
Mina erfarenheter av det är väl att det kan vara smidigt då mycket redan är klart. Men såklart förlorar man ännu mera kontroll över vad som händer. Ofta tenderar real time OS att bli långsammare än om man skulle gjort en specifik applikation eller som Icecap säger, ett specifikt operativsystem för just denna uppiften.
Mina erfarenheter av det är väl att det kan vara smidigt då mycket redan är klart. Men såklart förlorar man ännu mera kontroll över vad som händer. Ofta tenderar real time OS att bli långsammare än om man skulle gjort en specifik applikation eller som Icecap säger, ett specifikt operativsystem för just denna uppiften.
Visst. Man brukar kalla det parallellitet.Icecap skrev:Nu hänger jag inte riktigt med....???
"hantera paralella händelser utan RTOS"...? Vad menar du?
En cpu kan, i dagens utförande, enbart göra en sak i sände. Att den kan växla snabbt är en annan sak men den utför inte fler saker i "paralell".
För min del ser jag många anledningar att använda OS i olika sammanhang. Men på småsystem kanske det inte gör någon större nytta. En smaksak?
Det jag tror Icecap syftar på, är att många (nybörjare) frågar
något i stil med "Min PIC/AVR behöver göra två saker samtidigt",
och svaret blir alltid då "det går inte". Eller "Vad är "samtidigt"".
Ibland är "inom samma sekund" = "samtidigt"
Ibland kanske "inom samma millisekund", det beror helt på...
> Och för mig som är van vid det känns det väldigt komplicerat att överhuvudtaget tänka på at hantera paralllella händelser utan RTOS.
Jo, men det är det inte alls. Det finns knappast en enda mikrokontroller
applikation (utom de enklaste "blink-a-LED") som inte gör det.
Det är det man har bl.a timers och hela interrupt systemet till.
Ändå så är RTOS tämligen sällsynta i praktiken, man kan fråga sig varför...
Knappast en smaksak, snarare praktisk erfarenhet.
något i stil med "Min PIC/AVR behöver göra två saker samtidigt",
och svaret blir alltid då "det går inte". Eller "Vad är "samtidigt"".
Ibland är "inom samma sekund" = "samtidigt"
Ibland kanske "inom samma millisekund", det beror helt på...
> Och för mig som är van vid det känns det väldigt komplicerat att överhuvudtaget tänka på at hantera paralllella händelser utan RTOS.
Jo, men det är det inte alls. Det finns knappast en enda mikrokontroller
applikation (utom de enklaste "blink-a-LED") som inte gör det.
Det är det man har bl.a timers och hela interrupt systemet till.
Ändå så är RTOS tämligen sällsynta i praktiken, man kan fråga sig varför...
Knappast en smaksak, snarare praktisk erfarenhet.
Jag kan till exempel tänka mig att dessa apparater kan ta betydligt längre tid att utveckla utan ett operativsystem:
http://www.ucos-ii.com/customers/products.html
http://www.ucos-ii.com/customers/products.html
Ett RTOS på en 8-bits arkitektur som på AVR/PIC tycker jag är lite "overkill". Någonstans går gränsen för vad som är lönt att implementera.
Om man däremot hoppar upp något steg till 16-/32-bits arkitekturer som exempelvis ARM kan det säkerligen löna sig stort i utveckligstid att använda ett RTOS.
Som sagt, det bästa man kan göra på så små enheter som AVR/PIC är att man skriver sitt eget "operativsystem" för att ha full kontroll och kunna klämma ut varje prestandadroppe ur dehårdvaruimplementerade funktionerna.
Om man däremot hoppar upp något steg till 16-/32-bits arkitekturer som exempelvis ARM kan det säkerligen löna sig stort i utveckligstid att använda ett RTOS.
Som sagt, det bästa man kan göra på så små enheter som AVR/PIC är att man skriver sitt eget "operativsystem" för att ha full kontroll och kunna klämma ut varje prestandadroppe ur dehårdvaruimplementerade funktionerna.