Mikroserwer ISA

Mikroserwer bazujący na karcie sieciowej ISA oraz mikrokontrolerze ATmega32.

Bazuje na projekcie opisanym na stronie http://www.ulrichradig.de/. Oryginalny kod źródłowy został okrojony z kilku funkcjonalności jak czytnik MMC i dostosowany do nowszej wersji gcc/avr-libc. Przez ponad rok (V 2007 - VI 2008) urządzenie pracowało bez przerw jako serwer telemetryczny z którego korzystał m.in. skrypt php prezentujący temperaturę na innej podstronie. Zostało zastąpione przez estetyczniejszy - jeśli można tu mówić o jakiejkolwiek estetyce - mikroserwer z mikrokontrolerem PIC18F67J60.

Ponieważ ruch na stronie jest raczej nieregularny serwer nie pozwalał na skuteczne gromadzenie danych w bazie - skrypt php pełniący funkcję klienta jest również wywoływany nieregularnie. Z tego względu uzupełniłem kod mikroserwera o funkcjonalność prostego - prawdopodobnie zbyt prostego do poważniejszych zastosowań - klienta TCP. Środowisko: WinAVR-20060421.
mikroserwer_20080331.zip (97kB)

Uwaga! Kod nie był przeze mnie testowany pod kątem zachowania w obcym/wrogim środowisku czy też przy użyciu fuzzera. Możliwe są ukryte błędy prowadzące do nieokreślonego zachowania, np. buffer overrun w pliku http.c:

		unsigned char File_Name[13];
		if ( memcmp(&buffer[tcpdata],"GET /",5) == 0) 
			{
			char *tmppointer = &buffer[tcpdata + 5];
			unsigned char counter = 0;
			while (* tmppointer != 0x20)
				{
				File_Name[counter] = *tmppointer++;
				counter++;
				}  
  

Wskazane jest umieszczenie mikroserwera za routerem i ograniczenie oferowanych usług tylko do minimalnego wymaganego zestawu.

Kilka zdjęć:

100_0582.jpg 100_0581.jpg