www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Anfängerfrage Atmel µC + Usb-Bootloader


Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!
Eigentlich bin ich gerade dabei mich in das Thema µC einzuarbeiten. 
Leider klappt aber gerade der Anfang nicht so recht.

Ich benutze das AVR32-Modul von Alvidi 
http://alvidi.de/avr32_modul_bmb.html
Als Schnittstelle verwende ich den USB-Anschluss. Es wird von Windows 
auch alles korrekt erkannt.
Das Ganze programmier ich jetzt in C mit AVR32 Studio.
Als Einstieg um schnell eine funktionierende Verbindung zwischen Board 
und PC hinzubekommen bin ich nach der Anleitung vorgegangen: 
http://alvidi.de/data_sheets/erster_schritt.pdf

Leider kommt hier das Problem. Wenn ich das Programm kompiliere kommt 
folgende Fehlermeldung:


**** Internal Builder is used for build               ****
avr32-as -IC:\AVR32\AT32UC3B-1.2.2ES\UTILS 
-IC:\AVR32\AT32UC3B-1.2.2ES\UTILS\PREPROCESSOR -mpart=uc3b0256 -g3 
-otrampoline.o ..\trampoline.S
..\trampoline.S: Assembler messages:
..\trampoline.S:67: Warning: symbol "PROGRAM_START_OFFSET" undefined; 
zero assumed
..\trampoline.S:67: Error: attempt to move .org backwards
Build error occurred, build is stopped

Betreffende Zeile:
.org  PROGRAM_START_OFFSET

Ich verstehe den Fehler nicht. PROGRAM_START_OFFSET wird ja in der 
conf_isp.h definiert und in der trampoline.S wird die conf_isp.h auch 
inkludiert.

Zeile aus der conf_isp.h:
#define PROGRAM_START_OFFSET          0x00002000

Ich weiss nicht, ob ich den ganzen Quellcode wegen copyright hier posten 
darf.

Hoffentlich könnt ihr mit dem hier was anfangen. Leider hab ich wirklich 
keine Ahnung was ich falsch gemacht hab. Vielleicht ist der Fehler ja 
auch ganz offensichtlich und ihr könnt mir helfen!
Vielen Dank
Andi

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

es scheint der Suchpfad zur conf_isp.h Datei zu fehlen. Der müßte unter 
-I<pfad> beim assemblieren auftauchen.

Eingetragen wird er im AVR32 Studio unter deim Projekt in den Properties 
"C/C++ Gernal" -> "Path and Symbols"

mfg

DerDan

Autor: Peter Diener (pdiener) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist eine Meldung vom Assembler:

..\trampoline.S: Assembler messages:
..\trampoline.S:67: Warning: symbol "PROGRAM_START_OFFSET" undefined;


Das Symbol fehlt also dem Assembler.

Das
#define PROGRAM_START_OFFSET          0x00002000

klingt für mich nach einer Definition für einen C-Compiler, nicht für 
einen Assembler.

Mehr kann ich dazu nicht sagen, ich habe den Quellcode ja nicht.

Grüße,

Peter

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

der Gnu Assembler kann C-Header Dateien auswerten. Nur muss er sie auch 
finden.

Und dazu muss der Pfad richtig eingetragen sein.

Am besten benutzt man ein vorgegebenes Projekt von Atmel, dass möglichst 
gut passt.

Bist du sicher, dass "AT32UC3B-1.2.2ES" das richtige framework für 
deinen Processor ist?

Steht da was mit ES drauf (Engineering Sample)??
glaub ich eigendlich nicht

Grüße

Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also das ist der: 32UC3B0256

Den Pfad hab ich hinzugefügt, hat sich aber nix geändert. Die C-Header 
Datei ist ja auch im workspace ...

okay, das wird dann wohl am Framework liegen. Das hab ich vor ein paar 
Monaten mal runtergeladen und wohl da den Fehler gemacht.
Ich werd das mal probieren, danke schon mal!

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das sie Datei im Workspace liegt reicht nicht...


Nimm doch mal ein Example Projekt von Atmel, die laufen in aller Regel

Grüße

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,


bei mir kommt bei einem Beispiel Projekt folgende Ausgabe:
**** Internal Builder is used for build               ****
avr32-gcc -x assembler-with-cpp -c -mpart=uc3b0256 -Wa,-g 
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/USART 
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/PM 
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO 
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC 
-I../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE 
-I../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR 
-I../src/SOFTWARE_FRAMEWORK/UTILS 
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC 
-I../src/SOFTWARE_FRAMEWORK/BOARDS 
-Wa,-g3 
-osrc\SOFTWARE_FRAMEWORK\ASM\trampoline.o 
..\src\SOFTWARE_FRAMEWORK\ASM\trampoline.x

grüße

Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welches Beispiel hast du denn benutzt?
Die sind doch alle recht umfangreich...
Wenn ich da eins kompilier kommt keine Fehlermeldung.
Also gilt die Anleitung nicht für mein Board?!

Beim aktuellen Framework kommt der gleiche Fehler.

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was willst du denn mit deinem Bowrd machen?

Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
naja, zuerst wollte ich mal so einfache Sachen machen, z.B. eine LED 
blinken lassen und dann weiter darauf aufbauen. Das programmieren von µC 
ist ja auch ganz neu für mich.
Das Board hab ich nur, weil es an der Uni für andere Zwecke gebraucht 
wurde.

Autor: D. F. (Firma: EDF) (derdan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So,

nun hab ich mich hier mal angemeldet.

Also dann nimm ein Beispiel Projekt deiner Wahl und schreib dein 
Programm in dei main funktion rein.

Dann sollts laufen

mfg

Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also wenn ich einfach das Testprogramm:
#include "gpio.h" //driver of atmel include in AVR32 UC3A Framework C:\AT32UC3x-1.x.x\DRIVERS\GPIO
#include "compiler.h" //driver of atmel include in AVR32 UC3A Framework C:\AT32UC3x-1.x.x\UTILS
int main(void)
{
U32 i; //you will find this definition of >U32< in driver "compiler.h"
while(1)
{
gpio_set_gpio_pin(AVR32_PIN_PA03); //set the pin 3 on port A as high-output
for(i=0; i<1000; i++); //wait loop
gpio_clr_gpio_pin(AVR32_PIN_PA03); //set the pin 3 on port A as low-output
for(i=0; i<1000; i++); //wait loop
}
}

laufen lassen will. Einfach nur um zu testen ob das überhaupt 
funktioniert.
Wie mach ich das denn am einfachsten?
Wenn ich son Beispiel verwende werd ich doch mit viel unnützem Zeug 
zugemüllt?!

Autor: D. F. (Firma: EDF) (derdan)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja,

Zugemüll, wie du meinst. Aber mach es doch einfach mal. und sobald dein 
Programmcode läuft kannst immer noch alles rauslöschen was du als Müll 
bezeichnest.

Grüße

Autor: Andreas Dollinger (d0lli)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
cool hat funktioniert!
Jetzt muss ich nur noch stück für stück löschen :)
Vielen dank!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.