Hallo zusammen, ich wollte mal fragen, ob hier jemand den AX8-Softcore mit GCC am laufen hat. Ich möchte per SPI einen Text auf ein OSD (OSD vom Mist-Board) ausgeben. Das SPI Interface und OSD funktionieren soweit. Wenn ich die Daten "per Hand", also Byte für Byte, rüberschiebe, dann wird ein Buchstabe angezeigt. Möchte ich aber die Zeichendaten aus einem Array oder einem Array im Programmspeicher holen, dann wird nur Unsinn angezeigt. Ich hab den AX8 mit 4kB ROM und RAM ausgestattet. Das .data-Segment hab ich per Hand hinter den Stack gelegt. Gruß, SIGINT
P.S.: Ich hab festgestellt, daß das .data-Segement wohl nicht initialisiert wird. Wenn ich einer Variablen im .data -Segment noch mal ihren Wert zuweise, dann stimmt die Ausgabe. Warum ich allerdings keine Daten aus dem Programmspeicher laden kann ist mir immernoch schleierhaft.
Sigint 1. schrieb: > Warum ich allerdings keine > Daten aus dem Programmspeicher laden kann ist mir immernoch > schleierhaft. Dafür hat der AVR spezielle Instruktionen bzw. Opcodes. Da muss man doch mit _flash und PSTR arbeiten. Duke
Jo, steht alles im Header pgmspace.h . Man muss die Variable mit PROGMEM in den Flash verbannen und kann dann mit pgm_read_byte auf die Daten zugreifen. Soweit, so gut. Aber ich bekomme nur irgendwelche Zufallswerte, die allerdings Konstant sind. Anscheinend läuft irgendwas mit LPM schief. Deshalb die Frage, ob den Kern jemand am laufen hat und auf initialisierte Daten zugreifen kann ;-) Daten im .bss - Segment funktionieren ohne Probleme, wenn ich ihnen später einen Wert zuweise. Gruß, SIGINT
AX8 ist schon benutzbar, aber mal muss man selber was basteln auch, es gibt da viele möglichkeiten, aber ganz so lustig ist es nicht. Ich habe meistens den PROG memory block RAM dem AX8 zugreifbar gemacht das man es ohne LPM lesen schreiben kann, das wird dann aber wider nicht kompatible mit GCC https://hackaday.io/project/6592-dipsy dieses kleine kerl hat auch AX8 basierten demo drinne, werde ich auch weiter entwickeln..
Wie wurde das Problem gelöst? Würde es auch ein AVR8 (opencores, papilio) tun?
@Antti: Eigentlich sollte LPM funktionieren... ich kenn mich leider nicht mit Multisim aus und kann nicht nachschauen, wo es hakt. Das ROM im Speicher einblenden wäre ne möglichkeit... ich möchte aber kein Hack. Das gibt nur Probleme @Lars: Leider hab ich das Problem noch nicht gefunden. Mir fehlt aber auch die Zeit für eine intensive Fehlersuche. Den AVR8-Core hab ich schon gesehen... der scheint aber deutlich größer zu sein. Ausserdem hab ich ihn noch nicht auf einem Cyclone synthetisiert bekommen. Hab es allerdings nur kurz angetestet. Mir sind die meisten Cores noch zu komplex. Ich fang gerade erst mit FPGAs an. Gruß, SIGINT
tjah, ich werde sehr bald dem AX8 in diesem KERL http://DIPSY.COOL den AVR core erweitern mit framebuffer für WS2811 ansteurung, kannst ja mal da auch reingucken, das ist echt klein gehalten die core da https://github.com/AnttiLukats/DIPSY/tree/master/THP2015 Das zeug programmiere ich mit AVR Basic, nicht mit GCC
:
Bearbeitet durch User
Es läuft! So halbwegs ;) Ich hatte wohl mehrere Probleme. Ein Problem war, daß mein AX8 mehr Speicher hat als der AT90S2313 und GCC deshalb mist gebaut hat. Das andere Problem war, daß mein ROM mit höherem Takt getaktet wurde als vorgesehen. Hatte am Anfang Probleme und hab das zum testen eingebaut. Allerdings läuft noch was schief, wenn ich Daten im PROGMEM ablege. Dann startet mein Programm nicht. Damit kann ich aber erstmal leben. Das Dipsy kenn ich und finde ich nett. Ist für mich aber zu klein. (Resourcen und IO) Interesannt finde ich aber, daß die den AX8-Core abgespeckt haben :) Meiner braucht ~1.6kLE. P.S.: Hier mal ein Bild von meinem kleinen "Projekt"
:
Bearbeitet durch User
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.