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


von Andreas D. (d0lli)


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:
1
.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:
1
#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

von DerDan (Gast)


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

von Peter D. (pdiener) Benutzerseite


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

von DerDan (Gast)


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

von Andreas D. (d0lli)


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!

von DerDan (Gast)


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

von DerDan (Gast)


Lesenswert?

Hallo,


bei mir kommt bei einem Beispiel Projekt folgende Ausgabe:
1
**** Internal Builder is used for build               ****
2
avr32-gcc -x assembler-with-cpp -c -mpart=uc3b0256 -Wa,-g 
3
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/USART 
4
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/PM 
5
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/GPIO 
6
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/FLASHC 
7
-I../src/SOFTWARE_FRAMEWORK/UTILS/LIBS/NEWLIB_ADDONS/INCLUDE 
8
-I../src/SOFTWARE_FRAMEWORK/UTILS/PREPROCESSOR 
9
-I../src/SOFTWARE_FRAMEWORK/UTILS 
10
-I../src/SOFTWARE_FRAMEWORK/DRIVERS/INTC 
11
-I../src/SOFTWARE_FRAMEWORK/BOARDS 
12
-Wa,-g3 
13
-osrc\SOFTWARE_FRAMEWORK\ASM\trampoline.o 
14
..\src\SOFTWARE_FRAMEWORK\ASM\trampoline.x

grüße

von Andreas D. (d0lli)


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.

von DerDan (Gast)


Lesenswert?

was willst du denn mit deinem Bowrd machen?

von Andreas D. (d0lli)


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.

von D. F. (Firma: EDF) (derdan)


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

von Andreas D. (d0lli)


Lesenswert?

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

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?!

von D. F. (Firma: EDF) (derdan)


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

von Andreas D. (d0lli)


Lesenswert?

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

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
Noch kein Account? Hier anmelden.