Ethernet with SD card Shield - Compiling larger scripts.

Hey all,

Quick question, I understand the Arduino has a file size limitation of 32KB (I have the Uno) and I just purchased the Ethernet shield with SD card capability, and I was wondering if I could utilize the SD card to compile scripts to or at least compile a smaller script that can point to the SD card to do the rest of the rest of the work so-to-speak.

For example, if I would like to compile an embedded version of linux on this device, I know for a fact that linux won't fit all-too-easily on 32KB of space.

What I'm really going for is a more extensive web server for the arduino. I mean if a Commodore 64 can host a website (www.c64web.com) so can an Arduino.

If you want more memory, get a Mega 2560. Besides, the Commodore 64 has twice the memory of an Uno. And the link you provided shows "This webpage is not available". I can certainly get an Uno to do that part!

RET80:
compile scripts to or at least compile a smaller script that can point to the SD card to do the rest

You need to explain what you mean here. My best guess is that you want the web server to be able to serve out javascript files, style sheets, HTML documents and so on that are stored on the SD card. That's certainly feasible and not hard to get working. You would just need to work out the document name that was being requested, map that to a file name on the SD card, read the content of that file and write it out as an HTTP response.

What would be harder is dealing with the many options that HTTP supports for encoding, authentication, and all that other stuff that modern web sites use as a matter of course. You can make a functional web server on an Arduino, but making one that works as well as a modern PC-hosted web site is much harder. For one thing, the Arduino is very slow and extremely limited in the number of connections it can support.

If you want to use a fully featured web site as a front end for your Arduino then IMO you would be better off setting up an external web site that presents the front end, and have that communicate with the back-end Arduino server via a web service, or a serial interface, or any other mechanism you like. It will be much quicker and easier to develop, and it will work better and more reliably.

There's nothing stopping you from trying to implement something similar entirely on the Arduino but it will take a lot more effort and never work as well.

Well, I know you can load html pages on the SD card support for the Arduino, but what I'm saying is, if I need to compile anything directly such as giving the Arduino SSH or FTP support so I can tunnel in and move what I need to do.

I do a lot of embedded work professionally with PLC's and SCADA networks.

What I'm wanting to know is if I can compile something on the SD card if I were to use it as its ROM, so I could essentially compile and load an embedded linux kernel, or does the ethernet shield contain the a piggy-back processor that takes care of HTML instructions and the sort?

RET80:
Well, I know you can load html pages on the SD card support for the Arduino, but what I'm saying is, if I need to compile anything directly such as giving the Arduino SSH or FTP support so I can tunnel in and move what I need to do.

I do a lot of embedded work professionally with PLC's and SCADA networks.

What I'm wanting to know is if I can compile something on the SD card if I were to use it as its ROM, so I could essentially compile and load an embedded linux kernel, or does the ethernet shield contain the a piggy-back processor that takes care of HTML instructions and the sort?

No, none of that makes any sense at all in the context of an Arduino. You can't compile any new Arduino features on the Arduino, and it's a few orders of magnitude short of being able to do anything with or to a Linux kernel. I don't know what HTML "instructions" you're thinking of, but the Ethernet shield has no knowledge of HTML, HTTP or anything of that sort - it just handles the transport layer and the protocol layers below that. The Arduino is a microcontroller, not a computer. If you want an embedded computer, you should be looking at a RPi or one of the other embedded computer platforms.

I completely know it's a microcontroller and has specific uses.

I wanted to see what I could actually crank out of an Arduino with its limited subset of capabilities (compared to that of a full computer). As for the shield, that's kind of what I needed to know, so it has no knowledge of anything else except for lower level communication and transport.

That being said, I'd still like to upload webpages to the Arduino so that means it will need to understand HTTP and HTML and with only 32k for ROM space, that sounds incredibly limiting.

Is there at least a way for the ROM to possibly even act as a translator kind of like a JVM (even though a JVM would NEVER fit in 32k ROM) where something like the compiled 'JVM' or any kind of virtual machine can point to the SD card for instructions to be compiled BY IT. I'm just trying to throw out some ideas here that could make it more feasible, if you have any possibilities or ideas, throw them out there.

I'm just thinking as a ROM as a pointer in code that points to some instructions to execute in the same fashion as an SD card would be, either already precompiled and inserted into the device and the device just says (in the internal 32k rom) 'Hey, point here to go further with instructions' or a low level translator of some kind...

There are some SD code examples in the arduino IDE examples.

Well after some analysis I was able to make the ROM point to an external SD card to read all of the data necessary and the ROM handled the basic HTTP protocol.

So I'd say -- SUCCESS!

So much so that I have created it as a live page that runs completely off of the Arduino: http://ihys.dyndns-server.com