Electronic – How to find an embedded platform

microcontrollersystem

A bit of background: We have a system currently in production, but the original programmer passed away, and the current hardware manufacturer cannot find hardware to run the (currently) DOS system, so I need to re-implement this in a more modern platform. I can only change the programming and the motherboard hardware.

I asked over in StackOverflow and was suggested I ask here.

I am new to the locating hardware side of embedded programming and so after being completely overwhelmed with all the choices out there (pc104, arduino, rabbit, custom boards, a zillion options for each board, beagle, volume discounts, devel kits, ahhh!!) I am asking here for some direction borrowing from your experience. (What would you do?)

Basically, I must find a new motherboard and (most likely) re-implement the program logic. Rewriting this in C/C++/Java/C#/Pascal/BASIC is not a problem for me. so my real problem is finding the hardware. This motherboard will have several other devices attached to it. Here is a summary of what I need to do:

Software requirements: Very minimal. No need for RTOS or multitasking, very low CPU requirements, I just need something I can program and something I can put a remote update mechanism into (updates to the code will be downloaded via modem maybe 1-4 times a year).

Required hardware:

  • 2 RS232 serial ports (one used all the time for primary UI, the second one not continuous use [it's a serial printer])
  • 1 modem (9600+ baud ok) [Modem will be in simultaneous use with only one of the serial port devices (UI), so interrupt sharing issues with one serial port is OK, but not both]
  • Minimum permanent/long term storage: Whatever O/S requires + 1 MB (executable) + 512 KB (Data files)
  • RAM: Minimal, whatever the O/S requires plus maybe 1MB for executable.

Nice to have:

  • USB port(s)
  • Ethernet network port
  • Wireless network

Implementation languages (any O/S I will adapt to):

  • First choice Java/C# (Mono ok)
  • Second choice is C/C++/Pascal
  • Third is BASIC

Ok, given all this, I am having a lot of trouble finding hardware that will support this that is low in cost. Every manufacturer site I visit has a lot of options, and it's difficult to see if their offering will even satisfy my must-have requirements (for example they sometimes list 3 "serial ports", but it appears that only one of the three is RS232, for example, and don't mention what the other two are, or how much it costs (or is even possible) to make it RS232). The #1 constraint is cost, #2 is size.

Can anyone help me with this? This little task has left me thinking I should have gone for EE and not CS :-).

Also, please let me know if I can phrase my question any better.

Best Answer

I don't know of a exact match for this spec, but there is some quite nice embedded Linux cards out there that may fit your need.

Just have a look at this page: chiphacker.com - options-for-a-small-linux-hw-platform

A bonus of using Linux is that you could use most languages, but I would recommend using C or C++. Maybe Java if you can find a JavaVM port for the hardware you select.

You could even use pascal if you feel like it (see http://www.freepascal.org/), but I don't think that it is a good idea...