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?
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 |
Jo, der Josef ist schon ein Komiker. Möchte wohl, daß wir rumraten.
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
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
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.