PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Fehlermeldung bei make all



3ner
15.10.2012, 19:32
Ich benutze Linux, habe also kein WinAVR oder so installiert, sondern avr-gcc und co aus den Repos.
Ich denke allerdings mir fehlt da irgendwas, weiß aber nicht mehr weiter was das wohl ist.
Jedenfalls bekomme ich sowohl mit der originalen Library, als auch mit der AsuroLib von Sourceforge ne Fehlermeldung, wenn ich mein erstes kleines Programm kompilieren will:

set -e; avr-gcc -MM -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -I../../lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=../../lib/asuro.lst ../../lib/asuro.c \
| sed 's,\(.*\)\.o[ :]*,\1.o \1.d : ,g' > asuro.d; \
[ -s asuro.d ] || rm -f asuro.d
../../lib/asuro.c:222:9: error: attempt to use poisoned "SIG_OVERFLOW2"
../../lib/asuro.c:239:8: error: attempt to use poisoned "SIG_OUTPUT_COMPARE2"
../../lib/asuro.c:267:9: error: attempt to use poisoned "SIG_INTERRUPT1"
../../lib/asuro.c:301:9: error: attempt to use poisoned "SIG_ADC"
-------- begin --------
avr-gcc --version
avr-gcc (GCC) 4.7.2
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

avr-gcc -c -mmcu=atmega8 -DF_CPU=8000000UL -I. -g -Os -I../../lib/inc -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-ahlms=../../lib/asuro.lst ../../lib/asuro.c -o asuro.o
../../lib/asuro.c:222:9: error: attempt to use poisoned "SIG_OVERFLOW2"
../../lib/asuro.c: In function 'SIG_OVERFLOW2':
../../lib/asuro.c:222:1: warning: 'SIG_OVERFLOW2' appears to be a misspelled signal handler [enabled by default]
../../lib/asuro.c: At top level:
../../lib/asuro.c:239:8: error: attempt to use poisoned "SIG_OUTPUT_COMPARE2"
../../lib/asuro.c: In function 'SIG_OUTPUT_COMPARE2':
../../lib/asuro.c:239:1: warning: 'SIG_OUTPUT_COMPARE2' appears to be a misspelled signal handler [enabled by default]
../../lib/asuro.c: At top level:
../../lib/asuro.c:267:9: error: attempt to use poisoned "SIG_INTERRUPT1"
../../lib/asuro.c: In function 'SIG_INTERRUPT1':
../../lib/asuro.c:267:1: warning: 'SIG_INTERRUPT1' appears to be a misspelled signal handler [enabled by default]
../../lib/asuro.c: At top level:
../../lib/asuro.c:301:9: error: attempt to use poisoned "SIG_ADC"
../../lib/asuro.c: In function 'SIG_ADC':
../../lib/asuro.c:301:1: warning: 'SIG_ADC' appears to be a misspelled signal handler [enabled by default]

das ist mit der AsuroLib von Sourceforge, mit der originalen siehts aber ähnlich aus.
Da ich mich mit signal handlern nicht auskenn, weiß ich auch nicht, woher der Fehler rührt; wie gesagt ich vermute mir fehlt ne Datei, oder es ist was nicht richtig in dem Makefile referenziert.

radbruch
15.10.2012, 20:42
Hallo

Vermutlich hängt das irgendwie mit der veralteten Datei signal.h zusammen. Diese wurde inzwischen von interrupt.h abgelöst und dabei wurden auch neue Namen für die Interupts eingeführt. Vielleicht könntest du mal testweise einen Namen in der Datei asuro.c ändern um zu prüfen, ob das was bringt. Z.B. wird aus 'SIG_OVERFLOW2' das neue 'TIMER2_OVF_vect':


/* uses timer2 (36kHz for IR communication */
// SIGNAL (SIG_OVERFLOW2)
ISR (TIMER2_OVF_vect)
{
TCNT2 += 0x25;
count36kHz ++;
if (!count36kHz) timebase ++;
}
Die Liste der Interuptnamen findet man in der Datei iom8.h die über io.h eingebunden wird:


/* Interrupt vectors */

/* External Interrupt Request 0 */
#define INT0_vect _VECTOR(1)
#define SIG_INTERRUPT0 _VECTOR(1)

/* External Interrupt Request 1 */
#define INT1_vect _VECTOR(2)
#define SIG_INTERRUPT1 _VECTOR(2)

/* Timer/Counter2 Compare Match */
#define TIMER2_COMP_vect _VECTOR(3)
#define SIG_OUTPUT_COMPARE2 _VECTOR(3)

/* Timer/Counter2 Overflow */
#define TIMER2_OVF_vect _VECTOR(4)
#define SIG_OVERFLOW2 _VECTOR(4)

/* Timer/Counter1 Capture Event */
#define TIMER1_CAPT_vect _VECTOR(5)
#define SIG_INPUT_CAPTURE1 _VECTOR(5)

/* Timer/Counter1 Compare Match A */
#define TIMER1_COMPA_vect _VECTOR(6)
#define SIG_OUTPUT_COMPARE1A _VECTOR(6)

/* Timer/Counter1 Compare Match B */
#define TIMER1_COMPB_vect _VECTOR(7)
#define SIG_OUTPUT_COMPARE1B _VECTOR(7)

/* Timer/Counter1 Overflow */
#define TIMER1_OVF_vect _VECTOR(8)
#define SIG_OVERFLOW1 _VECTOR(8)

/* Timer/Counter0 Overflow */
#define TIMER0_OVF_vect _VECTOR(9)
#define SIG_OVERFLOW0 _VECTOR(9)

/* Serial Transfer Complete */
#define SPI_STC_vect _VECTOR(10)
#define SIG_SPI _VECTOR(10)

/* USART, Rx Complete */
#define USART_RXC_vect _VECTOR(11)
#define SIG_UART_RECV _VECTOR(11)

/* USART Data Register Empty */
#define USART_UDRE_vect _VECTOR(12)
#define SIG_UART_DATA _VECTOR(12)

/* USART, Tx Complete */
#define USART_TXC_vect _VECTOR(13)
#define SIG_UART_TRANS _VECTOR(13)

/* ADC Conversion Complete */
#define ADC_vect _VECTOR(14)
#define SIG_ADC _VECTOR(14)

/* EEPROM Ready */
#define EE_RDY_vect _VECTOR(15)
#define SIG_EEPROM_READY _VECTOR(15)

/* Analog Comparator */
#define ANA_COMP_vect _VECTOR(16)
#define SIG_COMPARATOR _VECTOR(16)

/* 2-wire Serial Interface */
#define TWI_vect _VECTOR(17)
#define SIG_2WIRE_SERIAL _VECTOR(17)

/* Store Program Memory Ready */
#define SPM_RDY_vect _VECTOR(18)
#define SIG_SPM_READY _VECTOR(18)
Gruß

mic

3ner
15.10.2012, 21:14
Danke, damit läuft make ohne Fehler durch

Trumpethero
21.11.2014, 16:32
Hallo,
ich hab das selbe Problem. Hab die Namen in asuro.c angeglichen. Wie kompiliere ich die lib jetzt unter Linux? Kann ich danach weiterhin make all verwenden oder muss ich irgendwas mit angeben?

gmbo
29.11.2014, 16:49
Ist mir heute beim Wechsel von ATTiny2313 auf 4313 auch passiert.
das ließ sich vom wechsel von SIG_INTERRUPT1 auf INT1_vect bereinigen.
Warum bei der gleichen Compilerversion unterschiedliche Headernammen existieren verstehe ich aber auch nicht.

Leiwig
25.01.2015, 20:20
Doppelpost ist nicht erwünscht: https://www.roboternetz.de/community/threads/66636-Bei-make-all-Problem-mit-Msleep