In reply to Jwoody:
I indeed have an other view on using Linux on an embedded ARM system, maybe because I use it.
For me, the most important thing is control. I want to have control over the system. I/O block: don't need it. You can just as easy write a simple loop to check things without blocking and you have more control over it. Debugging is simpler too.
Multitasking is a pain. I know when my tasks can wait some time and don't want the OS to decide it. Getting a system to run at it's maximum speed is easier on RISC OS.
But the most annoying thing is writing device drivers. In RISC OS I normally write a module in assemble but you can use C to. You can use most of the features of the OS using swi's.
Using Linux you write a kernel module. You can only use a restricted subset of OS calls and the most annoying thing is the memory protection. You can not easily access user memory from a kernel module and kernel memory from user space. And you have to link it to the kernel which takes a lot more time.
All the unix features like multitasking, virtual memory, blocking I/O are great on a multi user system running different tasks but on an embedded system I'll have RISC OS any day.