Embedded Mini Server
In this project I want to create an emebedded Internet storage server with minimal cost and using a minimal number of components. That's why it's name contains word "Mini".
My Internet server will have low energy consumption because I will not use many electronic chips and I will make use of some standby modes of the CPU and IDE HDD.
The project is now in phase of development simultaneously with my operating system, as I learn how to drive an IDE controller and a network card. Another nice skill which I learn is how to create my own TCP/IP stack. Currently I develop the server in a PC x86 environment (as a kind of "simulation" environment) - I run it as a bootable protected mode code inside an x86 virtual machine, where I have an IDE controller, a network card and many megabytes of memory... but I use only the 64 kB of it :) This means that the only hardware components which differ significantly from the target solution are the CPU and the latches. This way I made testing and debuging this software very easy. When I implement all the main functionality and the server works very good, I will start to compile the code to run on the specialised microprocessor - I plan tu use one of Atmel's ATmega series, because they are quite fast, they have many IO ports and I have some good experience with them.
I have the following components and will use them:
- ISA NIC (Network) card based on RTL 8019AS with integrated 16 kB RAM
- ISA Multi-IO card (with IDE, FDD, COM and LPT controller on board)
- two ISA card slots
- 80 GB IDE HDD
- 64 kBytes of S-RAM
I plan to use:
- Atmel's ATmega microprocessor as the CPU
- latches for the address/data shared bus (shared between ISA and RAM)

The RS-232 serial link can be used to manage or debug the server. But I am thinking also about web/telnet ethernet management.
I am developing two seperate server programs which implement protocols HTTP and FTP. I think that the server will be able to process several requests simultaneously.
Here is the structure of the software for the embedded server:
Below I present a screen dump showing server's startup and shutdown:
---- INITIALIZING SYSTEM ----
---- SYSTEM INITIALIZED ----
[00000005][SVR] ==== STARTING UP THE SERVER ====
Found 00F9FC00 bytes of memory
[00000005][IDE] Starting up IDE driver
000000F0 = DHR
[00000005][IDE] Detecting HDD ...
UNIT 00000000: IDENTIFYING... OK
Found: 0020CEB0/0020CEB0 LBA/CHS sectors disk:
"BOCHS Virtual Hardrive ":"":"" OK
RECALIBRATING... OK
Device's bootsector:
X000E050
D08EC033FB7C00BC1F5007507C1BBEFC50061BBF01E5B957BECBA4F304B107BE097C2C38C6831575
CDF5E2108B148B1810C683EE38167449BEF6742CAC4E0710FA74003CB40007BBEB10CD0E254689F2
04468A960E3C06B40BB4117405740C3C2B75C43A2546C640BB247506B45055AA5813CD41FB811672
1075AA557401C1F688E08A0B06C724561EEB06A1BF04668801B8000A33DC8B0205FF83C94E8B037F
024E0325297213CD810757BE557DFE3E835A74AADA7F05EF8375F685EB072EBE5291988A08460399
E80A5613EB5A0012E4744FD513CDC0330000B8EB0000000056F633560650525610BE5153F48B5600
00B8525024568A42585A13CD7210648D0175400A02C780425EF8F7E24E74EBC37270656964697761
61776F88626174206163696C726170206A63797488420069702064A520797A726F646188696E6177
797320756D657473706F207563617265656E6A7942006F67206B61727473797320756D657265706F
6A7963616F67656E000000000000000000000000000000008B0000008B571EFC0000CBF500000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000018000003F0C0001003F13BFBAC100000000002000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000AA550000
IDE driver successfully initialized
[00000033][SVR] ==== SERVER IS UP AND RUNNING ====
Now the server is up. You can press any key to take the server down. So let's do it and see what happens.
[0003186F][SVR] ==== SHUTTING DOWN THE SERVER ====
[0003186F][IDE] Stopping IDE driver
[0003186F][SVR] ==== SERVER HAS BEEN SHUT DOWN ====
---- STOPPING THE SYSTEM ----
---- SYSTEM END ----
From these messages you can see the IDE driver autodetecting a hard disk and displaying it's bootsector. This driver works by default in LBA mode. So I have the IDE driver ready. Now I have to make a TCP/IP stack, both HTTP and FTP servers, a network card driver and the filesystem driver (I will use propably simple FAT, at least at the beginning). Want to join me? Then mail me.