Forum: Mikrocontroller und Digitale Elektronik Xmega Scheduler


von Matthias T. (matthias_199)


Lesenswert?

Ich habe mir mal den Code hier angeschaut

https://github.com/kcuzner/kos-avr/blob/master/src/kos.c

Und mal versucht auf meinem Xmega zum laufen zu bringen.
sollten ja die gleiche Cores sein ?
Der Code schien mir simpel um mal einen Einstieg in Scheuleder zu haben

dabei bin ich auf einem Problem gestoßen er funktioniert bei mir nicht.
Genaugenommen habe ich den verdacht das der Controller nach 
kos_dispatch(task);
abstürzt.

Mache ich mal darauf fest das er immer wieder die selben Zeichen per 
UART ausgibt und Zeichen nach der dispatch dann Gehtnichtmehr.

selben test mit einer LED einschalten gemacht. Vor dispatch bekomme ich 
sie immer ran, nach dispatch nicht mehr.

leider bin ich absolut kein Assembler Profi, bin aber den kos_dispatch 
mal durchgegangen (auch mit dem LED test) und es sieht aus als ob der 
Rücksprung den Crash verursacht.

MFG Matthias

EDIT: Meine main
1
/**
2
 * Main file for OS demo
3
 */
4
5
#ifndef F_CPU
6
#define F_CPU 32000000UL
7
#endif
8
9
#if (__GNUC__ == 4 && __GNUC_MINOR__== 9 && __GNUC_PATCHLEVEL__ == 2)
10
#ifndef MMCU
11
#define MMCU atxmega256a3u
12
#include <avr/io.h>
13
#include <avr/xmega.h>
14
#endif
15
#endif
16
17
#if (__GNUC__ == 4 && __GNUC_MINOR__== 8 && __GNUC_PATCHLEVEL__ == 2)
18
#ifndef MMCU
19
#define MMCU atxmega256a3
20
#include <avr/io.h>
21
#endif
22
#endif
23
24
#include <xmega_os/kos.h>
25
26
#include <avr/interrupt.h>
27
#include <avr/pgmspace.h>
28
#include <util/delay.h>
29
#include <stdint.h>
30
#include <util/delay.h>
31
#include <avr/sleep.h>
32
#include <avr/eeprom.h>
33
#include <util/atomic.h>
34
35
#include <xmega_uart_driver/uart.h>
36
#include <serial_definitions/serial_definitions.h>
37
#include <serial_debug_msg/serial_debug_msg.h>
38
39
void Clock32MHZint(void)
40
{
41
    ATOMIC_BLOCK(ATOMIC_RESTORESTATE)
42
    {
43
        OSC.CTRL = OSC.CTRL | OSC_RC32MEN_bm | OSC_RC32KEN_bm;
44
        while(!(OSC.STATUS & OSC_RC32MRDY_bm));
45
        RTC.PER = 65535;
46
        //RTC.PER = 61878;
47
        CLK.RTCCTRL = 0x05; //1024hz from internal and enable
48
        while(RTC.STATUS & RTC_SYNCBUSY_bm);
49
        RTC.CTRL  = RTC_PRESCALER_DIV1_gc;
50
        CCP = CCP_IOREG_gc;
51
        CLK.CTRL = CLK_SCLKSEL_RC32M_gc;
52
    }
53
}
54
55
static KOS_Semaphore *sem;
56
57
static uint8_t val;
58
59
UartBuffer* Uart0_p;
60
61
static uint8_t st[128];
62
void the_task(void)
63
{
64
    //init timers here
65
    while (true)
66
    {
67
        kos_semaphore_pend(sem);
68
        //set timer register null
69
        val++;
70
    }
71
}
72
73
int main(void)
74
{
75
76
77
78
    Clock32MHZint();
79
    sei();
80
81
    // Enable PMIC interrupt all
82
    PMIC.CTRL |= PMIC_LOLVLEN_bm | PMIC_MEDLVLEN_bm | PMIC_HILVLEN_bm;
83
84
    uartInitLib();
85
    UartBuffer UART0 = uartInitBufferAndHardware_new( &USARTC0, USART_DREINTLVL_LO_gc, USART_RXCINTLVL_HI_gc, 500, 500, uBscale_m7, 2094, &PORTC, PIN3_bm, PIN2_bm);
86
    uartEnable(&UART0);
87
    Uart0_p = &UART0;
88
89
    //serial_debug_msg_print(Uart0_p,1, "LODDL!",true);
90
91
    kos_init();
92
93
    sem = kos_semaphore_init(0);
94
95
    kos_new_task(&the_task, &st[127]);
96
97
    kos_run();
98
99
100
    //serial_debug_msg_print(Uart0_p,1, "D",true);
101
102
103
    while (true) {
104
105
    }
106
107
108
    return 0;
109
}
110
111
// NEW ISR ISR(TIMER0_OVF_vect)
112
//{
113
//    kos_isr_enter();
114
//    kos_semaphore_post(sem);
115
//    kos_isr_exit();
116
//}

: Bearbeitet durch User
von Berry (Gast)


Lesenswert?

#include <util/delay.h>

Hast du zweimal geschrieben. Sollte kein Problem sein, aber mein weiß ja 
nie.

LG Berry

von Matthias T. (matthias_199)


Lesenswert?

neee das war nicht das Problem, wäre schön gewesen wenn es so wäre XD

von Hugo H. (hugohurtig1)


Lesenswert?

Matthias T. schrieb:
> https://github.com/kcuzner/kos-avr/blob/master/src/kos.c

Warum fragst Du nicht dort nach? Wäre doch nahe liegend - oder?

von Matthias T. (matthias_199)


Lesenswert?

tatsache danke :)

von c-hater (Gast)


Lesenswert?

Matthias T. schrieb:

> Ich habe mir mal den Code hier angeschaut
>
> https://github.com/kcuzner/kos-avr/blob/master/src/kos.c

> Genaugenommen habe ich den verdacht das der Controller nach
> kos_dispatch(task);
> abstürzt.

Nö. Der landet einfach im Idle-Task des "OS" und dreht dort endlos seine 
Runden...

Weil: es gibt in deinem Programm nix, was ihn davon wieder abbringen 
könnte...

Dazu wäre eine ISR nötig, die deinen Semaphor signalisiert. Dann würde 
the_task mal wieder zum Zuge kommen...

Kurzfassung: Du hast einfach nicht verstanden, was die Scheiße 
eigentlich tut (und vor allem: was sie NICHT tut...).

Da dich der Code offensichtlich überfordert: Wie wäre es, erstmal das 
README zu lesen? Da wird erklärt, wie das System funktioniert.

Im übrigen ist es nicht sehr gut. Es benutzt das T-Flag für eigene 
Zwecke. Damit kann kein Task-Code sauber laufen, der das seinerseits 
benutzt.

Solange aber kein Task mit dem T-Flag hantiert, läuft der Kram. Mehr 
oder weniger... Entsprechend der Beschreibung im README.

Aber insgesamt ist dieser Scheduler ein schönes Beispiel für völlig 
nutzlosen, absolut sinnbefreiten Code. Viele Bytes Ram und Flash 
benutzt, um letztlich praktisch nix nützliches zu tun. Sieht mir nach 
einer akademischen Übung aus, nicht nach etwas, was irgendwie für einen 
praktischen Einsatz gedacht ist.

von Matthias T. (matthias_199)


Lesenswert?

naja das er nur im Idel ist kann nicht stimmen!

Denn wie gesagt er gibt das LOOL immer wieder in einer schleife aus.

und das nicht mal vollständig !

Meine Erwartung währe gewesen da es für testzwecke ist das er einmal das 
LOOL
ausgibt und dann eben im Idel landet, tut er aber nicht ! wenn ich den 
LED code in den muster Task einfüge  gehen sie auch nicht an. D:H der 
Task wird gar nicht angesprochen ! bzw wie gesagt der MCU crasht! ist 
der LED code hinter dem KOS run passiert auch nix, da die uart Zeichen 
immer kommen muss er also das Programm von vorne abspielen.

Schade das du nicht auf normaler und un beleidigende ebene kommunizieren 
kannst!

MFG
Matthias

Beitrag #6135693 wurde von einem Moderator gelöscht.
Beitrag #6136018 wurde von einem Moderator gelöscht.
Beitrag #6136020 wurde von einem Moderator gelöscht.
von Einer K. (Gast)


Lesenswert?

my2ct schrieb im Beitrag #6136018:
> Schade, dass manche die Wahrheit nicht vertragen können und dann
> plötzlich vom eigentlichen Problem auf ein Thema überwechseln, dass eher
> in den Kommunikationswissenschaften einzuordnen ist.

Jedes Posting hat meist/immer fachliche und soziale Aspekte.
Unvermeidbar.

Und, dass unser C-Hasser irgendeine neurotische Fehlanpassung mit sich 
rum trägt, ist ja nun wirklich nix neues.
In Sachen sozialer Kompetenz bewegt er sich bestenfalls auf der Höhe 
einer Bordsteinkante.

PS:
> Wenn irgendwo eine Schraube locker ist,
> liegt es meist an der Mutter.

von Matthias T. (matthias_199)


Lesenswert?

Naja da ich gerne Hilfe will und nicht nur still rumsitze .... und 
raum-jaule. oder Probleme in der  Kommunikationswissenschafte suche ...
Rein mal so was hat es mit Wahrheit verkraften zutun wenn man probiert 
und spielt um zu lernen und an gewissen punkten mal nachfrag.....

Egal für die die noch mitlesen und Sinnvolles posten wollen.
Ich habe auch mal folgenden Scheuleder probiert.

https://github.com/kuro68k/xmultitasking

Der ist auch für Xmegas ausgeschrieben und lief out auf The box.

D.H scheint es im AVR cote zwischen den Generationen doch unterscheide 
zu geben.
Die man auf die schnelle als Anfänger nicht sieht!

von Wolfgang (Gast)


Lesenswert?

Matthias T. schrieb:
> ... Scheuleder ...

Sprich mal ein ernstes Wort mit deine 
Rechtschreibverunstaltelungssoftware
https://www.duden.de/rechtschreibung/Scheuleder

von c-hater (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:

> In Sachen sozialer Kompetenz bewegt er sich bestenfalls auf der Höhe
> einer Bordsteinkante.

Also etwa so wie deine fachliche...

Na schau'n wir mal, was dem TO bei seinem Problem mehr hilft, die harten 
Fakten oder die sozialkompetenten Wattebällchen auf seiner 
verletztlichen Seele...

Also ich würde doch ganz stark auf ersteres tippen...

von Hugo H. (hugohurtig1)


Lesenswert?

Hügo schrieb im Beitrag #6136020:
> Genau! Frag dort nach! Hier wirst eh nur dumm angelabert...

Mit Dumm kennst Du Dich wohl aus.

Mein Hinweis war durchaus ernst gemeint. Wenn Matthias ein "RTOS" nutzen 
will, von dem der Entwickler schreibt:

"...  There are many other options available which are likely better 
written and easier to use, but I'm going to have more fun doing it this 
way. ..."

dann soll er bei Problemen halt dort nachfragen. Wer soll sich denn hier 
mit einem Exoten auskennen? Der Entwickler hat eine eigene Homepage und 
ist dort auch aktiv.

von c-hater (Gast)


Lesenswert?

Hugo H. schrieb:

> Wer soll sich denn hier
> mit einem Exoten auskennen?

Natürlich niemand, einschließlich meiner Wenigkeit.

Aber: der Code ist so kurz und das README erklärt seine Funktion so 
treffend, dass jeder Nicht-Vollidiot den Kram zum Laufen bekommen 
sollte.

Und übrigens: Nein, es hat exakt nix mit "classic AVR8 cores" vs. "XMega 
cores" zu tun. Es gibt natürlich Unterschiede zwischen diesen Cores, 
aber keiner davon hat bezüglich dieses Codes IRGENDEINE Relevanz. Wenn 
man mal davon absieht, dass der Code auf den ganz kleinen klassischen 
Tinys mit nur 16 Registern natürlich nicht lauffähig ist. Aber das würde 
schon beim Compilieren mit den entsprechenden Fehlermeldungen quittiert 
werden, weil halt R0..R15 dort nicht existieren. Außerdem würde auf 
diesen Teilen auch der RAM nicht reichen und es gäbe keinen 
Stackpointer. All das würde auch bereits zur Compilezeit gemeldet 
werden.

Fakt ist: der Code ist so, wie er ist auf jedem AVR8 mit dem vollen 
Registersatz lauffähig. Wenn man weiß, wie er zu verwenden ist. Ende der 
Ansage.

von Matthias T. (matthias_199)


Lesenswert?

Issue ist schon offen. Mir ist auch durchaus klar was der Autor 
geschrieben hat, soll ja nicht gleich ins produktive wandern, aber um es 
mal zu probieren spielen testen warum nicht.

Wie will man denn sonst Erfahrung und ein Gefühl dafür bekommen.
Sind ja nicht alle mit Fachwissen vom himmel gefallen.

von Matthias T. (matthias_199)


Lesenswert?

Wolfgang schrieb:
> Matthias T. schrieb:
>> ... Scheuleder ...
>
> Sprich mal ein ernstes Wort mit deine
> Rechtschreibverunstaltelungssoftware
> https://www.duden.de/rechtschreibung/Scheuleder

https://www.maennersache.de/menschen-die-andere-auf-rechtschreibfehler-hinweisen-sind-schwachkoepfe-10321.html

von c-hater (Gast)


Lesenswert?

Matthias T. schrieb:

> Issue ist schon offen.

OMG

Genau deswegen vermeide ich es weitestgehend, Code zu publizieren...

Jeder grenzdebile Vollidiot, der nur zu doof ist, zu begreifen, wie der 
Code zu nutzen ist, weil er einfach nicht versteht, was der Code tut, 
macht einen "Bug"-Report...

Es ist praktisch unmöglich (jedenfalls mit akzeptablem Zeitaufwand) aus 
dieser Flut von Reports die rauszufischen, die einen tatsächlichen 
Fehler melden...

Deswegen ist auch meine Hochachtung vor jenen, die sich diesen 
Widrigkeiten freiwillig aussetzen, sehr hoch.

von Bombing for piece (Gast)


Lesenswert?

Bombing for Peace bekommt in diesem Forum einen völlig neuen 
Zusammenhang. Vielleicht sollten die USA mal die Mikrocontroller-Server 
zerbomben.

Anders ist das Klima hier nicht mehr auszuhalten.

von Michael T. (Gast)


Lesenswert?

Matthias T. schrieb:
> Wolfgang schrieb:
> Matthias T. schrieb:
> ... Scheuleder ...
>
> Sprich mal ein ernstes Wort mit deine
> Rechtschreibverunstaltelungssoftware
> https://www.duden.de/rechtschreibung/Scheuleder
>
> 
https://www.maennersache.de/menschen-die-andere-auf-rechtschreibfehler-hinweisen-sind-schwachkoepfe-10321.html

Diese Studie kenn ich, jedoch etwas extremer:

https://www.bento.de/haha/neue-studie-ziegt-nur-arschloecher-weisen-auf-tippfelher-hin-a-00000000-0003-0001-0000-000000465151

von Hugo H. (hugohurtig1)


Lesenswert?

c-hater schrieb:
> Es ist praktisch unmöglich (jedenfalls mit akzeptablem Zeitaufwand) aus
> dieser Flut von Reports die rauszufischen, die einen tatsächlichen
> Fehler melden..

Es geht hier nicht um Fehler - es geht um Fragen zur Anwendung. Mir 
persönlich ist diese Entwicklung vollkommen egal - aber wenn ich Fragen 
hätte würde ich die dort stellen - und nicht hier.

von Matthias T. (matthias_199)


Lesenswert?

Bombing for piece schrieb:
> Bombing for Peace bekommt in diesem Forum einen völlig neuen
> Zusammenhang. Vielleicht sollten die USA mal die Mikrocontroller-Server
> zerbomben.
>
> Anders ist das Klima hier nicht mehr auszuhalten.

Schade um das Forum war mal anders.
Liegt aber auch nicht an den mods, obwohl da mal ein Machtwort fallen 
könnte. (die es wohl auch schon leid sind)

Liegt an so Menschen!

: Bearbeitet durch User
von c-hater (Gast)


Lesenswert?

Matthias T. schrieb:

> schade um das Forum war mal anders.

Ja. Damals(tm) waren die Leute mit weniger Ahnung noch bereit zum 
Lernen...

Heute herrscht Anspruchsdenken vor: Keinen eigenen Gehirnschmalz 
investieren zu müssen und am Besten den benötigten Code für das konkrete 
Problem von irgendwem anders für lau zu bekommen. Am besten dann auch 
noch sofort, sonst wird die Anfrage hochgepusht...

von Matthias T. (matthias_199)


Lesenswert?

Danke ! machst du ja quasi dann für mich die letzten 24 Stunden fleißig 
!

PS : ich hab nirgends Code verlangt das war ne Frage auf den Crash.
Wo du ohne Praktisch mal versucht hast zu probieren ob es wirklich auf 
nen Xmega läuft einfach meine Intelligenz angreifst und das gegenteil 
behauptest.
Danke fürs das (nicht)lesen.

von Hugo H. (hugohurtig1)


Lesenswert?

Matthias T. schrieb:
> Wo du ohne Praktisch mal versucht hast zu probieren ob es wirklich auf
> nen Xmega läuft einfach meine Intelligenz angreifst und das gegenteil
> behauptest.

Warum sollte es irgendjemand probieren wollen? Du willst das - dann 
frage doch den, der es entwickelt hat. Bist Du der englischen Sprache 
nicht mächtig? Google translate hilft da schon (radebrechend - aber 
immerhin).

: Bearbeitet durch User
von Matthias T. (matthias_199)


Lesenswert?

wie gesagt ist schon erledigt, ich gebe zu es ging mir auch darum Leute 
wie c-hater etwas in die schranken zu weißen, so ein Umgang geht einfach 
gar nicht und erschreckt bestimmt viele die gerade erst anfangen!

von Hugo H. (hugohurtig1)


Lesenswert?

Matthias T. schrieb:
> Der Code schien mir simpel um mal einen Einstieg in Scheuleder zu haben

Matthias T. schrieb:
> ich gebe zu es ging mir auch darum Leute
> wie c-hater etwas in die schranken zu weißen, so ein Umgang geht einfach
> gar nicht und erschreckt bestimmt viele die gerade erst anfangen!

Passt für mich nicht zusammen. Sorry.

von c-hater (Gast)


Lesenswert?

Matthias T. schrieb:

> wie gesagt ist schon erledigt

Wie genau? Da bin ich jetzt hoch gespannt...

von Hugo H. (hugohurtig1)


Lesenswert?

c-hater schrieb:
> Wie genau? Da bin ich jetzt hoch gespannt...

Kannst Du bleiben - da kommt nichts mehr ...

von Matthias T. (matthias_199)


Lesenswert?

Kann auch nicht zusammenpassen sind ja zwei verschiedene Dinge.

Das eine war der eigentliche zweck, das andere hat er selber 
heraufbeschworen.

Mach ich schon schon die ganze Zeit du Troll ich amüsiere mich über 
dich, was erwartet du denn sonst das ich dir drohe ? und dich beleidige. 
Sorry dann wäre ich ja auf deiner Ebene da wollte ich die nächsten 99 
Jahre eigentlich nicht hin.

von Matthias T. (matthias_199)


Lesenswert?

wie gesagt Issue ist offen....

von Matthias T. (matthias_199)


Lesenswert?

Und was meinst du da kommt nix mehr, ich arbeite halt nebenbei und schau 
nicht alle 5 Minuten nach dem Troll :)

von Wolfgang (Gast)


Lesenswert?

Matthias T. schrieb:
> Und was meinst du da kommt nix mehr, ich arbeite halt nebenbei und schau
> nicht alle 5 Minuten nach dem Troll :)

Wenn du dermaßen abgelenkt bist, verstehe ich auch, dass du auf den 
kleinen Unterschied zwischen Scheuklappen und Scheduler keinen 
besonderen Wert legst.
Sorry

von Matthias T. (matthias_199)


Lesenswert?

sorry Wolfgang das hat mit Scheuklappen nichts zutun von c-hater kam 
nicht verwertbares oder getestetes, Hugo hat mir den guten Tipp gegeben 
mich an den Entwickler zu wenden was ich inzwischen auch getan habe.

eine Email und ein Issue ist halt kein Schlagabtausch wie beim Boxen ... 
und dauert

Und klar bin ich angelenkt ich mache eben sinnvolle Dinge und spiele mit 
dem neuen Scheduler Code den ich verlinkt habe ....

: Bearbeitet durch User
von Hugo H. (hugohurtig1)


Lesenswert?

Matthias T. schrieb:
> Und klar bin ich angelenkt ich mache eben sinnvolle Dinge und spiele mit
> dem neuen Scheduler Code den ich verlinkt habe ....

Dann sollte man den Thread doch wohl schließen.

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.