{"id":1915,"date":"2011-06-20T08:49:31","date_gmt":"2011-06-20T07:49:31","guid":{"rendered":"https:\/\/blogs.mentor.com\/colinwalls\/?p=1915"},"modified":"2026-03-26T16:35:07","modified_gmt":"2026-03-26T20:35:07","slug":"on-the-move","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/embedded-software\/2011\/06\/20\/on-the-move\/","title":{"rendered":"On the move"},"content":{"rendered":"<p>I recently <a href=\"https:\/\/blogs.mentor.com\/colinwalls\/blog\/2011\/04\/18\/choosing-an-embedded-operating-system\/\" target=\"_blank\" rel=\"noopener noreferrer\">talked<\/a> about the process that might be applied to the selection of an embedded operating system and I hope that these guidelines are useful. I am currently working on a Web seminar on this topic, so I would welcome any input. However, developers tend to stick with a particular OS [or, at least, with a particular OS vendor] &#8211; <a href=\"http:\/\/blog.vdcresearch.com\/embedded_sw\/2011\/04\/majority-of-engineers-unlikely-to-switch-embedded-operating-system-vendors.html\" target=\"_blank\" rel=\"noopener noreferrer\">recent research<\/a> suggested that only about 20% of developers anticipated a change of OS for their next project.<\/p>\n<p>I started thinking about why there is this apparently high degree of loyalty &#8230;<!--more--><\/p>\n<p>I do not think that there is a single, simple reason why embedded software engineers choose to use the same OS time and again. One motivation is that embedded guys have a pragmatic conservatism: &#8220;if it ain&#8217;t broke, don&#8217;t fix it&#8221;. Although that attitude is quite reasonable, I think that we can identify two specific reasons not to change OS:<\/p>\n<p>1) Vendor satisfaction. If the level of support and quality of documentation is very good or excellent, that is definitely a reason to stick with a particular OS vendor [as it is with almost any product].<\/p>\n<p>2) Skills and IP lock-in. The technical characteristics of a given OS permeate the application code and the skill set of the team. This has primarily two manifestations:<\/p>\n<p>a) Drivers and middleware are often very specific to a particular OS. Moving to a new OS implies the acquisition of new skills and rewriting of a lot of code.<\/p>\n<p>b) The application program interface [API] ties the application code to the OS and also represents part of the team&#8217;s skill set. It is true that many RTOS products have a proprietary API. Moving to another OS would require changes to the application code. Alternatively, many developers us an OS abstraction layer to protect themselves from such a change &#8211; only the layer needs to be modified to accommodate a change in OS. Another approach is to embrace a standard and the common API standard is POSIX. Although this is the native API for Linux, it is also supported by many RTOS products and its use provides a degree of code portability.<\/p>\n<p>If you are sticking with a particular OS for other reasons, I would be interested to hear by comment or <a href=\"mailto:colin_walls@mentor.com\" target=\"_blank\" rel=\"noopener noreferrer\">email<\/a>.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently talked about the process that might be applied to the selection of an embedded operating system and I&#8230;<\/p>\n","protected":false},"author":71677,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[342,300,307,304,374,309],"industry":[],"product":[],"coauthors":[],"class_list":["post-1915","post","type-post","status-publish","format-standard","hentry","category-news","tag-api","tag-embedded-software","tag-linux","tag-nucleus","tag-nucleus-os","tag-rtos"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/1915","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/users\/71677"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/comments?post=1915"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/1915\/revisions"}],"predecessor-version":[{"id":9972,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/1915\/revisions\/9972"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/media?parent=1915"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/categories?post=1915"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/tags?post=1915"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/industry?post=1915"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/product?post=1915"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/coauthors?post=1915"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}