Forum: Mikrocontroller und Digitale Elektronik Webserver macht einfach nichts mit der 1.39er Source


von Josef K. (zumlin)


Lesenswert?

Hallo zusammen,

ich bin gerade dabei meinen Webserver zum Leben zu erwecken. Was 
allerding komisch dabei ist, ist dass meine eigenen hex-files der 
Sourceversion 1.39 nichts machen. Bei den Test-Hexes (sowohl 1.38 und 
1.39) klappte alles wunderbar. Sobald ich aber ein HexFile mache (1.39) 
und flashe, macht mein Webserver einfach nichts mehr. Kein Terminal, 
kein Blinken. Komisch komisch.
Die 1.38er sources kann ich auch nicht compilieren, da ich eine neuere 
Lib habe und daher die cbi sbi Befehle nicht funktionieren.

Weiß jemand weiter?

von Josef K. (zumlin)


Lesenswert?

Sodala

Hab jetzt ein bißchen in den Files rumgeschrieben. Hab eigentlich nur 
USE_MMC auf 1 gestellt. Außerdem hab ich gesehen, dass noch auf die alte 
Netzwerkkarte geschaltet war. Also umstellen.
Mein main.h sieht jetzt teils so aus:
1
/ --- Select Networkcard -------
2
#define USE_RTL8019   1
3
#define USE_3C5x9     0
4
//-------------------------------
5
6
7
//#define SYSCLK  14745600  //Quarz Frequenz in Hz
8
#define SYSCLK  16000000  //Quarz Frequenz in Hz
9
#define F_CPU  SYSCLK
10
11
#include "mmc.h"
12
#include "interrupt4.h"
13
#include "fat.h"
14
#include "rtl8019.h"
15
#include "3c5x9.h"

Jetzt hab ich leider das Problem, dass ich beim erstellen des Hexfiles 
nen Fehler und massig warnings bekomme. Kann damit aber nichts anfangen.
Dazu muss ich noch sagen, dass ich schon vor langem in der printf() ein 
Argument entfernt habe. Damit hatte ich immer Probleme und in einem 
anderen Thread wurde gesagt, dass man das letzte Argument nicht 
braucht.(?) Naja.

Hier dann mal meine Shellausgabe:
1
-------- begin --------
2
avr-gcc (GCC) 4.1.0
3
Copyright (C) 2006 Free Software Foundation, Inc.
4
This is free software; see the source for copying conditions.  There is NO
5
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
6
7
8
Size before:
9
main.elf  :
10
section     size      addr
11
.text      21956         0
12
.data        626   8388704
13
.bss          94   8389330
14
.noinit        0   8389424
15
.eeprom        0   8454144
16
.stab      32136         0
17
.stabstr   12097         0
18
Total      66909
19
20
21
22
23
Compiling: main.c
24
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=main.lst  -std=gnu99 main.c -o main.o
25
In file included from main.h:17,
26
                 from main.c:29:
27
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
28
In file included from main.h:33,
29
                 from main.c:29:
30
rtl8019.h:84:1: warning: "ISR" redefined
31
In file included from main.h:16,
32
                 from main.c:29:
33
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
34
35
Compiling: 3c5x9.c
36
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=3c5x9.lst  -std=gnu99 3c5x9.c -o 3c5x9.o
37
In file included from main.h:17,
38
                 from 3c5x9.c:49:
39
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
40
In file included from main.h:33,
41
                 from 3c5x9.c:49:
42
rtl8019.h:84:1: warning: "ISR" redefined
43
In file included from main.h:16,
44
                 from 3c5x9.c:49:
45
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
46
3c5x9.c:730:7: warning: no newline at end of file
47
48
Compiling: rtl8019.c
49
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=rtl8019.lst  -std=gnu99 rtl8019.c -o rtl8019.o
50
In file included from main.h:17,
51
                 from rtl8019.c:8:
52
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
53
In file included from main.h:33,
54
                 from rtl8019.c:8:
55
rtl8019.h:84:1: warning: "ISR" redefined
56
In file included from main.h:16,
57
                 from rtl8019.c:8:
58
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
59
rtl8019.c:309:7: warning: no newline at end of file
60
61
Compiling: analog.c
62
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=analog.lst  -std=gnu99 analog.c -o analog.o
63
In file included from main.h:17,
64
                 from analog.c:1:
65
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
66
In file included from main.h:33,
67
                 from analog.c:1:
68
rtl8019.h:84:1: warning: "ISR" redefined
69
In file included from main.h:16,
70
                 from analog.c:1:
71
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
72
73
Compiling: arp.c
74
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=arp.lst  -std=gnu99 arp.c -o arp.o
75
In file included from main.h:17,
76
                 from arp.c:8:
77
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
78
In file included from main.h:33,
79
                 from arp.c:8:
80
rtl8019.h:84:1: warning: "ISR" redefined
81
In file included from main.h:16,
82
                 from arp.c:8:
83
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
84
85
Compiling: checksum.c
86
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=checksum.lst  -std=gnu99 checksum.c -o checksum.o
87
In file included from main.h:17,
88
                 from checksum.c:8:
89
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
90
In file included from main.h:33,
91
                 from checksum.c:8:
92
rtl8019.h:84:1: warning: "ISR" redefined
93
In file included from main.h:16,
94
                 from checksum.c:8:
95
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
96
97
Compiling: ftpd.c
98
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=ftpd.lst  -std=gnu99 ftpd.c -o ftpd.o
99
In file included from main.h:17,
100
                 from ftpd.c:8:
101
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
102
In file included from main.h:33,
103
                 from ftpd.c:8:
104
rtl8019.h:84:1: warning: "ISR" redefined
105
In file included from main.h:16,
106
                 from ftpd.c:8:
107
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
108
109
Compiling: httpd.c
110
avr-gcc -c -mmcu=atmega32 -I. -g -Os -funsigned-char -funsigned-bitfields -fpack-struct -fshort-enums -Wall -Wstrict-prototypes -Wa,-adhlns=httpd.lst  -std=gnu99 httpd.c -o httpd.o
111
In file included from main.h:17,
112
                 from httpd.c:8:
113
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/signal.h:36:2: warning: #warning "This header file is obsolete.  Use <avr/interrupt.h>."
114
In file included from main.h:33,
115
                 from httpd.c:8:
116
rtl8019.h:84:1: warning: "ISR" redefined
117
In file included from main.h:16,
118
                 from httpd.c:8:
119
/usr/lib/gcc/avr/4.1.0/../../../../avr/include/avr/interrupt.h:96:1: warning: this is the location of the previous definition
120
httpd.c: In function ‘httpd’:
121
httpd.c:73: warning: pointer targets in passing argument 1 of ‘printf’ differ in signedness
122
httpd.c:85: warning: pointer targets in passing argument 5 of ‘Search_File’ differ in signedness
123
httpd.c:155: warning: pointer targets in passing argument 2 of ‘Read_File’ differ in signedness
124
httpd.c:160: error: invalid lvalue in assignment
125
make: *** [httpd.o] Fehler 1

von Bratwurst (Gast)


Lesenswert?

Was für eine Source?!?

von Dirk (Gast)


Lesenswert?

Jo, der Josef ist schon ein Komiker. Möchte wohl, daß wir rumraten.

von Tishima (Gast)


Lesenswert?

Hallo!

Wenn es um den ISA-Ctrl AVR-Webserver geht, denke ich bist Du ins 
falsche Forum gelandet.

http://mikrocontroller.cco-ev.de/forum/

gruß,
Bjoern

von Elektrikser (Gast)


Lesenswert?

Du hast ein aktuelles WinAVR und deine Version des Servers ist mit einer 
älteren geschrieben. Entweder bindest du die deprecated.h in dein 
Programm ein, oder du verwendest statt Signal () ISR() mit den richtigen 
Interrupt-Vektoren. Findet man in der avrlibc-Doku.

Gruß Elektrikser

von Uwe N. (ulegan)


Lesenswert?

ISR ist in der Datei rtl8019.h als Register des Netzwerkcontrollers 
definiert. Neuere Versionen von WinAVR verwenden ISR allerdings für 
Interrupts.
Also die Definition von ISR ändern in zB. RTL_ISR und alle 
Verwendungsstellen natürlich auch.

von Josef K. (zumlin)


Lesenswert?

Danke Uwe.

Nur so also Info für andere, die das gleiche Problem haben.

Das Register wird noch in der rtl8019.c, der org_interrupt4.c und 
interrupt4.c.

Aber trotzdem ist der Fehler nicht weg. Damit ist die Warning ""ISR" 
redefined" behoben. :)
Der eigentliche Fehler "httpd.c:160: error: invalid lvalue in 
assignment"

Die entsprechende Zeile in der Datei:
1
(unsigned long) tcp_socket->File_Size = (unsigned long) tcp_socket->File_Size - 512;

Leider versteh ich nicht mal was da genau passiert.

von Uwe N. (ulegan)


Lesenswert?

Ich habe die Originaldatei gerade nochmal neu geladen und mit 
WinAVR20070122 zu überstezen versucht. Folgendes musste ich ändern:

in main.h Zeile 17 entfernen:
//#include <avr/signal.h>

und
#define __STDIO_FDEVOPEN_COMPAT_12
vor
#include <stdio.h>
einfügen

Diese Definitionen ändern:
#if defined (_AVR_ATmega103_)
  #define Networkcard_INT_Enable()  EIMSK |= (1<<INT4);
#endif

#if defined (_AVR_ATmega128_)
  #define Networkcard_INT_Enable()  EIMSK |= (1<<INT4);
#endif

#if defined (_AVR_ATmega32_)
  #define Networkcard_INT_Enable()  GICR |= (1<<INT0);
#endif

in httpd.c Zeile 162 den ersten Typecast entfernen:
tcp_socket->File_Size = (unsigned long) tcp_socket->File_Size - 512;
der zweite Typecast dürfte überflüssig sein, eventuell sollte man aber 
512l schreiben

in rtl8019.h Zeile 84 ISR durch RTL_ISR ersetzen:
#define RTL_ISR  RTL_REG_OFFSET+0x07

in rtl8019.c Zeile 153, 185, 220 und 306 ISR durch RTL_ISR ersetzen
in interrupt4.c Zeile 24, 30 und 48  ISR durch RTL_ISR ersetzen

in clock.c Zeile 49 ändern:
//  timer_enable_int(_BV(TOIE1));
  TIMSK |= (1<<TOIE1);

3c5x0.c und rtl8019 könnten ein newline, also einen Zeilenumbruch am 
Textende vertragen

Übrig geblieben sind viele Warnungen vom Typ:
arp.c:64: warning: pointer targets in passing argument 1 of 
'Write_Ethernet_Frame' differ in signedness
diese schaden aber nicht.
Ob es läuft, kann ich gerade nicht prüfen, ich denke aber schon. 
Ernstere Probleme hatte ich mit der webcam-Version V1.38 von Ulrich 
Radig. Diese läuft mit dem neuen WinAVR nur, wenn man die Optimierung 
mit -o0 abschaltet. Es liegt wohl an wegoptimierten Zeitschleifen in der 
Kamera-initialisierung, der Webserver alleine läuft auch mit -os.

Gruß Uwe





von Josef K. (zumlin)


Lesenswert?

Oha darauf wäre ich wohl nie gekommen. Mit µCn hab ich noch nicht 
wirklich Erfahrungen gesammelt. Außder das Schulwissen betreffend C167 
hab ich da leider keine Ahnung. :)

Danke schon mal im Vorraus. Das werd ich gleich mal testen wenn ich 
daheim bin.

von Josef K. (zumlin)


Lesenswert?

Bring die Kiste einfach nicht zum laufen. Hab jetzt alles so gemacht wie 
oben aber jetzt rührt sich da überhaupt nichts mehr. Weder IP vom Router 
noch ne Ausgabe am Terminal. Komisch. Muß ich die Netzwerkkarte 
eingelich irgendwie besonders präparieren? Bei den 3Com Karten muß man 
ja ein bißchen was umstellen bevor man die dann für den Webserver 
benutzen kann.

Ich glaub ich werf das ganze mal in ne Ecke und kram das erst wieder im 
Winter raus wenn ihr keine Idee mehr habt. :(

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.