<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments for Barr Code</title>
	<atom:link href="http://embeddedgurus.com/barr-code/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://embeddedgurus.com/barr-code</link>
	<description>A Blog by Michael Barr</description>
	<lastBuildDate>Fri, 18 May 2012 17:16:50 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on Trends in Embedded Software Design by Jeffrey</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-81527</link>
		<dc:creator>Jeffrey</dc:creator>
		<pubDate>Fri, 18 May 2012 17:16:50 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-81527</guid>
		<description>When you talk about using automated tools to generate code it might have been useful to note that there are already some definable characteristics that tend to clarify the differences in the tools that are currently available. The names that describe the categories of these tools are still fluid but at one end you&#039;ve got what are frequently referred to as &quot;model-based&quot; tools that take their input from a GUI-based diagram (for something like a control system) and convert that diagram into modules that can be linked to a small run-time to make an application that meets even the most stringent requirements of absolute determinism imposed by the highest standards of a requirement like RTCA-DO-178C, the classic example of this type of tool is SCADE. At the other extreme you&#039;ve got &quot;code generators&quot; like Rhapsody, which accept as input a language like UML but are designed to be much more friendly to environments which are allowed to be both object-oriented and potentially multi-threaded. The other major difference between these extremes is the source code output of the code generator tool has to be designed to generate human-readable code, since this type of tool is frequently counted on to provide mostly a template for considerable hand-customizing of the output.
 
I&#039;ve been on a number of projects using the former type of tool and been pleasantly surprised at its effectiveness. The closer you go to the other extreme, however, the worse things seem to fall apart, especially when the requirement for multi-threaded code comes into consideration. Leaving aside the issue of the state of the tools for a moment, you&#039;ve probably got more programmers trained in C++ now than any other &quot;modern&quot; language, but C++ might well be the WORST such language for multi-thread - for one thing the current specification doesn&#039;t even provide for ANY form of automatic memory management, let alone one designed to be effective in a multi-thread environment (and add-ons like the Boehm tool for example only work if your system already supports virtual memory, which is not always available in an embedded environment). Also there don&#039;t seem to be any effective tools for C++ to test the source code in order to see that an application is &quot;thread-safe&quot; (like Chord for Java). And I&#039;m pretty certain that a lot of folks would identify the extensive availability of pointers in C++ (thought of by its proponents as an invaluable feature) as not only a relic but an actual albatross inasmuch as it either prevents or severely degrades the performance of any mechanism that could be devised to manage memory automatically. 
 
Certainly &quot;object-by-object&quot; memory management is not going to stand for long if we want to generate our million-line applications, so the development environment needs to evolve - and quickly! In the same way perhaps in the future we&#039;ll have tools that will allow us to simply generate a single-thread model of our application in a language like UML and submit it to a &quot;thread assigner&quot; that will find the maximum likely number of independent threads and convert our input automatically into the multi-thread version. (And if that sounds a bit too much like science fiction, how would you respond if you asked your boss tomorrow &quot;how many independent threads do you need this new program divided into?&quot; and he responds with &quot;this code&#039;s gonna be around for at least three decades, we expect the number of available cores in the target to double each year, how many cores can you keep busy at one time?&quot;, what would you say that would totally satisfy him?) No we need tools like these RIGHT NOW - and better languages too! (I&#039;m also thinking largely in terms of languages following the imperative programming paradigm, since experiments such as Ericcson&#039;s with Erlang as a multiprocessing language, impressive as they are, nonetheless only apply in comparison with other functional languages, which is really a completely different kettle of fish.)</description>
		<content:encoded><![CDATA[<p>When you talk about using automated tools to generate code it might have been useful to note that there are already some definable characteristics that tend to clarify the differences in the tools that are currently available. The names that describe the categories of these tools are still fluid but at one end you&#8217;ve got what are frequently referred to as &#8220;model-based&#8221; tools that take their input from a GUI-based diagram (for something like a control system) and convert that diagram into modules that can be linked to a small run-time to make an application that meets even the most stringent requirements of absolute determinism imposed by the highest standards of a requirement like RTCA-DO-178C, the classic example of this type of tool is SCADE. At the other extreme you&#8217;ve got &#8220;code generators&#8221; like Rhapsody, which accept as input a language like UML but are designed to be much more friendly to environments which are allowed to be both object-oriented and potentially multi-threaded. The other major difference between these extremes is the source code output of the code generator tool has to be designed to generate human-readable code, since this type of tool is frequently counted on to provide mostly a template for considerable hand-customizing of the output.</p>
<p>I&#8217;ve been on a number of projects using the former type of tool and been pleasantly surprised at its effectiveness. The closer you go to the other extreme, however, the worse things seem to fall apart, especially when the requirement for multi-threaded code comes into consideration. Leaving aside the issue of the state of the tools for a moment, you&#8217;ve probably got more programmers trained in C++ now than any other &#8220;modern&#8221; language, but C++ might well be the WORST such language for multi-thread &#8211; for one thing the current specification doesn&#8217;t even provide for ANY form of automatic memory management, let alone one designed to be effective in a multi-thread environment (and add-ons like the Boehm tool for example only work if your system already supports virtual memory, which is not always available in an embedded environment). Also there don&#8217;t seem to be any effective tools for C++ to test the source code in order to see that an application is &#8220;thread-safe&#8221; (like Chord for Java). And I&#8217;m pretty certain that a lot of folks would identify the extensive availability of pointers in C++ (thought of by its proponents as an invaluable feature) as not only a relic but an actual albatross inasmuch as it either prevents or severely degrades the performance of any mechanism that could be devised to manage memory automatically. </p>
<p>Certainly &#8220;object-by-object&#8221; memory management is not going to stand for long if we want to generate our million-line applications, so the development environment needs to evolve &#8211; and quickly! In the same way perhaps in the future we&#8217;ll have tools that will allow us to simply generate a single-thread model of our application in a language like UML and submit it to a &#8220;thread assigner&#8221; that will find the maximum likely number of independent threads and convert our input automatically into the multi-thread version. (And if that sounds a bit too much like science fiction, how would you respond if you asked your boss tomorrow &#8220;how many independent threads do you need this new program divided into?&#8221; and he responds with &#8220;this code&#8217;s gonna be around for at least three decades, we expect the number of available cores in the target to double each year, how many cores can you keep busy at one time?&#8221;, what would you say that would totally satisfy him?) No we need tools like these RIGHT NOW &#8211; and better languages too! (I&#8217;m also thinking largely in terms of languages following the imperative programming paradigm, since experiments such as Ericcson&#8217;s with Erlang as a multiprocessing language, impressive as they are, nonetheless only apply in comparison with other functional languages, which is really a completely different kettle of fish.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Real Men Program in C by Struggle continues to plug embedded programming gap &#124; Learn Computer Programming</title>
		<link>http://embeddedgurus.com/barr-code/2009/08/real-men-program-in-c/comment-page-1/#comment-80177</link>
		<dc:creator>Struggle continues to plug embedded programming gap &#124; Learn Computer Programming</dc:creator>
		<pubDate>Thu, 03 May 2012 19:36:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.gfcdev.org/test-stack/2009/08/03/real-men-program-in-c/#comment-80177</guid>
		<description>[...] one common denominator that I’ve found [is] that people cannot do well in class unless they know C” programming language, Barr said in an interview. “I’m not saying they have to know obscure parts of C [but] they [...]</description>
		<content:encoded><![CDATA[<p>[...] one common denominator that I’ve found [is] that people cannot do well in class unless they know C” programming language, Barr said in an interview. “I’m not saying they have to know obscure parts of C [but] they [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trends in Embedded Software Design by Snehal Oza</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-79651</link>
		<dc:creator>Snehal Oza</dc:creator>
		<pubDate>Fri, 27 Apr 2012 15:51:24 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-79651</guid>
		<description>A great read! I too think the most profound change will be #2 - that of using tools to model the logic. It&#039;s true that today&#039;s tools may not be powerful enough to realize all logic written in C. However, if one sees evolution of EDA tools ASIC/SoC designers use for multimillion gate RTL design, with great complexities involving different clock domains, power domains, physical parameter related constrains at high speeds and shrinking footprint of transistors - it&#039;s imperative that embedded software development too will become tool/model driven. One of the compelling reason for silicon to use such tools is cost of re-spin. The law of economics will eventually catch up with embedded software too. With increasing complexities of embedded programming owing to both feature packed systems and powerful system resources in terms of multi-core etc. coupled with exponential growth of embedded devices will eventually make  every field upgrades increasingly expensive. That will  drive evolution of xUML tools. I would also imagine the concept of DFT and DFM will soon touch embedded software development as NRE costs attributed to embedded software development becomes larger and larger.

Thanks again for a thought provoking article.</description>
		<content:encoded><![CDATA[<p>A great read! I too think the most profound change will be #2 &#8211; that of using tools to model the logic. It&#8217;s true that today&#8217;s tools may not be powerful enough to realize all logic written in C. However, if one sees evolution of EDA tools ASIC/SoC designers use for multimillion gate RTL design, with great complexities involving different clock domains, power domains, physical parameter related constrains at high speeds and shrinking footprint of transistors &#8211; it&#8217;s imperative that embedded software development too will become tool/model driven. One of the compelling reason for silicon to use such tools is cost of re-spin. The law of economics will eventually catch up with embedded software too. With increasing complexities of embedded programming owing to both feature packed systems and powerful system resources in terms of multi-core etc. coupled with exponential growth of embedded devices will eventually make  every field upgrades increasingly expensive. That will  drive evolution of xUML tools. I would also imagine the concept of DFT and DFM will soon touch embedded software development as NRE costs attributed to embedded software development becomes larger and larger.</p>
<p>Thanks again for a thought provoking article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Real Men Program in C by Giorgio</title>
		<link>http://embeddedgurus.com/barr-code/2009/08/real-men-program-in-c/comment-page-1/#comment-79221</link>
		<dc:creator>Giorgio</dc:creator>
		<pubDate>Mon, 23 Apr 2012 22:13:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.gfcdev.org/test-stack/2009/08/03/real-men-program-in-c/#comment-79221</guid>
		<description>I do not understand the difficulty in learning C (why would it more difficult than C++ or C#?). I was never taught C at University: I was given assignments and was expected to read a C book and solve them. C is a relatively small language. It is rather low level and using it requires practice and discipline, but I do not think it is a difficult language.</description>
		<content:encoded><![CDATA[<p>I do not understand the difficulty in learning C (why would it more difficult than C++ or C#?). I was never taught C at University: I was given assignments and was expected to read a C book and solve them. C is a relatively small language. It is rather low level and using it requires practice and discipline, but I do not think it is a difficult language.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trends in Embedded Software Design by Miro Samek</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-79187</link>
		<dc:creator>Miro Samek</dc:creator>
		<pubDate>Mon, 23 Apr 2012 15:30:20 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-79187</guid>
		<description>To better assess Michael&#039;s predictions, it&#039;s perhaps beneficial to better understand what kind of code is generated fully automatically by the tools Michael mentions in his Trend #2. Modeling tools generally produce the so called &quot;housekeeping code&quot;, such as state machine structure including states, various kinds of transitions, guard conditions, etc. However, the tools typically don&#039;t autonomously come up with the lower-level &quot;action code&quot; executed by state machines, such as entry/exit actions, or actions on transitions. This type of code is simply added to the model by the designer and the tool makes sure that it is executed in the right places of the overall structure. 

So, for example, Trend #1 (32-bit processors) is not as coupled with Trend #2 (code generation), as it might first appear. This is because the benefits of 32-bit processors over 8-bitters lie mostly in the low-level &quot;action code&quot;.

For example, accessing any peripheral with more than 8-bit-wide data, such as 10-bit ADC or a 16-bit timer, on an 8-bit architecture requires multiple instructions. This can lead to very subtle and difficult to reproduce bugs, for example overflow from the low-byte to the high-byte in a 16-bit timer. (Jack Ganssle&#039;s ESC class &quot;RealReal-Time Sysems&quot; is entirely devoted to this type of issues). Many 8-bitters provide special latch registers and other hardware tricks to avoid such problems. But the programmer must *know* about them, or else they won&#039;t work (e.g., the latch works correctly only if low-byte is read before the high-byte or vice versa). Add to this segmented memory architecture, crippled stack, and other gotchas of 8-bitters, and you can see how 32-bitters can make our life easier. All those problems are simply non-existent in the 32-bit world.

Regarding Trend #3 (connectivity and security), I think that Trend #2 (code generation) helps, rather than hinders security. Most security vulnerabilities arise though inconsistencies (such as buffer overruns). Automatically generated code tends to dramatically improve consistency. And if any vulnerabilities are discovered in the code generation, it&#039;s much easier to fix them at the source (code generator) and *consistently* re-generate the code.</description>
		<content:encoded><![CDATA[<p>To better assess Michael&#8217;s predictions, it&#8217;s perhaps beneficial to better understand what kind of code is generated fully automatically by the tools Michael mentions in his Trend #2. Modeling tools generally produce the so called &#8220;housekeeping code&#8221;, such as state machine structure including states, various kinds of transitions, guard conditions, etc. However, the tools typically don&#8217;t autonomously come up with the lower-level &#8220;action code&#8221; executed by state machines, such as entry/exit actions, or actions on transitions. This type of code is simply added to the model by the designer and the tool makes sure that it is executed in the right places of the overall structure. </p>
<p>So, for example, Trend #1 (32-bit processors) is not as coupled with Trend #2 (code generation), as it might first appear. This is because the benefits of 32-bit processors over 8-bitters lie mostly in the low-level &#8220;action code&#8221;.</p>
<p>For example, accessing any peripheral with more than 8-bit-wide data, such as 10-bit ADC or a 16-bit timer, on an 8-bit architecture requires multiple instructions. This can lead to very subtle and difficult to reproduce bugs, for example overflow from the low-byte to the high-byte in a 16-bit timer. (Jack Ganssle&#8217;s ESC class &#8220;RealReal-Time Sysems&#8221; is entirely devoted to this type of issues). Many 8-bitters provide special latch registers and other hardware tricks to avoid such problems. But the programmer must *know* about them, or else they won&#8217;t work (e.g., the latch works correctly only if low-byte is read before the high-byte or vice versa). Add to this segmented memory architecture, crippled stack, and other gotchas of 8-bitters, and you can see how 32-bitters can make our life easier. All those problems are simply non-existent in the 32-bit world.</p>
<p>Regarding Trend #3 (connectivity and security), I think that Trend #2 (code generation) helps, rather than hinders security. Most security vulnerabilities arise though inconsistencies (such as buffer overruns). Automatically generated code tends to dramatically improve consistency. And if any vulnerabilities are discovered in the code generation, it&#8217;s much easier to fix them at the source (code generator) and *consistently* re-generate the code.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trends in Embedded Software Design by Seb</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-79153</link>
		<dc:creator>Seb</dc:creator>
		<pubDate>Mon, 23 Apr 2012 11:23:12 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-79153</guid>
		<description>Hello,
 I really enjoyed reading this article, I am jsut 29 years old and I suppose everyone in my age without a long history of working in embeddeded systems design would agree it is really hard to understand the roots. 

You learn a whole lot stuff about history in school, but noone ever tells where electronics history comes from. So it is really a pleassure to get your inside about how one started to learn 20 - 30 years ago. For example I did not learn assembly nor c language in university I did learn it from working expirience, but since I can program in C now I will never really learn assembly now, since my systems are running succesfully in C.

And even I can see those future trends, I have expirience with freescale and TIs MSP430 and both are introducing more and more graphical program helpers.
For the newcomers this will help big time, I guess. I wont use it, since I now know what I am using, but so you older guys could say you still program time critical parts in plain assembly code, which then I wouldnt be able to use since I was starting with C programming.

And so time keeps on going with its trends and we have to see if it works out well.
Thanks for the article.</description>
		<content:encoded><![CDATA[<p>Hello,<br />
 I really enjoyed reading this article, I am jsut 29 years old and I suppose everyone in my age without a long history of working in embeddeded systems design would agree it is really hard to understand the roots. </p>
<p>You learn a whole lot stuff about history in school, but noone ever tells where electronics history comes from. So it is really a pleassure to get your inside about how one started to learn 20 &#8211; 30 years ago. For example I did not learn assembly nor c language in university I did learn it from working expirience, but since I can program in C now I will never really learn assembly now, since my systems are running succesfully in C.</p>
<p>And even I can see those future trends, I have expirience with freescale and TIs MSP430 and both are introducing more and more graphical program helpers.<br />
For the newcomers this will help big time, I guess. I wont use it, since I now know what I am using, but so you older guys could say you still program time critical parts in plain assembly code, which then I wouldnt be able to use since I was starting with C programming.</p>
<p>And so time keeps on going with its trends and we have to see if it works out well.<br />
Thanks for the article.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trends in Embedded Software Design by Miro Samek</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-79100</link>
		<dc:creator>Miro Samek</dc:creator>
		<pubDate>Sun, 22 Apr 2012 23:23:14 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-79100</guid>
		<description>BridgePoint falls into the category of big, complex, high-ceremony tools, which also includes Rhapsody, Rational Rose RT, Statemate, StateFlow, Artisan Studio, Enterprise Architect, visualSTATE, Visual Paradigm, MagicDraw, and many others.

Of all these choices, tools based on xUML (eXecutable UML), of which BridgePoint is the leading example, require perhaps the highest degree of ceremony. xUML tools are designed to create an illusion that your model is completely &quot;platform and technology independent&quot; (Whatever that means in embedded systems that by any definition of the term are specific to the task and technology). So, for example, to avoid committing to a specific programming language (such as C), xUML tools use an Abstract Action Language (AAL) to code actions executed by state machines as well as any other &quot;Domain Functions&quot;. Interestingly, various xUML tools use different AALs and BridgePoint, specifically, uses Object Action Language (OAL), which is somewhat like C (only more crippled), but with a different syntax.

But what if I don&#039;t care for the ability to change my embedded code from C to, say, Java? What if I don&#039;t wish to learn and tweak hundreds of parameters of the &quot;model compiler&quot; every time I want to have a little better control over the generated code? What if I care more about avoiding endless repetitions in my state machines (a.k.a. &quot;state/transition explosion&quot;) by using state hierarchy, which BridgePoint for some reason does not support?

The point is, as I argue in my EmbeddedGurus blog post &quot;Economics 101: UML in Embedded Systems&quot;, that all too often a big, complex tool incurs high costs while still missing some important objectives of the project. With such very high ongoing overhead, it is quite easy that a tool fails to deliver a positive return on investment (ROI). When this happens, the tool and the whole modeling approach gets abandoned. And this is just too bad, because it is like throwing out the baby with the bath water.   

So, while I don&#039;t contest that big, high-ceremony modeling tools can be applicable in certain situations, I do argue that the embedded industry can also benefit from novel, simpler, more agile approaches. As I describe in my EmbeddedGurus post &quot;Turning automatic code generation upside down&quot;, the free QM modeling tool provides an example of a truly novel, low-risk, and low-overhead approach that fundamentally simplifies modeling and code generation for real-time embedded systems.</description>
		<content:encoded><![CDATA[<p>BridgePoint falls into the category of big, complex, high-ceremony tools, which also includes Rhapsody, Rational Rose RT, Statemate, StateFlow, Artisan Studio, Enterprise Architect, visualSTATE, Visual Paradigm, MagicDraw, and many others.</p>
<p>Of all these choices, tools based on xUML (eXecutable UML), of which BridgePoint is the leading example, require perhaps the highest degree of ceremony. xUML tools are designed to create an illusion that your model is completely &#8220;platform and technology independent&#8221; (Whatever that means in embedded systems that by any definition of the term are specific to the task and technology). So, for example, to avoid committing to a specific programming language (such as C), xUML tools use an Abstract Action Language (AAL) to code actions executed by state machines as well as any other &#8220;Domain Functions&#8221;. Interestingly, various xUML tools use different AALs and BridgePoint, specifically, uses Object Action Language (OAL), which is somewhat like C (only more crippled), but with a different syntax.</p>
<p>But what if I don&#8217;t care for the ability to change my embedded code from C to, say, Java? What if I don&#8217;t wish to learn and tweak hundreds of parameters of the &#8220;model compiler&#8221; every time I want to have a little better control over the generated code? What if I care more about avoiding endless repetitions in my state machines (a.k.a. &#8220;state/transition explosion&#8221;) by using state hierarchy, which BridgePoint for some reason does not support?</p>
<p>The point is, as I argue in my EmbeddedGurus blog post &#8220;Economics 101: UML in Embedded Systems&#8221;, that all too often a big, complex tool incurs high costs while still missing some important objectives of the project. With such very high ongoing overhead, it is quite easy that a tool fails to deliver a positive return on investment (ROI). When this happens, the tool and the whole modeling approach gets abandoned. And this is just too bad, because it is like throwing out the baby with the bath water.   </p>
<p>So, while I don&#8217;t contest that big, high-ceremony modeling tools can be applicable in certain situations, I do argue that the embedded industry can also benefit from novel, simpler, more agile approaches. As I describe in my EmbeddedGurus post &#8220;Turning automatic code generation upside down&#8221;, the free QM modeling tool provides an example of a truly novel, low-risk, and low-overhead approach that fundamentally simplifies modeling and code generation for real-time embedded systems.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Trends in Embedded Software Design by Rich Williams</title>
		<link>http://embeddedgurus.com/barr-code/2012/04/trends-in-embedded-software-design/comment-page-1/#comment-79076</link>
		<dc:creator>Rich Williams</dc:creator>
		<pubDate>Sun, 22 Apr 2012 18:05:27 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=732#comment-79076</guid>
		<description>Very thought provoking trends!
It&#039;s interesting to think about how your trends may affect each other.  
Trend 2 could reduce trend 1.  If the code is generated by models and state charts, it matters less if it&#039;s on a 8, 16 or 32 bit processor as long as it meets the requirement for the product.  The best solution may not even be a regular processor at all but a gate array or a processor with programmable logic.
Trend 2 may increase the problems of trend 3.  If there are security holes in the code generated by the modeling tools, it will be widely deployed across multiple platforms and very attractive to hackers.</description>
		<content:encoded><![CDATA[<p>Very thought provoking trends!<br />
It&#8217;s interesting to think about how your trends may affect each other.<br />
Trend 2 could reduce trend 1.  If the code is generated by models and state charts, it matters less if it&#8217;s on a 8, 16 or 32 bit processor as long as it meets the requirement for the product.  The best solution may not even be a regular processor at all but a gate array or a processor with programmable logic.<br />
Trend 2 may increase the problems of trend 3.  If there are security holes in the code generated by the modeling tools, it will be widely deployed across multiple platforms and very attractive to hackers.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Is &#8220;(uint16_t) -1&#8243; Portable C Code? by Fatih</title>
		<link>http://embeddedgurus.com/barr-code/2011/06/is-uint16_t-1-portable-c-code/comment-page-1/#comment-78979</link>
		<dc:creator>Fatih</dc:creator>
		<pubDate>Sat, 21 Apr 2012 20:15:13 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=641#comment-78979</guid>
		<description>limits.h can be used to get limit values.</description>
		<content:encoded><![CDATA[<p>limits.h can be used to get limit values.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Is &#8220;(uint16_t) -1&#8243; Portable C Code? by Jim</title>
		<link>http://embeddedgurus.com/barr-code/2011/06/is-uint16_t-1-portable-c-code/comment-page-1/#comment-78844</link>
		<dc:creator>Jim</dc:creator>
		<pubDate>Fri, 20 Apr 2012 16:34:21 +0000</pubDate>
		<guid isPermaLink="false">http://embeddedgurus.com/barr-code/?p=641#comment-78844</guid>
		<description>So wouldn&#039;t a better way to  do this be:

uint16_t variable = ~0;</description>
		<content:encoded><![CDATA[<p>So wouldn&#8217;t a better way to  do this be:</p>
<p>uint16_t variable = ~0;</p>
]]></content:encoded>
	</item>
</channel>
</rss>

