| Naam |
Bericht |
devlaam
|
Omdat ik nog wel eens een kleine avr (ATtiny861/461/261) gebruik voor eenvoudige besturingen, heb ik hiervoor een OS geschreven, met de naam Femto OS. Heel handig, en ook voor anderen vrij te gebruiken (GPLv3). Dus, heb je eens tijd over, probeer het uit. http://www.femtoOS.org/
Het is overigens in C geschreven en kan dus geport worden. Binnen de AVR wereld is het goed te doen, maar voor andere architecturen is het zeker meer werk.
|
M14
|
Ik heb er ff naar gekeken en ik vind het best interessant om me in de werking te verdiepen (moet alleen wat tijd vinden  ). Maar ik vraag me af waarom een OS op z'n uC nuttig kan zijn. Met wat voor toepassing is het zinvol om zoiets te gebruiken?
|
devlaam
|
quote:
Het is inderdaad een grensgeval. Zelf gebruik ik het systeem voor een domotica project, en dan moeten de chips zowel via een bus (of twee bussen op een knooppunt) kunnen praten als hardware besturen. Het is geen must, maar als je het eenmaal hebt, dan ontwikkelt het wel lekker snel. Je definieert aparte taken die naar sensoren luisteren en anderen die acties uitsturen. Bijvoorbeeld logging is gewoon ook een aparte taak. Omdat je per taak een watchdog kan definieren mag de bus taak gerust vastlopen en hoef je bijvoorbeeld niet overal timeouts in te bouwen. Je recreert gewoon de context.
De motivatie om het te doen was echter meer: "kan het?" Ik heb freeRTOS op de ATtiny861 geport en die liep, maar verbruikte voor drie led knipper taken al zoveel ram, dat er niets fatsoenlijks meer bij kon, en al helemaal geen shell en bus. Dat is mij dus wel gelukt, en dat is leuk.
|
weerstandje
|
Heb zelf geen verstand van een os maar vraag me dan af hoe je
kunt multitasken.als er twee taken zijn dan kun je tog informatie missen omdat je(de cpu) net met een ander taak bezig is.hoe wordt dit opgelost.
|
devlaam
|
Het zou een beetje te ver voeren om dat hier allemaal uit te leggen. Gelukkig zijn er op het net wel artikelen te vinden. Kijk maar eens bij http://www.freertos.org/ en klik op 'Fundamentals'. Ook in de laatste electuur staat een artikel met een goede inleiding.
[Bericht gewijzigd door Henry S. op 1 april 2008 18:09:25]
|
devlaam
|
Een nieuwe versie van Femto OS is beschikbaar. Versie 0.82. Zie http://www.femtoos.org/ voor meer info. Veel plezier!
|
Nico.c
|
Zonde van de moeite. Een OS is niet echt handig op een controller (understatement). Je krijgt dan allerlei taken die door elkaar heen gaan lopen met allerlei extra overhead om data tussen de threads (taken) te synchroniseren. Zelfs zeer ervaren programmeurs gaan hier nog mee de mist in. Software blijkt dan opeens niet meer op een dual-core PC te werken.
Ik gebruik vrijwel altijd een lijst met modules. Iedere module heeft een initialisatie en een run functie. De initialisatie wordt bij het starten aangeroepen, de run lus zo vaak mogelijk vanuit de hoofdlus.
Op deze manier worden alle taken achter elkaar uitgevoerd met iedere keer dezelfde volgorde. Je kunt dus nooit vage fouten krijgen vanwege taken die elkaar eens in de miljoen keer in de weg zitten. Het enige nadeel is dat je alles niet-blokkerend moet schrijven (je kunt dus niet wachten of wachtlussen gebruiken). Als je dit eenmaal gewend bent, dan is het programmeren zeer eenvoudig.
|
Marco69
Golden Member
|
Alhoewel ik het in basis wel met Nico eens ben, heeft een OS achtig iets ook wel z'n voordelen zo nu en dan. Dus om het nou bij voorbaat af te fakkelen...
Het is nou ook weer niet zo vreselijk spannend om je tasks lekker concurrent te laten runnen. En ja, er zijn een hoop slechte programmeurs
Zorg dat je NOOIT, NOOIT, NOOIT wat met Versatel Tele2 te maken krijgt!
|
Wafelijzer
|
Leuk project, mischien dat ik er wat aan de toekomst aan heb.
Jerry
|
devlaam
|
Na af en toe een avond en een weekend werk is de volgende versie van Femto OS beschikbaar. Versie 0.84. Zie http://www.femtoos.org/ . Als iemand het probeerd, hoor ik graag de ervaringen.
|
free_electron
|
ik snap niet goed waarom je voor dergelijk kleine cpu tjes een os nodig hebt.
Ik gebruik meestal een scheduler op een 8051. Een interrupt gegenereerd door een hardware timer. Die houdt bij wat er wanneer moet lopen. ik hab dan 3 andere tasks ene houdt zich bezig met i/o (lcd , keypad, serieel , usb)
de laatste 2 tasks zijn de core.
op een 8051 is dat eenvoudig. je hebt 4 registerbanken. geef aan de compiler op welke task in welke registerbank draait. zo blijven ze uit elkaars vaarwater en moet je niet pushen en poppen tussen calls. ik defineer een aantal mailboxen tussen tasks met een paar semaforen en klaar.
Professioneel ElectronenTemmer - 8 April 08 : 7.355.303
|
BitOfAVR
|
Wat is het nut van een subroutine? GOTO : EWD1243
Lid van wat de legendarische E.W.Dijkstra noemde:
"Secret Society for the Creation and Preservation of Artificial Complexity" [Bericht gewijzigd door BitOfAVR op 11 juli 2008 04:26:42]
|
devlaam
|
Er is weer eens een nieuwe versie, 0.86 Het wordt steeds bruikbaarder.  Nieuw zijn: een file systeem op het eeprom, met 'split-byte programming', en 'single write - multiple read synchronizing'. Tevens een 'event system', en veel kleine verbeteringen en toevoegingen. De hele api en alle configuratie ellende staat nu ook op de site:
http://www.femtoos.org/
Effin, voor wie er tijd voor heeft: veel plezier!
Ruud.
|
SparkyGSX
|
Ik heb ooit een OS (FreeRTOS, als ik me goed herinner) gebruikt op een ATMEGA128, op school, omdat het gebruik van een embedded RTOS een vereiste was voor de opdracht.
Nadat we de software hadden ontworpen, bleek dat we eigenlijk niets zinnigs hadden om door dat RTOS te laten doen.
In een omgeving met een GUI is een OS wel leuk, en voor complexe besturingstaken natuurlijk, maar als je in een controller alles op interrupt of polling basis doet, heb je er vrij weinig aan. Eigenlijk kun je dan alleen meerdere main-loops tegelijk hebben. Als je in een controller gaat zitten wachten op een gebeurtenis, ben je m.i. toch al verkeerd bezig. Daarbij kost het natuurlijk best veel geheugen en cpu resources, en je ben een timer kwijt (min of meer).
Ik zie hier wel vaak topics voorbij komen van mensen die problemen hebben met de blocking functies van Bascom. Hiervoor zou een RTOS wel bruikbaar kunnen zijn, maar juist de mensen die daar zelf niet uit komen, zullen grote moeite hebben om de gevaren van multitasking te begrijpen.
Eigenlijk is een RTOS op uC alleen echt bruikbaar voor ervaren programmeurs, die het juist meestal niet nodig hebben.
Los van de praktische toepasbaarheid is het natuurlijk gewoon leuk en leerzaam om ermee te spelen. [Bericht gewijzigd door SparkyGSX op 22 augustus 2008 20:39:31]
|
devlaam
|
Daarnet heb ik versie 0.87 op sf gezet. Deze bevat ports voor meer dan 30 AVR devices, zodat het Femto OS nu op bijna alle ATtiny's en ATmega's loopt.
Verder zit er in de distributie een toolchain installer die gcc-4.3.2, met binutils-2.18, libc-1.6.2 en avrdude-5.5 voor je installeert, compleet met alle patches. Daarbij worden ook de numerieke bibliotheken meegenomen die gcc tegenwoordig nodig heeft.
http://www.femtoos.org/
Effin, veel plezier ermee.
|
Stijn S
|
Erg mooi systeem. Ik heb er net wat mee zitten prutsen, en het ziet er veelbelovend uit. Prima werk!
|