PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Problem mit erstellen des hex-filles



sweetsuit
14.11.2009, 16:25
Hallo

Hab mir neulich den RP6 zugelegt.
Der Selftest lief perfekt, aber als ich mein erstes Programm hochladen wollte gabs Probleme.
Auf meinem Pc is xp und ich verwende das mitgelieferte Programmers notepad 2 von winavr.
Wie erstelle ich jetzt die Hex-Datei.

Wenn ich auf Make all klicke, dann kommt:
> "make.exe" all
make.exe: *** No rule to make target `all'. Stop.

> Process Exit Code: 2
> Time Taken: 00:00

Hat es vieleicht damit was zutun, dass ich kein neues Projekt erstellt hab
und unter was muss ich das dann speichern Filename.c oder hex oder was?

Dirk
14.11.2009, 18:00
Hallo ...,

für ein eigenes Programm machst du Folgendes:
1. Einen eigenen Unterordner im Ordner RP6BASE_PROGRAMS anlegen (z.B. MeinProg_01).
2. In den neuen Ordner (MeinProg_01) kopierst du make_all und make_clean aus irgendeinem Demo-Programm und natürlich dein eigenes Programm.
3. Von einem ähnlichen Demo-Programm (was also ähnliches macht wie dein Programm) kopierst du makefile in den neuen Ordner.
4. Mit einem Editor (kann auch Notepad 2 sein) öffnest du das makefile.
5. Du änderst die Zeile TARGET = ... so, dass da anstelle von ... der Name deines Programms (ohne .c) steht.
6. Etwas weiter unten im makefile suchst du Zeilen, die mit SRC = beginnen, und überprüftst, ob da alle Libraries eingebunden werden, die dein Programm braucht.

Das wars.

Gruß Dirk

sweetsuit
14.11.2009, 21:36
Das Programm sieht so aus:

#include "RP6RobotBaseLib.h"

int main(void)
{
initRobotBase();
powerON();

moveAtSpeed(60,60);
startStopwatch1();

while(true)
{
if(getStopwatch1() > 4000)
{
if(getDirection() == FWD)
changeDirection(BWD);
else if(getDirection() == BWD)
changeDirection(FWD);
setStopwatch(0);
}
task_motionControl();
task_ADC();
}
return 0;
}

Und nachdem ich einen Neuen Ordner Erstellt hab, Make all und Make clean und das Programm mit .c gespeichert hab, Das makefile reinkopiert hab und ein neues Target angegeben hab, kommt diese Fehlermeldung:

ersteFahrt.o: In function `main':
C:\Dokumente und Einstellungen\D15cH\Desktop\Roboter u. Programmieren\zips\RP6Examples\RP6BASE_EXAMPLES\er steFahrt/ersteFahrt.c:19: undefined reference to `setStopwatch'
make.exe: *** [ersteFahrt.elf] Error 1

> Process Exit Code: 2
> Time Taken: 00:01

Dirk
15.11.2009, 12:12
undefined reference to `setStopwatch'

Sieh dir mal die Zeile:
setStopwatch(0);
genauer an!

Gruß Dirk

sweetsuit
15.11.2009, 12:52
Danke
Problem gelöst

HarryP84
15.11.2009, 17:58
Hallo

ich habe deinen Beitrag mit "Freude" verfolge weil ich am selben Problem leide. Allerdings folgt bei mir jetzt schon ein neues Problem ich habe allen Angaben von Dirk Folge geleistet; Allerdings bekomme ich jetzt folgende Fehlermeldung

"no rule to make target ´main.elf´ , need bei ´elf´. Stop


Ich hoffe ihr könnt mir da ein wenig weiter helfen weil ich schhon Stunden gegoogelt und probiert hab.

MfG HarryP

Sceloporus
15.11.2009, 19:00
Hallo,

Ich habe das selbe Problem!

Habe eine Test.c erstellt und mit einem Beispielprogramm gefüllt. Ich nutze WinAVR und habe die makefile unter "Project->Configuration Options->Use external makefile" hinzugefügt.

In der Makefile habe ich "TARGET = Test" eingetragen.

Leider funktioniert es nicht.


make: *** No rule to make target `Test.elf', needed by `elf'. Stop.

SlyD
16.11.2009, 13:59
Du meinst vermutlich AVRStudio? WinAVR hat mit AVRStudio nix zu tun.

Kann sein das Du die Verzeichnisstruktur nicht richtig angelegt hast oder AVRStudio nicht mit dem Makefile klarkommt. Ruf mal make direkt in einer Text Konsole auf oder probier es wie in der RP6 Anleitung beschrieben mit Programmers Notepad. Klappt es da?

falls nicht, s.
https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=48027#441942

(den link zum Projekt Template meine ich)
Auf jeden Fall vorher die aktuelle lib von arexx.com/rp6 herunterladen und das in dem template vorhandene lib verzeichnis damit ersetzen - die in dem RP6_project_template.zip vorhandene RP6Lib ist schon etwas älter und ist nur dazu da zu zeigen wo die library hingehört damit es funktioniert.

MfG,
SlyD

HarryP84
16.11.2009, 16:27
Hallo,

hab meinen Fehler gefunden.
Und zwar hab die mein Programm geschrieben und als ´main´ gespeichert und nicht als ´main.c´
jetzt klappts wunderbar und bin am werckeln wie ich .cpp programme schreiben und in hex comilieren kann.

MfG Harryp