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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
Gast
#577381
Was für eine Source?!?
Gast
#577388
Jo, der Josef ist schon ein Komiker. Möchte wohl, daß wir rumraten.
Gast
#577392
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
Gast
#577400
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 | |
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. :(
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.