Ask HN: Current state of programming embedded devices?
I don&#x27;t think there&#x27;s any simple answer to your specific questions based on what you&#x27;ve provided so far.  I&#x27;m going to word vomit a bunch of stuff that might, with some Google&#x2F;Wikipedia searches, help give you a better view (I hope!).  I hope this is helpful.<p>So much depends on the stage of the development process you&#x27;re in, what the goal is of this project (i.e., internal testing, research use only, human use), when you&#x27;re going under design control, and what market&#x2F;regulatory framework you&#x27;re working under (FDA, CE, CFDA, etc.).<p>Your requirements documents are a good guide here.  I personally separate them as Engineering Requirements Document (ERD), Software Requirements Document (SRD), and Market Requirements Document (MRD); your questions would touch all of these.<p>You&#x27;ve hinted that you are wanting a display and also wanting to do calculations; as others have suggested, good practice would be to separate this functionality.  Your ERD&#x2F;MRD should specify a minimum duration for projected parts availability.  Dealing with part variations is a pain, but having to replace an end-of-life&#x27;d (EOL&#x27;d) part is worse.  For your own personal sanity, you probably shouldn&#x27;t be looking at consumer-level parts and instead look for more industrial-style parts (a weak example might be to use a BeagleCore instead of an RPi for an internal project).  You&#x27;ll need to be mindful of your environmental requirements too, if for example your design called for a sealed enclosure that could greatly impact the parts you could include in your design due to thermal management.  Even when using consumer level stuff, say USB, you should look for the industrial&#x2F;ruggedized versions (e.g., that will have retaining screws).<p>Touchscreens for medical devices are, in my experience, a mixed bag depending on the application.  If you&#x27;re using a good design, they can be easier to keep clean and disinfected vs. buttons.  On the other hand, depending on the touch technology you use and the type of information you&#x27;re displaying, the display may not look great (i.e., a 2D plot can look fine on a resistive touch panel, but video may look foggy).  Depending on what your users are doing, you could have smudges of some sort of fluid (or boogers, or giblets) obscuring info on the display.  Also, I think users expect a modern multitouch experience now and I personally haven&#x27;t been thrilled with that style of interface on anything other than capacitive displays.<p>If you&#x27;re using a contract manufacturer (CM), they are a great resource.  You&#x27;ll be dealing with them during design for manufacture (DFM), but it&#x27;s a good idea to engage them early so that you can design for DFM (if that makes sense).  I don&#x27;t know what your expected volumes will be, but on things other than durable goods (like scalpels), &quot;high volume&quot; medical quantities are considered &quot;low volume&quot; for other areas and this will greatly influence your design.  I also found it frustrating because you&#x27;re limited to suppliers&#x2F;distributors&#x2F;CMs&#x2F;whatever that will be satisfied with the lower volumes.<p>Handwavy answers are that your safety-critical stuff is going to be hard real-time and running an OS developed under an appropriate quality system (QMS) like vxWorks, Integrity, QNX, etc.  I don&#x27;t have experience with it, but there is also FreeRTOS with an SIL (safety integrity level) 3 SafeRTOS option that could be an interesting contender.  The software you develop will also need to be developed under a QMS as a broader part of your software development lifecycle (SLDC) and greater product lifecycle management (PLM).  There are guidelines to use software of unknown pedigree (SOUP) by bringing it under your QMS, but this can be undesirable depending on circumstances.  Most commonly the software is developed under C or C++ with an appropriate coding, review, and testing standard; for a greenfield project I think that considering Ada&#x2F;SPARK or Java (with the appropriate compiler&#x2F;VM) could be smart.<p>For things outside of the safety-critical areas, you have greater options, and it might be largely sufficient to develop under a QMS.  You&#x27;re going to need to be very mindful of software licenses to make sure that they are aligned with your project&#x27;s requirements.  If you&#x27;re set on Linux then Yocto would be worth exploring, but NetBSD would be my first consideration due to licensing.  For your GUI, FLTK could be worth considering if it met your requirements.  Even if your product is Class A, it&#x27;s maybe helpful to keep the more stringent requirements for Class B&#x2F;C products in mind, so that you can (when and if it makes sense) develop expertise and institutional knowledge for Class B&#x2F;C products later on.<p>I&#x27;d recommend the Stanford Biodesign textbook as a one resource to help get up to speed: <a href="http:&#x2F;&#x2F;www.amazon.com&#x2F;Biodesign-Process-Innovating-Medical-Technologies&#x2F;dp&#x2F;110708735X" rel="nofollow">http:&#x2F;&#x2F;www.amazon.com&#x2F;Biodesign-Process-Innovating-Medical-T...</a><p>Finally, considering your questions and I say this in the kindest intentions, you should be participating in the process but not be signing the decisions.  If your company doesn&#x27;t have the expertise in house, it would be worthwhile to either bring someone on board or engage a consultant.<p>Good luck!