<?xml version='1.0' encoding='UTF-8'?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-19930524</id><updated>2008-06-25T04:10:59.291-04:00</updated><title type='text'>Barr Code</title><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default?start-index=26&amp;max-results=25'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>76</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19930524.post-3388757175687857122</id><published>2008-06-06T07:26:00.006-04:00</published><updated>2008-06-06T07:54:27.761-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>RTOS Myth #4: The RTOS is in Charge</title><summary type='text'>The Myth: The operating system is in charge and it decides when to switch from one application task to another.

The Truth: A real-time operating system (RTOS) is a very different beast than a multi-user desktop operating system, such as Linux.  In fact, an RTOS is simply a library of functions plus a timer tick interrupt handler.  

The only opportunities for an RTOS to effect a context switch </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/06/rtos-myth-5-rtos-is-in-charge.html' title='RTOS Myth #4: The RTOS is in Charge'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=3388757175687857122&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3388757175687857122'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3388757175687857122'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-8945172309647059827</id><published>2008-04-27T20:59:00.002-04:00</published><updated>2008-04-27T21:01:52.160-04:00</updated><title type='text'>Windows Embedded Compact</title><summary type='text'>From a recent entry in VDC's blog:

In an effort to remove any confusion around its embedded offerings, Microsoft has reorganized and rebranded its Windows Embedded product family. Going forward, new editions of Windows XP Embedded will be titled Windows Embedded Standard, Windows Embedded CE will be titled Windows Embedded Compact, and restricted licenses of Windows Vista and Windows XP will be </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/04/windows-embedded-compact.html' title='Windows Embedded Compact'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=8945172309647059827&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/8945172309647059827'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/8945172309647059827'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-3200275005529440922</id><published>2008-04-25T23:46:00.003-04:00</published><updated>2008-04-25T23:53:52.754-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Real-Time Java is Dead</title><summary type='text'>A few months less than ten years ago, I presented a paper at the Embedded Systems Conference (ESC) for the first time.  My 1.5 hour course was entitled "Embedded Java" or something similar.  This was in Silicon Valley, and the audience was standing room only--despite a rather large room to start with.

I've tracked technical and business developments in the world of embedded and real-time Java </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/04/real-time-java-is-dead.html' title='Real-Time Java is Dead'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=3200275005529440922&amp;isPopup=true' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3200275005529440922'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3200275005529440922'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-8891125762822998120</id><published>2008-04-08T12:17:00.003-04:00</published><updated>2008-04-12T20:50:28.805-04:00</updated><title type='text'>Embedded History Month</title><summary type='text'>This seems to be the month for celebrating the history of embedded systems.  

Twenty-five year old compiler vendor IAR, which just launched a nicely redesigned website, has published an interesting history of the company and its founder, Anders Rundgren.

And next week I'll be out at the Embedded Systems Conference, which is celebrating twenty consecutive years of bringing the community together</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/04/embedded-systems-history.html' title='Embedded History Month'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=8891125762822998120&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/8891125762822998120'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/8891125762822998120'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-7175357080568599295</id><published>2008-03-20T09:17:00.003-04:00</published><updated>2008-03-20T09:28:34.629-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='engineering'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><title type='text'>Educating Embedded Engineers</title><summary type='text'>One of the biggest problems affecting the embedded systems industry is a shortage of properly skilled firmware developers.  I spoke of this in a recent video interview.

Embedded software developers need some skills taught to Electrical Engineers and others taught to Computer Scientists.  They also need practical hands-on experience.  Unfortunately, even the best of the Computer Engineering </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/03/educating-embedded-engineers.html' title='Educating Embedded Engineers'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=7175357080568599295&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/7175357080568599295'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/7175357080568599295'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-716515536776557666</id><published>2008-03-19T13:06:00.003-04:00</published><updated>2008-03-20T10:05:12.867-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Toward a Better Mutex API</title><summary type='text'>A few months ago I blogged that mutexes and semaphores are distinct RTOS primitives.  Unfortunately, the APIs of today's most popular commercial RTOSes only add to the confusion for application programmers.  

For example, consider the VxWorks API, which not only forces mutexes and semaphores into an inappropriately common-looking API (semMXxx vs. semCXxx) but also adds a third "binary semaphore"</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/03/toward-better-mutex-api.html' title='Toward a Better Mutex API'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=716515536776557666&amp;isPopup=true' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/716515536776557666'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/716515536776557666'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-1014824234387782563</id><published>2008-03-12T16:21:00.004-04:00</published><updated>2008-03-19T14:19:24.882-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>RTOS Myth #3: Mutexes are Needed at the Task Level</title><summary type='text'>The Myth: Mutexes are a useful intertask synchronization primitive, which you should expect to use frequently.

The Truth: Mutexes are a necessary feature of all real-time operating systems.  However, best practice is to use them only inside functions that must be reentrant.  That is, you should use mutexes only inside functions that are or could be called by two or more tasks.

Mutexes, as their</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/03/rtos-myth-3-mutexes-are-needed-at-task.html' title='RTOS Myth #3: Mutexes are Needed at the Task Level'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=1014824234387782563&amp;isPopup=true' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1014824234387782563'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1014824234387782563'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-2305804166737435148</id><published>2008-03-06T09:05:00.009-05:00</published><updated>2008-04-09T21:06:26.410-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'>RTOS Myth #2: RMA is for Academics</title><summary type='text'>The Myth: The Rate Monotonic Algorithm (RMA) is an interesting theory but it has no practical meaning for users of real-time operating systems.

The Truth: For starters,

All of the popular real-time operating systems (e.g., VxWorks, ThreadX, and uC/OS-II) feature fixed-priority preemptive schedulers
RMA is the optimal fixed-priority scheduling algorithm (and note that dynamic-priority algorithms</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/03/rtos-myth-2-rma-is-for-academics.html' title='RTOS Myth #2: RMA is for Academics'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=2305804166737435148&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2305804166737435148'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2305804166737435148'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-6759346567083977608</id><published>2008-03-04T11:53:00.002-05:00</published><updated>2008-03-04T11:56:46.441-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><title type='text'>VDC Counts 4 Billion Embedded Products Shipped in 2006</title><summary type='text'>Read Venture Development Corporations OnTarget Blog for more details.  But in a nutshell, in the last year for which data are available, VDC estimates 4 billion total units of embedded products, most without a commercial operating system inside.  By other estimates, total CPU shipments in 2006 were around 9 billion, but some of those are PCs/Macs and there are also numerous systems containing two</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/03/vdc-counts-4-billion-embedded-products.html' title='VDC Counts 4 Billion Embedded Products Shipped in 2006'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=6759346567083977608&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6759346567083977608'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6759346567083977608'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-2662912311024721248</id><published>2008-02-28T09:09:00.004-05:00</published><updated>2008-04-28T19:14:43.393-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>More Bad RTOS Information</title><summary type='text'>The Internet (and magazines and conferences) are filled with bad information about when to choose an RTOS.  In short, the world wants to sell you an RTOS, even when you don't need one or the use of one would overly complicate your software design.

Here are two generalizations from a recent whitepaper:

Operating systems make programming more efficient and better structured, and their use is now </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/02/more-bad-rtos-information.html' title='More Bad RTOS Information'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=2662912311024721248&amp;isPopup=true' title='3 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2662912311024721248'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2662912311024721248'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-3608554169251864886</id><published>2008-02-28T07:38:00.004-05:00</published><updated>2008-02-28T08:35:46.810-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><title type='text'>Embedded Systems History</title><summary type='text'>The editors of Embedded Systems Design recently put together an interesting historical timeline of the embedded systems industry.  To learn some history, take a stroll over to http://www.embedded.com/timeline/.</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/02/embedded-systems-history.html' title='Embedded Systems History'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=3608554169251864886&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3608554169251864886'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/3608554169251864886'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-6782991205232504103</id><published>2008-02-13T15:36:00.002-05:00</published><updated>2008-02-28T08:37:08.208-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='patents'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><title type='text'>Kill the Patent Office</title><summary type='text'>I'm not sure what to make of all the criticism of and suggested improvement to the U.S. patent system.  However, I found this article thought-provoking:

http://www.hosteny.com/archive/Hosteny%2005-05.pdf</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/02/kill-patent-office.html' title='Kill the Patent Office'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=6782991205232504103&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6782991205232504103'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6782991205232504103'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-1746292751006240244</id><published>2008-02-11T17:05:00.000-05:00</published><updated>2008-02-11T17:14:43.423-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='outsourcing'/><category scheme='http://www.blogger.com/atom/ns#' term='india'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Embedded C Quiz Results</title><summary type='text'>When we redesigned the Netrino.com website late last year, we thought it'd be fun to challenge our more than 20,000 monthly visitors (mostly embedded software engineers) to a skills test.  So we developed a ten question multiple-choice quiz (http://www.netrino.com/Embedded-Systems/Embedded-C-Quiz).  And it has been a popular feature of the new site, with a couple hundred participants just in the </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/02/embedded-c-quiz-results.html' title='Embedded C Quiz Results'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=1746292751006240244&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1746292751006240244'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1746292751006240244'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-5781067032921222383</id><published>2008-02-07T16:19:00.000-05:00</published><updated>2008-02-08T17:21:07.230-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Breathalizer Source Code to Get a Day in Court</title><summary type='text'>Here's an interesting news story at the intersection of embedded systems and due process:

http://www.news.com/Police-Blotter-Intoxilyzer-code-must-be-disclosed/2100-1030_3-6227951.html

How many potential bugs might a knowledgable expert witness spot in your code?  Are the comments in your source accurate and clean enough for a judge or jury to read?</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/02/breathalizer-source-code-to-get-day-in.html' title='Breathalizer Source Code to Get a Day in Court'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=5781067032921222383&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/5781067032921222383'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/5781067032921222383'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-1856014394563223710</id><published>2008-01-31T09:42:00.000-05:00</published><updated>2008-01-31T10:06:27.597-05:00</updated><title type='text'>USB On-The-Go</title><summary type='text'>Last fall, Netrino was asked by a prospective client to assist with the design of a product to be controlled by a smartphone.  At first, the requirement was stated as a Bluetooth connection between the smartphone and the product.  Later, however, Bluetooth was deemed by the client too complex a connection for their customers to manage.  Thus the connection requirement was changed to a USB link </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/01/usb-on-go.html' title='USB On-The-Go'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=1856014394563223710&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1856014394563223710'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/1856014394563223710'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-6225508192263104810</id><published>2008-01-29T11:16:00.001-05:00</published><updated>2008-01-29T11:43:07.861-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='trends'/><title type='text'>Twenty Years of Embedded Systems Design</title><summary type='text'>It's hard to believe, but industry magazine Embedded Systems Design, which I edited for five years from 1999 to 2004, is this year celebrating its twentieth continuous year in print.

The popular magazine, which was titled Embedded Systems Programming for about the first 16 years, started its run in 1988, at a time when the widespread use of assembly language was challenged by some engineers as </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/01/twenty-years-of-embedded-systems-design.html' title='Twenty Years of Embedded Systems Design'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=6225508192263104810&amp;isPopup=true' title='3 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6225508192263104810'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6225508192263104810'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-851897591772845185</id><published>2008-01-28T11:34:00.004-05:00</published><updated>2008-03-19T13:06:26.555-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>RTOS Myth #1: Mutexes and Semaphores are Interchangeable</title><summary type='text'>The Myth: Mutexes and semaphores are similar--even interchangeable--operating system primitives.  

The Truth: Mutexes and semaphores should always be used for distinct purposes, and should thus feature distinct APIs.  (My recommendations to RTOS vendors are at the end.)

The cause of the confusion between mutexes and semaphores is historical, dating all the way back to the 1974 invention of the </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/08/rtos-myth-1-mutexes-and-semaphores-are.html' title='RTOS Myth #1: Mutexes and Semaphores are Interchangeable'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=851897591772845185&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/851897591772845185'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/851897591772845185'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-564602743694533490</id><published>2008-01-23T19:56:00.000-05:00</published><updated>2008-01-24T14:23:31.156-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Are all RTOSes the Same?</title><summary type='text'>Having just, coincidentally, returned from teaching a two-day hands-on RTOS course in Florida, I was greeted this morning by the following message from an RTOS company president in my inbox:

Recently, I have had a statement by you thrown at me. The statement essentially said that all RTOSes are the same, or something to that effect. Obviously, you and I both know that there are differences, some</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2008/01/are-all-rtoses-same.html' title='Are all RTOSes the Same?'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=564602743694533490&amp;isPopup=true' title='4 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/564602743694533490'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/564602743694533490'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-9178203144499576456</id><published>2007-12-31T14:45:00.000-05:00</published><updated>2008-01-01T06:49:01.144-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'>Embedded Software and Product Recalls</title><summary type='text'>Here's an example of a bug in an embedded system (a dive computer for use in Scuba) that might have killed http://www.cpsc.gov/cpscpub/prerel/prhtml06/06194.html



The design of bridges and roads and the engineers who work on them are regulated by states and the federal government.  The modern equivalent of bridges and roads are often embedded computers, but there is little regulation outside of</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/12/embedded-software-and-product-recalls.html' title='Embedded Software and Product Recalls'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=9178203144499576456&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/9178203144499576456'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/9178203144499576456'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-5582612180394200933</id><published>2007-12-06T08:34:00.000-05:00</published><updated>2007-12-06T13:22:55.354-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Compiler Quality and C's volatile Keyword</title><summary type='text'>At at a meeting with a client yesterday, I was reminded of a conversation we'd had about eighteen months ago at an Embedded Systems Conference.  At that time the client, I'll call him John, was having a problem with C's volatile keyword on a PIC microcontroller.

John had written a few lines of C code to swap the contents of two peripheral registers, perhaps something along these lines:

uint8_t</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/12/compiler-quality-and-cs-volatile.html' title='Compiler Quality and C&apos;s volatile Keyword'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=5582612180394200933&amp;isPopup=true' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/5582612180394200933'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/5582612180394200933'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-6635553721009208454</id><published>2007-11-06T16:29:00.000-05:00</published><updated>2007-11-07T12:32:18.967-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'>Public Course on Multithreaded Programming</title><summary type='text'>This coming January, I'll travel from chilly Baltimore to sunny Miami to teach an in-depth training course about the proper use of real-time operating systems to design multithreaded firmware.  The aim of the class is to clarify the safe and correct use of RTOS primitives, such as mutexes, semaphores, and mailboxes.

The two-day course, called Multithreaded Programming with uC/OS-II, will be held</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/11/public-course-on-multithreaded.html' title='Public Course on Multithreaded Programming'/><link rel='related' href='http://www.micrium.com/support/training.html' title='Public Course on Multithreaded Programming'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=6635553721009208454&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6635553721009208454'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6635553721009208454'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-6417144393818818656</id><published>2007-09-19T07:52:00.001-04:00</published><updated>2007-09-19T08:07:28.168-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ethics'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='safety'/><title type='text'>Building Reliable Systems</title><summary type='text'>I'm writing this live from the Embedded Systems Conference in Boston, while participating in a birds of a feather discussion moderated by Jack Ganssle.  The subject of the session is Building Reliable Systems.

The discussion here amongst perhaps 80 engineers (about 75% electrical engineers by education) initially focused on resources and schedules and the inevitability of bugs, but has now </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/09/building-reliable-systems.html' title='Building Reliable Systems'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=6417144393818818656&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6417144393818818656'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/6417144393818818656'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-2770947854792313414</id><published>2007-09-09T11:15:00.000-04:00</published><updated>2007-09-19T11:18:18.684-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rtos'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Embedded Industry Survey Results</title><summary type='text'>I was quoted (mostly accurately :-) over at Embedded.com, in an analysis of the results of the 2007 survey of embedded system designers.  There are some interesting year-on-year trends, including an increase in the use of C vs. C++ and a decrease in the use of both commercial and open-source operating systems such as VxWorks and Linux.</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/09/embedded-industry-survey-results.html' title='Embedded Industry Survey Results'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=2770947854792313414&amp;isPopup=true' title='1 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2770947854792313414'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2770947854792313414'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-2506107394919734455</id><published>2007-08-17T10:27:00.000-04:00</published><updated>2007-08-17T10:29:00.672-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Embedded.com Gets a Facelift</title><summary type='text'>The popular website Embedded.com just got a long-awaited makeover.  Check it out!</summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/08/embeddedcom-gets-facelift.html' title='Embedded.com Gets a Facelift'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=2506107394919734455&amp;isPopup=true' title='0 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2506107394919734455'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/2506107394919734455'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry><entry><id>tag:blogger.com,1999:blog-19930524.post-4045412561904837065</id><published>2007-07-30T13:42:00.000-04:00</published><updated>2007-07-30T13:57:02.414-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><title type='text'>Medical Product Opportunity</title><summary type='text'>My wife and I recently had a new baby boy (our second; thanks! =).  At the hospital, I couldn't help noticing just how primitive much of the equipment in use is by modern standards.  Of course, from the point of view of the hospital staff this stuff is positively state-of-the-art!  But as an electronics designer, I know better.

Take for example the fetal heart monitor.  The state-of-the-art </summary><link rel='alternate' type='text/html' href='http://embeddedgurus.net/barr-code/2007/07/medical-product-opportunity.html' title='Medical Product Opportunity'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19930524&amp;postID=4045412561904837065&amp;isPopup=true' title='2 Comments'/><link rel='replies' type='application/atom+xml' href='http://embeddedgurus.net/barr-code/atom.xml' title='Post Comments'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/4045412561904837065'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19930524/posts/default/4045412561904837065'/><author><name>Michael Barr</name><uri>http://www.blogger.com/profile/01230748567438273800</uri><email>noreply@blogger.com</email></author></entry></feed>