This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

A few questions from an inexperienced viewpoint

Note: This was originally posted on 4th February 2013 at http://forums.arm.com

Hello everyone. I registered because I have a few questions I'm interested in (I have very little experience with ARM based devices) and this looks like a great place to have them answered. I own a small company and would like to have some software developed. First, is it possible to write software for off the self ARM based devices (like the MK802 for example) that doesn't require an OS like Android? So when the device is started, it will instantly start the software. There isn't an option to exit, and there isn't any other software on the device. Can this be done? Secondly, if I need a certain piece of hardware to interface with the device (in this case it's a touchsceen with USB connection), is it possible to create a driver for the touchscreen to work with the ARM computer without the OS? This touchscreen is made to work with Windows without any special drivers just like a mouse, but with two touch points (so I assume it uses some Windows standard). Would it be significantly more time consuming/difficult than writing it with the OS?

If it is far more time consuming to do this without the OS, is there a way to get a similar effect while still using the OS? For example, some way to load the OS and then autostart my application while still preventing anyone from exiting? This is for a digital signage application, so for obvious reasons it needs to be foolproof. I'm planning to bid this out in the next few weeks, and would just like to educate myself a bit before I do so. Any responses are very much appreciated!
  • Note: This was originally posted on 5th February 2013 at http://forums.arm.com

    As Alban said, there is nothing to stop you writing bare metal code.  But...

    A class based devices (that is, chips with a Cortex-A something in them) are really designed to run an OS.  So it would be unusual to write much bare metal code for them.

    Devices with a Cortex-R or Cortex-M processors usually do run bare-metal code.  If bare metal is what you are interested in you might be better off with something like an mbed (http://mbed.org/).  The mbed project has examples of interacting with various different bits of hardware.

    In the end it comes down to what you actually want the thing to do.  For a control like system (even with basic networking) a M class device is probably enough.  If you want to do something more complex, such as media /web server, then probably A class + OS.
  • Note: This was originally posted on 5th February 2013 at http://forums.arm.com

    Hi and welcome!

    Programming without an OS is often referred to as being bare metal. Then you can do what you want with it and execute/initialize as you wish.
    It is possible to program an ARM processor bare metal but often you don't want to.
    I mean the OS does a lot of the general work like managing tasks.
    Furthermore, you can more easily find software you can re-use in your application. I mean, would you really want to re-write graphics drivers?

    You can still restrict the execution to your application.
    I'll take an old example. I have a satnav (GPS) which is using Windows CE5.0 (I did say it was old). I cannot access WinCE as Route66 is running all the time and I cannot exit it.
    Autostarting is indeed possible in an OS. You can even create a daemon which will automatically restart your application if it crashes.

    Does that start to answer your questions?
    Cheers,
    Alban