Programmierung von Arduino mit Ada

8

Ich kann avr-elf-windows und WinAVR nicht ausführen. Ich habe es geschafft, das mitgelieferte Beispiel mit avr-elf-windows ( ATmega2560 ) zu erstellen. Aber wenn ich versuche, einen anderen Chip zu verwenden oder die von WinAVR gelieferten Pakete und Projekte zu verwenden, bekomme ich immer Fehler, die ich nicht lösen kann.

Methode 1:

Ändern Sie das ATmega2560-Beispiel, um die WinAVR-Pakete zu verwenden.

Geändert:

%Vor%

zu:

%Vor%

Erstellen Sie eine Projektdatei zum Einschließen:

%Vor%

Running mache ich den folgenden Fehler:

  

avr-gnatmake: "C: \ WinAVR-20100110 \ lib \ gnat \ avr_lib \ avr-int_img.adb" Kompilierungsfehler

Großartig, ich habe ein Kompilierungsproblem, aber ich kann den Fehler nicht sehen.

Methode 2:

Öffnen Sie die obige Projektdatei in GPS. Ändern Sie die Build-Einstellung als gnatmake. GPS meldet jetzt Fehler und Warnungen:

  

Projektwarnung: Objektverzeichnis "avr_lib / avr5 / obj" wurde nicht gefunden   Das Projektbibliotheksverzeichnis "C: \ WinAVR-20100110 \ lib \ gnat \ avr_lib \ avr5 \ lib \" existiert nicht

Das letztere Problem ist ganz klar die Tatsache, dass ich GPS nicht richtig eingerichtet habe, um ihm die Werte von Mikrocontroller und Architektur zu erzählen, aber ich kann nichts finden, um das zu lösen.

Methode 3:

Um die WinAVR-Einrichtung direkt mit Makefiles zu verwenden, die mir dann den Fehler gibt:

  

avr-gnatmake: RTS-Pfad nicht gültig: fehlende adainclude- und adalib-Verzeichnisse

Wenn ich den Anweisungen folge, die ich durch die Suche im Internet finden kann, finde ich nur Details zum Erstellen der erforderlichen Bibliotheken unter Linux.

Plattform: Windows 7.

Mit der Kombination der beiden obigen Antworten habe ich es nun geschafft, meinen Beispielcode zu verlinken. Ob es auf dem Arduino funktioniert, ist ein anderes Thema.

Vielen Dank für die Hilfe.

Ich fand es ein wenig frustrierend, so weit zu kommen, und ich frage mich, ob es da draußen noch andere gibt, die Ada auf dem Arduino aufgeben und zur Arduino-IDE zurückkehren und somit die Gelegenheit verpassen, etwas zu lernen eine Sprache mit mehr Struktur. Es gibt viele irreführende Seiten, die auch nicht helfen.

    
Sean 30.03.2013, 21:59
quelle

3 Antworten

5
___ qstntxt ___

Ich kann avr-elf-windows und WinAVR nicht ausführen. Ich habe es geschafft, das mitgelieferte Beispiel mit avr-elf-windows ( ATmega2560 ) zu erstellen. Aber wenn ich versuche, einen anderen Chip zu verwenden oder die von WinAVR gelieferten Pakete und Projekte zu verwenden, bekomme ich immer Fehler, die ich nicht lösen kann.

Methode 1:

Ändern Sie das ATmega2560-Beispiel, um die WinAVR-Pakete zu verwenden.

Geändert:

%Vor%

zu:

%Vor%

Erstellen Sie eine Projektdatei zum Einschließen:

%Vor%

Running mache ich den folgenden Fehler:

  

avr-gnatmake: "C: \ WinAVR-20100110 \ lib \ gnat \ avr_lib \ avr-int_img.adb" Kompilierungsfehler

Großartig, ich habe ein Kompilierungsproblem, aber ich kann den Fehler nicht sehen.

Methode 2:

Öffnen Sie die obige Projektdatei in GPS. Ändern Sie die Build-Einstellung als gnatmake. GPS meldet jetzt Fehler und Warnungen:

  

Projektwarnung: Objektverzeichnis "avr_lib / avr5 / obj" wurde nicht gefunden   Das Projektbibliotheksverzeichnis "C: \ WinAVR-20100110 \ lib \ gnat \ avr_lib \ avr5 \ lib \" existiert nicht

Das letztere Problem ist ganz klar die Tatsache, dass ich GPS nicht richtig eingerichtet habe, um ihm die Werte von Mikrocontroller und Architektur zu erzählen, aber ich kann nichts finden, um das zu lösen.

Methode 3:

Um die WinAVR-Einrichtung direkt mit Makefiles zu verwenden, die mir dann den Fehler gibt:

  

avr-gnatmake: RTS-Pfad nicht gültig: fehlende adainclude- und adalib-Verzeichnisse

Wenn ich den Anweisungen folge, die ich durch die Suche im Internet finden kann, finde ich nur Details zum Erstellen der erforderlichen Bibliotheken unter Linux.

Plattform: Windows 7.

Mit der Kombination der beiden obigen Antworten habe ich es nun geschafft, meinen Beispielcode zu verlinken. Ob es auf dem Arduino funktioniert, ist ein anderes Thema.

Vielen Dank für die Hilfe.

Ich fand es ein wenig frustrierend, so weit zu kommen, und ich frage mich, ob es da draußen noch andere gibt, die Ada auf dem Arduino aufgeben und zur Arduino-IDE zurückkehren und somit die Gelegenheit verpassen, etwas zu lernen eine Sprache mit mehr Struktur. Es gibt viele irreführende Seiten, die auch nicht helfen.

    
___ tag123arduino ___ Arduino ist eine Open-Source-Prototyping-Plattform für Elektronik, die auf einfach zu bedienender Hardware und Software basiert. Fragen sollten sich nur auf Arduinos beziehen (wie in Code enthalten). Allgemeine Arduino-Fragen können unter https://arduino.stackexchange.com gestellt werden ___ answer15724713 ___
Treten Sie mit mir, wenn das nicht die unmittelbare Antwort ist; Ich habe die AVR-Ada Toolchain nur unter Linux benutzt, also müssen wir vielleicht zu einer Lösung iterieren, wenn nicht jemand anderes das Problem zuerst entdeckt.

Als erstes entschlüsseln Sie, welche Version der AVR-Ada-Tools Sie haben:

Ihre Projektdatei benötigt (mit avr-ada 1.1)

%Vor%

Jetzt mit avr-ada 1.2.1 brauchst du (statt)

%Vor%

zum Erstellen von Anwendungen und arduino.gpr für Bibliotheken.

Ich glaube nicht, dass Sie beide jemals brauchen! Und sie können miteinander in Konflikt geraten.

Ich kenne den Status des binären Windows-Builds nicht, aber wenn Sie die neueste Version benötigen (empfohlen: es ist eine echte Verbesserung), müssen Sie es möglicherweise aus der Quelle erstellen.

Methode 1 : Haben Sie Make über eine Befehlszeile ausgeführt? Wenn ja, würde ich erwarten, Fehler in allen ihren blutigen Details zu sehen.

Methode 2 : kann Ihnen hier nicht helfen, ich kenne GPS nicht gut genug. Ich kann jedoch sagen, dass unter Linux keine "avr5" -Ordner in [wo auch immer] / avr / lib / gnat / avr_lib vorhanden sind. (AVR5 ist korrekt für die 328p)

Stattdessen gibt es ein [wo auch immer] / avr / lib / avr5, das libc und andere C-bezogene Objekte enthält - einschließlich des %code% , das Rego in seinen Linker-Switches nennt, und eines [wo auch immer] / lib / gcc / avr / 4.7.2 / avr5-Ordner mit libgcc.a. Sie müssen wahrscheinlich die erste finden und GPS darauf zeigen ...

Methode 3 : Das sieht am einfachsten zu beheben. Der Befehl "gnatmake" benötigt eine Option -RTS =, die auf den richtigen RTS für den 328p zeigt. Dies sollte %code% sein, vorausgesetzt die RTS ist korrekt installiert.

Alternativ sollte ein vollständiger Pfad funktionieren. Hier wäre das

%Vor%

Unter Windows müssen Sie möglicherweise herumstöbern, um den richtigen Pfad zu finden. Bei Verwendung von Methode 1 wird diese Option - RTS automatisch von avr_app.gpr generiert.

    
___ tag123ada ___ Ada ist eine strukturierte, statisch typisierte, imperative, breitbandige und objektorientierte High-Level-Programmiersprache, die von Pascal und anderen Sprachen erweitert wurde. ___ tag123avr ___ AVR bezieht sich auf zwei Familien von 8- oder 32-Bit-RISC-Mikrocontrollern ___ qstnhdr ___ Programmierung von Arduino mit Ada ___ answer15724642 ​​___

Sie können einen Blick in das Papier Integration von 8-Bit-AVR Mikrocontrollern in Ada nehmen wollen . Grundsätzlich können Sie eine GPS-Projektdatei %code% like

verwenden %Vor%

und Sie können eine Spezifikation für Ihren ATmega328P wie

Code %Vor%

wird von Ihrer Hauptdatei oder Ihren Hauptbibliotheken importiert.

    
___ answer16249372 ___

Es scheint, dass AvrAda mit einer Mischung aus 3 oder 4 Werkzeugketten, die einen Aspekt von WinAvr darstellen, erhebliche Probleme verursacht (darunter WinAvr, Avr-Ada, Cygwin, AVR-Compiler von Adacore und MinWG).

>

Beginnend mit einem brandneuen Win7 oder Win8-Installation durchführen wie folgt vor:

%Vor%     
___
Rego 30.03.2013, 23:27
quelle
3
Treten Sie mit mir, wenn das nicht die unmittelbare Antwort ist; Ich habe die AVR-Ada Toolchain nur unter Linux benutzt, also müssen wir vielleicht zu einer Lösung iterieren, wenn nicht jemand anderes das Problem zuerst entdeckt.

Als erstes entschlüsseln Sie, welche Version der AVR-Ada-Tools Sie haben:

Ihre Projektdatei benötigt (mit avr-ada 1.1)

%Vor%

Jetzt mit avr-ada 1.2.1 brauchst du (statt)

%Vor%

zum Erstellen von Anwendungen und <same path>/avr_lib.gpr für Bibliotheken.

Ich glaube nicht, dass Sie beide jemals brauchen! Und sie können miteinander in Konflikt geraten.

Ich kenne den Status des binären Windows-Builds nicht, aber wenn Sie die neueste Version benötigen (empfohlen: es ist eine echte Verbesserung), müssen Sie es möglicherweise aus der Quelle erstellen.

Methode 1 : Haben Sie Make über eine Befehlszeile ausgeführt? Wenn ja, würde ich erwarten, Fehler in allen ihren blutigen Details zu sehen.

Methode 2 : kann Ihnen hier nicht helfen, ich kenne GPS nicht gut genug. Ich kann jedoch sagen, dass unter Linux keine "avr5" -Ordner in [wo auch immer] / avr / lib / gnat / avr_lib vorhanden sind. (AVR5 ist korrekt für die 328p)

Stattdessen gibt es ein [wo auch immer] / avr / lib / avr5, das libc und andere C-bezogene Objekte enthält - einschließlich des crtm328p.o , das Rego in seinen Linker-Switches nennt, und eines [wo auch immer] / lib / gcc / avr / 4.7.2 / avr5-Ordner mit libgcc.a. Sie müssen wahrscheinlich die erste finden und GPS darauf zeigen ...

Methode 3 : Das sieht am einfachsten zu beheben. Der Befehl "gnatmake" benötigt eine Option -RTS =, die auf den richtigen RTS für den 328p zeigt. Dies sollte --RTS=rts/avr5 sein, vorausgesetzt die RTS ist korrekt installiert.

Alternativ sollte ein vollständiger Pfad funktionieren. Hier wäre das

%Vor%

Unter Windows müssen Sie möglicherweise herumstöbern, um den richtigen Pfad zu finden. Bei Verwendung von Methode 1 wird diese Option - RTS automatisch von avr_app.gpr generiert.

    
Brian Drummond 30.03.2013 23:37
quelle
1

Es scheint, dass AvrAda mit einer Mischung aus 3 oder 4 Werkzeugketten, die einen Aspekt von WinAvr darstellen, erhebliche Probleme verursacht (darunter WinAvr, Avr-Ada, Cygwin, AVR-Compiler von Adacore und MinWG).

>

Beginnend mit einem brandneuen Win7 oder Win8-Installation durchführen wie folgt vor:

%Vor%     
Sean 27.04.2013 07:08
quelle

Tags und Links