Thanks for the responses so far, very useful. I'd just like to clarify a couple of details, in case it makes any difference to the responses. Firstly, the solution is based around a high level OO language, not raw C, so is based on a highly efficient VM. Secondly, it is targeted at the sort of device that might consider a Java KVM, so probably ~128K ram, ~512K flash, or thereabouts, might be able to squeeze certain configurations into less ram. The primary principle is to have the system running on device, and then be able to login from a remote machine and make code changes to the live environment. Please feel free to ask any questions, if I can, I will answer them.