Hallo zusammen, ich muss für eine Uni-Projektarbeit ein freies RTOS auf ein HCS12 (16 Bit von Motorolla)portieren und es OSEK-OS konform anpassen. Ich bin neu im Bereich und habe überhaupt keine Ahnung wie Aufwändig sowas wäre. Oder anders rum kennt jemand ein freis RTOS was sich am bestens OSEK-OS näht und ein Port für den HCS12 hat? Ist sowas in 4 Monaten(1 Mann Projekt)überhaupt realistisch? Die aktuelle VDX-OSEK Spec lese ich gerade allerdings ist das ganze doch ein wenig viel wenn man nie ein fertiges OSEK mal verwendet hat (außer lesen). Bitte mir nicht sagen wie doof ich bin oder was ich alles an Grundlagen lesen muss usw..brauche einfach alle mögliche brauchbare Tipps bevor ich mich entweder definitiv abmelde oder das Projekt weiterziehe. Danke und hoffentlich meldet sich ein(E)r !!
Wer - wie ich - oberflächliches Interesse hat und sein Nichtwissen reduzieren möchte: Es handelt sich um einen wohl von Siemens initiierten Standard. "OSEK/VDX is a joint project of the automotive industry. It aims at an industry standard for an open-ended architecture for distributed control units in vehicles." Die Spezifikation gibts hier: http://portal.osek-vdx.org/files/pdf/specs/os223.pdf
ja danke "antworter" ..ich brauche leider mehr inputs als zu wissen wer der OSEK Standard initiiert hat usw...ich möchte konkret wissen wie ich am bestens bei so einer Aufgabe vorgehen soll..oder ob ich z.B lieber etwas kleineres selber kochen muss statt das fertige RTOS ewig zu massieren...wie ist der Aufwand einzuschätzen usw.. Außerdem habe eben gesagt dass ich die Spec grad lese
wie währe es mit freeRTOS, gibts schon fertig für den HC12
war schon auf der Seite von FreeRTOS..anscheinend gibts da viel zu tun um es OSEK konpatible zu machen..oder irre ich mich!! ein Freund meinte dass Ecos besser wäre..habe aber keinen PORT für den HCS12 dafür gefunden oder weiss jemand besseres drüberrrr !!
@Garelo: Die Antwort war nicht für Dich gedacht, sondern diejenigen, die Dir mit ein wenig mehr Informationen an der Hand helfen könnten (mehr als nur Deine Schlagworte). Also quasi indirekte Hilfe. Sei's drum... viel Glück.
ok sorry "Antworter" hatte es nicht kapiert...habe aufs WE gehofft um weitere Beiträge zu bekommen, leider scheint es nicht so der Fall zu sein!!Übrigens hatte auch gar nicht so das Gefühl dass mein Text eine Sammlung von Schlagwörter wäre..kann auch weitere Details liefern falls sich ein(E)r es wünscht..
ich habe gerade eine sehr interessante Studienarbeit im Internet gefunden, das ganze ist an der FH Esslingen angesiedelt denke ich !! unter http://www2.hs-esslingen.de/~frruit00/ zu finden..das wird mir hoffentlcih den Einstieg erleichtern !! Was denkt Ihr?
Deine Frage war ob 1 Mann das in 4 Monaten schaffen kann. Antwort : ja Leider lieferts du überhaupt keine Hinweise über deinen Wissensstand. Insoweit kann keiner beantworten, ob du dieser Mann bist. Nichts für ungut aber ich würde sagen, jemand der sowas hinbekommt hat es nicht nötig diese Frage in dieser Form zu posten, sondern würde konkrete Fragen stellen bzw. Informationen liefern.
ja eben, am Anfang sagte ich dass ich alles mögliches an input brauche weil ich nicht wusste was man für so eine Aufgabe brauche! konkrete Frage werden wahrscheinlich im Laufe der nächsten Tagen kommen. Ich weiß noch viel zu wenig zum Thema..zu meinem Wissenstand: kann bzw. behaupte mal in c zu programmieren(2 Semester). Ich kann leider nicht an alles denken beim posten, daher würde ich euch bitten die vergessene Punkte nachzuhacken. Danke
Hallo, so nach langer Tortur im "HCS12+RTOS+STACK+ASSEMBLER" Lager bin ich wieder dabei..mittlerweile habe ich mich entschieden ein OSEK konformes OS selber zu schreiben...und bin ein Stück weitergekommen. Ich habe erstmal einen einfachen Taskwechsel zwischen 3 Tasks realisiert(siehe Code unten). Nun meine Frage wie kann ich das gesammte OSEK am bestens organisieren (in Module aufteilen) statt ohne Planung eine Fülle von Funktionen zu schreiben. Auf eure Antwort wäre ich sehr dankbar.. TASK(TASK_IDLE) { typ_UI_16 idx, idx2 ; while (TRUE) { PA1 ^= TRUE; /* led anzeige */ for(idx=0;idx<0xFFFF;idx++){ for(idx2=0;idx2<100;idx2++); } /* Delay Test */ Os_pre_task = TASK_IDLE; Os_next_task = TASK1; __TRAP_SWI; /* swi */ //os_simple_schedule_bcc1(); /* Test: freiwillige CPU Abgabe */ } } TASK(TASK1) { typ_UI_08 simpleCnt_1 = 0; /* zaehler von 0 bis 128 */ typ_UI_16 i, idx2; while (TRUE) { // simpleCnt_1++; // simpleCnt_1 = ( simpleCnt_1 == 0x80 ? 0 : simpleCnt_1 ); PA3 ^= TRUE; /* rotes led anzeige */ for(i=0;i<0xFFFF;i++){ /* Delay Test */ for(idx2=0;idx2<100;idx2++); } Os_pre_task = TASK1; Os_next_task = TASK2; __TRAP_SWI; /* Test: freiwillige CPU Abgabe */ } } TASK(TASK2) { static typ_UI_08 simpleCnt_2 = 0x81;/* zaehler von 129 bis 255 */ typ_UI_16 i, idx2; while (TRUE) { /*~T*/ PA5 ^= TRUE; /* gelbes led anzeige */ //simpleCnt_2++; //simpleCnt_2 = ( simpleCnt_2 == 0xFF ? 0x81 : simpleCnt_2 ); for(i=0;i<0xFFFF;i++){ /* Delay Test */ for(idx2=0;idx2<100;idx2++); } Os_pre_task = TASK2; Os_next_task = TASK_IDLE; __TRAP_SWI; /* Test: freiwillige CPU Abgabe */ } } /* isr routine zum swi Befehl bzw. __TRAP_SWI */ @near @interrupt void isr_main_swi_context_switch (void) { //_asm ("sei\n");/* I Bit wird automatisch gesetzt=>sei ueberfluessig */ /*~+: erstmal SP sichern*/ __STORESP(); /* sts _tmpSP*/ /*~+:Stackpointer im TCB des unterbrochenen Task rettern*/ TaskList[Os_pre_task].p_TCBStackTop = (OS_STK *)tmpSP; p_TCBNextRun = &TaskList[Os_next_task]; #asm ; Register aus dem TCB Task in Prozessor laden ldx _p_TCBNextRun ; Stack Pointer auf neue Task setzen lds 0,x #endasm /* rti wird hier autmatisch eingefuegt */ /* rti ==> restores CCR,D,X,Y Reg and the ReturnAdress from the Stack */ }
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.