- 3D-Druck Einstieg und Tipps         
Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 31

Thema: C-Compiler für die C-Control

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41

    C-Compiler für die C-Control

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo,

    ich hab mir mal die Arbeit gemacht einen C-Compiler für die C-Control (Vor allem für den Robby, da ich den habe) zu schreiben. Er hat nen recht lustigen Namen bekommen, ccccc, was dann für C-Control/C-Cross-Compiler steht. ccc und cccc waren bei sourceforge.net, wo ich ihn als Projekt eröffnet habe, schon belegt :P
    Derzeit ist nur eine Linux-Version verfügbar, werd mal schauen dass ich eine für Windows compilier aber ich bin hier ja hoffentlich nicht der einzige der Linux verwendet
    Ein Programmlader für Linux fehlt bis jetzt auch noch (Hab im Internet einen gefunden aber der funzt wohl nicht). Der sollte aber relativ schnell zu schreiben sein, werd ich demnächst mal machen. Daher muss man bis jetzt noch den originalen mit Wine ausführen oder ins Windows gehen.

    Der Compiler hat mehrere Vorteile zum CC-Basic-Compiler von Conrad (Eigenlob stinkt aber egal ) wie z. B. die Möglichkeit Schleifen mit mehreren Zeilen zu machen, Headerdateien einzubinden und richtige Funktionen zu schreiben.
    Headerdateien für die Verwendung mit dem Robby und ein kleines Lauflicht-Beispielprogramm sind dabei. Die Assemblerroutinen hab ich verändert weshalb ihr diese mit hochladen müsst (Sind aber in der examples/01_leds.dat schon drin). Da ist jetzt um einiges mehr Platz für weitere Assemblerroutinen da ich die unwichtigen (bzw. durch die erweiterten Funktionen vom Compiler überflüssigen) rausgeworfen habe. Ist jetzt nur noch ein bisschen mehr als die Hälfte wie davor, 138 Bytes um genau zu sein.

    Hilfe gibts bis jetzt noch nicht wirklich eine. In der Readme stehen ein paar grundsätzliche Sachen und Funktionen (Die schon ein Stück weit reichen wenn man C bereits kann), die ist aber auch noch nicht fertig geschrieben.

    Bugs sind warscheinlich noch haufenweise drin aber ihr könnt ihn ja mal testen (Falls ihr Linux habt) und sagen wie er euch bis jetzt gefällt.

    Hier die URL: http://sourceforge.net/project/showf...roup_id=165854

    PS.: Ich übernehm keine Garantie dass er funzt wie er soll und euer Robby nicht durch nen Bug die Treppe runter fährt oder sonstwas macht

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Hab jetzt die Windows-Version fertig gebracht. Hat ne Weile gebraucht weil ich die letzten Tage fast keine Zeit gehabt hab und zuerst noch nen Bug drin gehabt hab der im Windows ein schönes Fehlerbericht senden Fenster verursachte

    Die Packete wo es gibt sollten sich durch den Namen selbst erklären, aber trotzdem: Das -linux ist fürs Linux, das -win32 fürs Windows und das -src ist der Quellcode falls sichs jemand selber compilieren will

    Entpackt das Archiv einfach in irgendeinen Ordner und geht in der Konsole (Oder Eingabeaufforderung im Windows) in das Verzeichnis und gebt dort:
    bin/ccccc -a asm/ccrp5.s19 -l examples/01_leds.c
    bzw. für Windows:
    bin\ccccc.exe -a asm/ccrp5.s19 -l examples/01_leds.c
    ein, damit könnt ihr das Testprogramm compilieren und die Assemblerroutinen in die ausgegebene dat-Datei einbinden (Das geht nicht wie im CCBASIC im Quellcode, da man den sonst immer ändern muss, sondern über den Parameter -a).

    Falls ihr irgendwas nicht kapiert könnt ihr hier gern fragen.

    edit: Ich hab mal ein pdf-Handbuch erstellt, das gibts auch auf der Download-Seite weiter unten bei handbook
    noch ein edit: Im Linux-Archiv lief wohl was schief, deshalb war der Ordner gleich 3x drin. Habs geändert.

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Ich hab inzwischen den Data-Loader fertig gebracht, geht grad alles nicht so schnell weil ich bei dem Wetter auch besseres zu tun hab
    Der Data-Loader ist nur für Linux verfügbar da eine Windows-Version aufgrund des Zugriffs auf den COM-Port nicht so einfach geht und es unter Windows ja bereits CCDL.EXE direkt von Conrad gibt (Wenn ihr die Programme mit der Robby Installations-CD installiert liegt er im Installationsordner unter CCE glaub ich).
    Um das Beispielprogramm unter Linux mit dem Data-Loader hochzuladen geht ihr wieder mit der Konsole in den ccccc-Ordner und gebt dort folgendes ein wenn euer Robby an COM1 hängt:
    bin/ccdl -d /dev/ttyS0 -sc examples/ccrp5/be/01_eleds.dat
    Für COM2 z.B. braucht ihr -d /dev/ttyS1

    Nen Header für den Robby mit Basiserweiterung hab ich auch noch erstellt.
    Mit nem neuen Handbuch schauts noch schlecht aus, werd ich demnächst mal schreiben.
    Der Assemblertreiber für den Robby ist noch ein bisschen geschrumpft da ich 2 sinnlose Zeilen raus hab. Er hat jetzt noch 134 Byte.

    P.S.: Ihr dürft hier immer noch gern eure Meinung schreiben oder Fragen stellen

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Wow, da hast du dir ja heftig Arbeit gemacht!

    Wie ich sehe hast du alles selber implementiert, angefangen beim Lexen und Parsen...
    Disclaimer: none. Sue me.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Jup, war schon ein gutes Stück Arbeit. Ist eigentlich mein erstes richtiges Programm in C++

    Die ccintern-Infosammlung hat mir einiges dabei geholfen, saupraktisch um die C-Control genauer zu erforschen, kann ich nur empfehlen. Die Idee für die erweiterten Funktionen wie z. B. setregister und getregister hab ich auch dort abgeschaut.

  6. #6
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Naja, von der CC hab ich keine Ahnung, eher etwas Einblick in Compilerbau.
    Disclaimer: none. Sue me.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Ich hoff ich habs halbwegs so gemacht wie es üblich ist, hab nämlich einfach "drauf los" programmiert ohne davor irgendwelche speziellen Compilerbau-Bücher o. ä. zu lesen

    edit: Hab ein neues Handbuch hochgeladen, dort sind auch die Header-Dateien erklärt.

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Ich hab eine neue Version mit nem neuen Data-Loader fürs Linux und Header-Dateien mit weniger Bugs gemacht (Da ging eigentlich das meiste garnicht wirklich :P)

    Am Handbuch hat sich auch ein bisschen was verändert.

    Ich hoff jetzt sind die Headers bugfrei, ich hab noch 2 Beispielprogramme gemacht die gut funktioniert haben (ACS und Motoren).

    edit: In den Assemblerroutinen war auch ein Bug, also bitte neu hochladen.

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    03.06.2004
    Ort
    Düsseldorf
    Alter
    39
    Beiträge
    158
    Hallo Olli,

    ich finde Deinen Compiler recht gut. Da hast Du Dir richtig viel Arbeit gemacht (ich weiß wovon ich spreche ) Auch die Tatsache, dass Dein Compiler Open Source ist spricht meiner Meinung nach für das Projekt. Mir ist jedoch aufgefallen, dass der Compiler teilweise merkwürdigen Code erzeugt.

    Code:
    void main(){ 
     int[0] i = 1;
    }
    
    void x(){
    int[0] i = 1; return i;
    }
    
    
    CCTRL-BASIC
    19
    20 0 1 0 26 0 0 255 20 0 1 0 26 0 0 23 0 6 6
    0
    Sofern die "0" nach jeder Anweisung ignoriert würde (ob das bei allen Controllern so ist, kann ich nicht sagen) ist das zusätzliche Zeichen zumindest ineffizienter.

    Außerdem frage ich mich, ob der Compiler nicht innerhalb einer VOID Funktion ein RETURN mit Rückgabewert verbieten sollte.

    Wie sieht es eigentlich mit Pointern und structs aus. Geht das? Ich fürchte, dass man zumindest Pointer mit unter nur mit zusätzlichen Assemblerroutienen realisieren kann.

    Gruß,

    Stefan
    http://www.tappertzhofen.eu/bpp2

    Basic++ Programmiersprache
    für den C-Control I Mikrocontroller

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    08.12.2004
    Ort
    Marktoberdorf
    Alter
    36
    Beiträge
    41
    Oh, da muss ich mal schauen was da schief läuft, danke dass du mich drauf aufmerksam gemacht hast. Vielleicht ists nur im Windows, da hätte ich es selber warscheinlich ewig nicht gefunden...
    Die 0 wird aber von der C-Control 1.1 ignoriert (Sowas wie NOP in Assembler), weshalb die Programme trotzdem laufen sollten (Aber wie du schon sagtest, die verlangsamt das ganze und muss raus).

    Das verbieten von einer Rückgabe in void-Funktionen werde ich noch reinbauen, da der Compiler in der Alpha ist fehlen da noch einige Warnungen die rein sollten.

    Pointer gehen leider allein mit den Tokens der C-Control nicht, müssen also mit Assemblerroutinen realisiert werden.
    structs werde ich später noch implementieren, ich schreibs hier rein sobald ich es hab (Kann aber noch eine Weile dauern).

    edit: Hab den Bug gefunden, die Nullen waren einmal beim Befehl und einmal bei der Adresse davor drin wenn die Variable direkt bei der Deklaration initialisiert wurde. Ich mach noch ne Fehlermeldung rein wenn ne void etwas zurückgeben soll und lad es dann hoch.

    Code:
    CCTRL-BASIC
    15
    20 0 1 26 0 255 20 0 1 26 0 23 0 6 6
    0

Seite 1 von 4 123 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad