Forum: Mikrocontroller und Digitale Elektronik [AVR] AVR Studio Asuro Header


von Jurij H. (kebabfreund)


Lesenswert?

Hallo,

ich habe grad meinen Asuro zusammengebaut und versuche verzweifelt ein 
erste Programm zu kompilieren.

System: Win7 x64, AVR Studio 4.18 SP2, WinAVR20100110, ASURO Lib 2.70 
rc3

Beim versuch folgendes Codes kommt eine Fehlermeldung.

Code:
1
#include <asuro.h>
2
int main(void)
3
{
4
  
5
  Init();
6
  while(1)
7
  {
8
   
9
  }
10
  return 0;
11
}

Fehlermeldung:
1
Build started 12.8.2010 at 12:42:53
2
avr-gcc -mmcu=atmega8 -Wl,-Map=ASURO.map test.o   -L"C:\ASURO_SRC\AsuroLib\lib"  -lasuro  -o ASURO.elf
3
test.o: In function `main':
4
D:\Dokumente\AVR\ASRO_test\ASURO\default/../test.c:9: undefined reference to `Init'
5
make: *** [ASURO.elf] Error 1
6
Build failed with 1 errors and 0 warnings...

In den Project Options habe ich bei Include Directories 
"C:\ASURO_SRC\AsuroLib\lib\inc\" eingefügt, bei Libraries 
"C:\ASURO_SRC\AsuroLib\lib\". Die "libasuro.a" hab ich dann noch unter 
"Link with These Objects" übernommen.

Beim instellieren der Asuro Lib (über .exe)hatte ich noch eine Meldung 
dass Winavr nicht installiert sei.

Programme die nur auf den Standart - Libraries für den AVR basieren 
gehen.

Weiss jemand Rat?

Gruss

von Jey B. (jeybee)


Lesenswert?

Kannst du mal dieses  Init(); auskommentieren? Dann solltest du 
kompilieren können...

Ich selber habe keinen Asuro aber laut der Fehlermeldung fehlt dir die 
Funktion Init();

von ich (Gast)


Lesenswert?

Was ist mit der Funktion Init(), wo kommt die her und was macht die?

von Floh (Gast)


Lesenswert?

Hier gibts ne gute Übersicht:
http://www.asurowiki.de/pmwiki/pub/html/asuro_8h.html

Ich denk bei dir stimmt der Pfad der Datei nicht.
Such mal im Ordner nach der asuro.h.

von Jurij H. (kebabfreund)


Lesenswert?

Nach dem Auskommentieren von Init() kommt das:
1
Build started 12.8.2010 at 13:04:08
2
avr-gcc -I"C:\ASURO_SRC\AsuroLib\lib\inc"  -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99           -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d  -c  ../test.c
3
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:436: warning: inline function 'MotorSpeed' declared but never defined
4
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:428: warning: inline function 'MotorDir' declared but never defined
5
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:411: warning: inline function 'FrontLED' declared but never defined
6
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:405: warning: inline function 'StatusLED' declared but never defined
7
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:436: warning: inline function 'MotorSpeed' declared but never defined
8
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:428: warning: inline function 'MotorDir' declared but never defined
9
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:411: warning: inline function 'FrontLED' declared but never defined
10
C:\ASURO_SRC\AsuroLib\lib\inc/asuro.h:405: warning: inline function 'StatusLED' declared but never defined
11
avr-gcc -mmcu=atmega8 -Wl,-Map=ASURO.map test.o   -L"C:\ASURO_SRC\AsuroLib\lib"  -lasuro  -o ASURO.elf
12
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  ASURO.elf ASURO.hex
13
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex ASURO.elf ASURO.eep || exit 0
14
avr-objdump -h -S ASURO.elf > ASURO.lss


Die Init() funktion soll halt den Controller Initialisiern, stammen tut 
sie aus der Asuro lib. Sie sollte in der "asurolib.a" sein, die dann nur 
noch gelinkt wird.

Habs nach der Anleitung http://www.henkessoft.de/Roboter/ASURO.htm 
gemacht, mit dem Unterschiede dass ich den Ordner zur asurolib.a manuell 
nahcgetragen hab.

von Jurij H. (kebabfreund)


Lesenswert?

Floh schrieb:
> Hier gibts ne gute Übersicht:
> http://www.asurowiki.de/pmwiki/pub/html/asuro_8h.html
>
> Ich denk bei dir stimmt der Pfad der Datei nicht.
> Such mal im Ordner nach der asuro.h.

Die asuro.h liegt dort wo sie sein Soll 
"C:\ASURO_SRC\AsuroLib\lib\inc\asuro.h", hab den Pfad noch extra bei den 
Projekteinstellungen  eingefügt.

von Jurij H. (kebabfreund)


Lesenswert?

Hab jetzt mal die "asuro.h" und "asuro.c" in das Projektverzeichniss 
kopiert.

Foldengendes Programm:
1
#include "asuro.h"
2
3
4
int main(void)
5
{
6
  
7
  Init();
8
  StartSwitch();
9
  while(1)
10
  {
11
   
12
  }
13
  return 0;
14
}

Die Init() schent der zu finden, bringt aber immer noch die Meldung das 
Funktionen nicht definiert sind.
1
Build started 15.8.2010 at 10:42:43
2
avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99               -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT test.o -MF dep/test.o.d  -c  ../test.c
3
../asuro.h:70: warning: inline function 'MotorSpeed' declared but never defined
4
../asuro.h:65: warning: inline function 'MotorDir' declared but never defined
5
../asuro.h:55: warning: inline function 'FrontLED' declared but never defined
6
../asuro.h:51: warning: inline function 'StatusLED' declared but never defined
7
../asuro.h:70: warning: inline function 'MotorSpeed' declared but never defined
8
../asuro.h:65: warning: inline function 'MotorDir' declared but never defined
9
../asuro.h:55: warning: inline function 'FrontLED' declared but never defined
10
../asuro.h:51: warning: inline function 'StatusLED' declared but never defined
11
avr-gcc  -mmcu=atmega8 -Wall -gdwarf-2 -std=gnu99               -DF_CPU=8000000UL -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -MD -MP -MT asuro.o -MF dep/asuro.o.d  -c  ../asuro.c
12
avr-gcc -mmcu=atmega8 -Wl,-Map=ASURO.map test.o asuro.o     -o ASURO.elf
13
avr-objcopy -O ihex -R .eeprom -R .fuse -R .lock -R .signature  ASURO.elf ASURO.hex
14
avr-objcopy -j .eeprom --set-section-flags=.eeprom="alloc,load" --change-section-lma .eeprom=0 --no-change-warnings -O ihex ASURO.elf ASURO.eep || exit 0
15
avr-objdump -h -S ASURO.elf > ASURO.lss
16
17
AVR Memory Usage
18
----------------
19
Device: atmega8
20
21
Program:    4232 bytes (51.7% Full)
22
(.text + .data + .bootloader)
23
24
Data:        265 bytes (25.9% Full)
25
(.data + .bss + .noinit)
26
27
28
Build succeeded with 8 Warnings...

Diese Funktionen kann ich auch nicht verwenden, gibt Fehler beim 
Kompilieren.

Nicht Inline Funktionen kann ich ohne Fehlermeldung in den Code 
schreiben.

Ich versteh nicht wo das Problem ist...

von Richi A. (richiii248)


Lesenswert?

Hi,
ich habe das selbe Problem wie Jurij...
Hat schon jemand eine Lösung/Erklärung gefunden, oder muss man einfach 
auf die inline-Funktionen verzichten?

von ope (Gast)


Lesenswert?

da ich mich nun auch mit dem asuro beschäftigen (darf), komme ich auch 
auf die gleichen Probleme.

Sehe ich dass richtig, dass im header einige Funktionen inline 
deklariert sind und als inline definiert werden im c file? Wie soll denn 
da ar eine Lib draus machen? Jedenfalls bekomme ich so linker errors. 
Ist die 2.71 die letzte offizielle lib? Wie ist denn der Stand der 
Dinge? Seit 2008 scheint ja nicht mehr viel zu passieren

von Karl H. (kbuchegg)


Lesenswert?

ope schrieb:

> Sehe ich dass richtig, dass im header einige Funktionen inline
> deklariert sind und als inline definiert werden im c file?

Sieht wohl so aus, wenn ich noch dem Code im Wiki gehe

Lösch die 'inline' Spezifikation aus dem Asuro.h bei den Funktionen 
raus. Da hat jemand nicht verstanden, wie das mit inline funktioniert.

PS: und aus den *.c löscht du ebenfalls alle inline raus, die du 
findest.
(zb leds.c)

von Markus J. (markusj)


Lesenswert?

Die AsuroLib von der CD ist hoffnungslos veraltet. Es gibt eine 
weiterentwickelte Version [1], die auch im o.g. Asurowiki verlinkt wird 
und auch mit neueren WinAVR-Versionen funktioniert.
Außerdem gibt es diverse andere Bibliotheken für den ASURO, unter 
anderem auch eine von mir [2].

mfG
Markus

[1] http://sourceforge.net/projects/asuro/
[2] http://sourceforge.net/projects/libtinyasuro/

von Claus K. (clako)


Lesenswert?

Hallo,
ich möchte dieses Thema nochmal aufgreifen, da ich jetzt auch mit dem 
ASURO angefangen habe und vor dem gleichen Problem stehe. Mit WINAVR 
läßt sich alles kompilieren, mit dem AVR STUDIO 4 und 5 habe ich auch 
das Problem mit dem Inline Statement. Gibt es da inzwischen eine Lösung?

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.