Forum: Mikrocontroller und Digitale Elektronik lizenzfrei RTOS auf HCS12 PORTIEREN mit OSEK Anpassung


von garelo (Gast)


Lesenswert?

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 !!

von antworter (Gast)


Lesenswert?

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

von Garelo G. (garel)


Lesenswert?

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

von Elektro G. (e_g)


Lesenswert?

wie währe es mit freeRTOS, gibts schon fertig für den HC12

von Garelo G. (garel)


Lesenswert?

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 !!

von antworter (Gast)


Lesenswert?

@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.

von Garelo G. (garel)


Lesenswert?

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..

von Garelo G. (garel)


Lesenswert?

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?

von Wolfram (Gast)


Lesenswert?

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.

von AVR-User (Gast)


Lesenswert?

An welcher uni studierst du denn?

von Garelo G. (garel)


Lesenswert?

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

von Garelo G. (garel)


Lesenswert?

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
Noch kein Account? Hier anmelden.