<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Embedded Software &#187; Articles</title>
	<atom:link href="http://tech.opensystemsmedia.com/embedded-software/TECH/articles/feed/" rel="self" type="application/rss+xml" />
	<link>http://tech.opensystemsmedia.com/embedded-software</link>
	<description>Beyond simple input/output data transformation, embedded software is built into the electronics of devices we use every day - cars, phones, TVs, appliances, health monitoring equipment, etc. - to control these systems&#039; interactions with the physical world. Embedded software thus becomes more complex as applications become more sophisticated in systems such as planes, missiles, and process control systems. Developers must consider timeliness, concurrency, liveness, reactivity, and heterogeneity when programming abstractions. Types of embedded software include operating systems such as embedded Linux, Windows Embedded, and Real-Time Operating Systems (RTOSs), which are intended for real-time applications and designed to be very compact and efficient, forsaking many functions that non-embedded computer operating systems provide. Communication protocols designated for embedded systems can be closed or open source.</description>
	<lastBuildDate>Fri, 14 Jun 2013 19:30:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.3</generator>
		<item>
		<title>Operating system developments impact critical systems</title>
		<link>http://www.vmecritical.com/articles/id/?5989</link>
		<comments>http://www.vmecritical.com/articles/id/?5989#comments</comments>
		<pubDate>Wed, 27 Mar 2013 15:00:00 +0000</pubDate>
		<dc:creator>Jerry Gipper, Editorial Director, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Special Feature]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[discretionary access control dac]]></category>
		<category><![CDATA[distributed embedded systems]]></category>
		<category><![CDATA[Editorial Director]]></category>
		<category><![CDATA[embedded control system]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded os for real-time applications]]></category>
		<category><![CDATA[embedded real time operating system]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software architecture]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system software architecture]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems real time applications]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[lenix operating system]]></category>
		<category><![CDATA[linux operating system kernel]]></category>
		<category><![CDATA[m2m market forecast]]></category>
		<category><![CDATA[m2m market size]]></category>
		<category><![CDATA[m2m telematics]]></category>
		<category><![CDATA[non discretionary access control]]></category>
		<category><![CDATA[open source linux os]]></category>
		<category><![CDATA[operating system embedded]]></category>
		<category><![CDATA[operating system real time]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[operating systems]]></category>
		<category><![CDATA[osek operating system]]></category>
		<category><![CDATA[programming embedded system]]></category>
		<category><![CDATA[real time and embedded systems]]></category>
		<category><![CDATA[real time embedded]]></category>
		<category><![CDATA[real time embedded applications]]></category>
		<category><![CDATA[real time embedded operating systems]]></category>
		<category><![CDATA[real time embedded software]]></category>
		<category><![CDATA[real time embedded system examples]]></category>
		<category><![CDATA[real time embedded systems examples]]></category>
		<category><![CDATA[real time embedded systems projects]]></category>
		<category><![CDATA[real time in operating system]]></category>
		<category><![CDATA[real time operating]]></category>
		<category><![CDATA[real time operating system rtos]]></category>
		<category><![CDATA[real time scheduling algorithms]]></category>
		<category><![CDATA[real time software development]]></category>
		<category><![CDATA[real- time systems and real- time operating systems]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[realtime operating systems]]></category>
		<category><![CDATA[rtos applications]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[rtos in embedded system]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[rtos os]]></category>
		<category><![CDATA[rtos real time operating system]]></category>
		<category><![CDATA[scheduling in real time systems]]></category>
		<category><![CDATA[software architecture of embedded system]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[software for embedded systems]]></category>
		<category><![CDATA[time operating system]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=a17c9d87e72c9ec8814b9980d91d1225</guid>
		<description><![CDATA[Software architects designing critical embedded systems have tough choices to make when selecting an operating system. Decisions can be both simplified and complicated with new framework and platform initiatives coming into being.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5989%2Ffigures%2F2" />Software architects designing critical embedded systems have tough choices to make when selecting an operating system. Decisions can be both simplified and complicated with new framework and platform initiatives coming into being.</h3>
<p><span id="more-2127"></span><span class='body'>
<p class="body-text">Operating systems that control critical embedded systems have many stringent requirements that they must be able to address in order for them to be considered for deployment. There will always be debate about the best operating systems to deploy in critical applications. However, improvements in real-time operating capabilities in Windows and Linux have opened up the door to options in addition to traditional Real-Time Operating Systems (RTOSs).</p>
<p class="Heading-1">Requirements to deploy</p>
<p class="body-text">Most of the requirements to deploy a critical system are based on the real-time response of the system to the processes they monitor and control. The top requirements are related to:</p>
<ul>
<li class="bullets"><span class="bold" xml:lang="en-US">Memory protection &#1084;/span> A misbehaved thread can corrupt the kernel&#8217;s own code or internal data structures causing all types of bad behaviors to the system.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Fault tolerance and high availability &#1084;/span> Even the best software has latent bugs. As applications become more complex and perform more functions, the number of bugs in fielded systems continues to rise. System designers must, therefore, plan for failures and employ fault recovery techniques.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Mandatory vs. discretionary access control &#1084;/span> Mandatory access control provides guarantees to the access of a device or file. Discretionary access controls are only as effective as the applications using them, and these applications must be assumed to have bugs in them.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Guaranteed resource availability: space domain and time domain &#1084;/span> A critical process cannot, as a result of malicious or careless execution of another process, run out of memory resources or deadlock due to priority conflicts that block resources.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Schedulability &#1084;/span> Meeting hard deadlines is especially important, and missing a deadline can be a critical fault; the access to system services must be deterministic.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Interrupt latency &#1084;/span> Some interrupts are higher priority and require a faster response time than others; how long it takes to respond is critical.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Bounded execution times &#1084;/span> Just as response time is critical, how long a task takes to execute is also important.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Priority inversion &#1056;</span>A lower task can block a higher priority task; predictably resolving the block is a must.</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Security &#1084;/span> Everything is becoming connected, so trusted computing is more important than ever to prevent malicious attacks.</li>
</ul>
<p class="Heading-1">Adding decisions when adding cores</p>
<p class="body-text">Today&#8217;s multicore processors add an additional layer of complexity that can hinder or enhance the capability of a critical embedded system. In many cases, multiple operating systems may be used within the same computing system. These can be in completely isolated physical computing elements or on the same processor subsystem under the management of a software hypervisor that controls the necessary operating systems. For example, an RTOS that is optimized for characteristics such as memory footprint, performance, and real-time capabilities, runs in one partition and/or core. While Linux, with the advantage of industry-standard user interface technology and robust support of IT capabilities over a network, runs on another partition and/or core. Each operating system is chosen for its advantages and they work together to provide a complete operating environment. Much is being done with hypervisor-enabled configurations but we are still in the early years of taking advantage of all that multicore processors and hypervisors have to offer in addressing performance needs of critical embedded systems.</p>
<p class="Heading-1">Today&#8217;s landscape</p>
<p class="body-text">The landscape of operating system choices that can address the requirements for real-time critical embedded applications has changed extensively over the past decade. Many of the RTOS choices from years past have disappeared or retreated to very specialized niches. </p>
<p class="body-text">What was once dominated by more than 30 choices of RTOSs and an occasional UNIX implementation has now boiled down to Wind River VxWorks, Linux (from many distributions), and Microsoft Embedded Windows. Microsoft has closed the gap by adding more real-time functionality to Windows. UNIX was always popular for select applications, and now Linux, with real-time support since release 2.6, has filled the UNIX void.</p>
<p class="body-text">A look at the VITA technology companies that develop computer boards capable of running an operating system shows that virtually all of them offer Microsoft Embedded Windows, a Linux variant, and VxWorks on nearly all of their new platforms. The Microsoft Embedded Windows usage is driven by the fact that nearly all the hardware vendors now embrace Intel Architecture processors. Linux has earned its status as a solid choice through the efforts of many that added the necessary real-time capability to the operating system. VxWorks holds strong as the most widely supported RTOS across many processors and in applications of all types. While still widely chosen for new projects and widely deployed, Green Hills Software&#8217;s Integrity, LynuxWorks&#8217; LynxOS, and QNX&#8217;s Netrino are not as frequently mentioned by these board and system suppliers.</p>
<p class="Heading-1">Software development platforms</p>
<p class="body-text">Software development platform strategies are popular with all of the leading operating system suppliers. Software development platforms are an excellent way to accelerate the software design process. A well-supported software development platform brings all of the key elements needed by the software team to design, develop, test, and deploy a critical embedded system.</p>
<p class="body-text">Windows Embedded comes in several platform configurations suitable for specific applications: Standard, Server, POSReady, Enterprise, Handheld, Compact, Automotive, and Device Manager. Each of these platform packages has software specifically included to address the needs of the intended target applications. </p>
<p class="body-text">Wind River has a long list of platforms based on VxWorks with new platforms being defined as markets emerge (Figure 1). Wind River platforms exist for automotive devices, consumer devices, industrial devices, medical devices, gateways, network equipment, infotainment, and military equipment.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=1411,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5989%2Ffigures%2F1" title="Wind River&amp;#039;s VxWorks platform bundles key functionality."><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FVME5989%2Ffigures%2F1" alt="21" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 1:</b> Wind River&#039;s VxWorks platform bundles key functionality.</figcaption>
<div class="fig-zoom">(Click graphic to zoom)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">Linux has many distributions, many of them from suppliers that have bundled platforms for specific applications. The Wind River Intelligent Device Platform is an example of a complete software development environment for jump-starting machine-to-machine (M2M) device development. Based on Wind River Linux, Intelligent Device Platform includes ready-to-use components built exclusively for M2M applications.</p>
<p class="Heading-1">Intelligent systems smartly influence critical systems</p>
<p class="body-text">The term &#8220;intelligent systems&#8221; has emerged as a common way to describe devices of many types with embedded processors. Since 2011, Microsoft&#8217;s Windows Embedded business has been laying the foundation for an entirely new category within the traditional embedded market &#8212; solutions known as intelligent systems that can extend enterprise software and cloud services out to everyday devices. </p>
<p class="body-text">Intel is driving to simplify the deployment of the Internet of Things and to that end, has introduced the Intel Intelligent Systems Framework, a set of interoperable solutions designed to address connecting, managing, and securing devices in a consistent and scalable manner.</p>
<p class="body-text">The Intelligent Systems Framework enables OEMs to shift their investments from achieving interoperability to unlocking the value of data. Intel defines intelligent systems to be:</p>
<ul>
<li class="bullets"><span class="bold" xml:lang="en-US">Connected &shy;&#1084;/span> Simplify device connectivity for wireless and wired networks, speeding time-to-market and reducing expense for device manufacturers</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Managed &#1084;/span> Deliver pre-integrated and supported management software from best-in-class Independent Software Vendors (ISVs), making it much easier to manage remote connected devices</li>
<li class="bullets"><span class="bold" xml:lang="en-US">Secure &#1084;/span> Provide powerful and customizable security capabilities for protecting devices and their data</li>
</ul>
<p class="body-text">These intelligent system initiatives by Microsoft and Intel are providing benefit to architects of critical embedded systems in the form of better integration of hardware and software components necessary to develop a larger and more complex system. The suppliers are being asked to look at the &#8220;big picture,&#8221; from the operating system to the application, ensuring a robust set of software elements that are interoperable and reduce development time. </p>
<p class="Heading-1">The changing future of operating system choice</p>
<p class="body-text">Platforms and frameworks are changing the process of selecting an operating system. The detailed definitions of platforms and frameworks are eliminating many of the important decisions for the system architect to design application-specific devices. To get to market quickly, architects have to look closely at these &#8220;bundles.&#8221; This frees up the system developer to focus on the end results by eliminating basic decisions on interoperability and integration challenges. In many ways, making an operating system choice is no longer necessary as it will be defined by the platform architectures specified by industry suppliers.  </p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/03/operating-system-developments-impact-critical-systems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting down to business: Leveraging the right static analysis</title>
		<link>http://www.embedded-computing.com/articles/id/?5948</link>
		<comments>http://www.embedded-computing.com/articles/id/?5948#comments</comments>
		<pubDate>Tue, 12 Mar 2013 15:00:00 +0000</pubDate>
		<dc:creator>Arthur Hicken, Parasoft</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[balanced scorecard metrics]]></category>
		<category><![CDATA[business performance metrics]]></category>
		<category><![CDATA[c code static analysis]]></category>
		<category><![CDATA[c static analysis tool]]></category>
		<category><![CDATA[c static analysis tools]]></category>
		<category><![CDATA[c static code analyzer]]></category>
		<category><![CDATA[customer satisfaction metrics]]></category>
		<category><![CDATA[detect memory leak]]></category>
		<category><![CDATA[efficiency metrics]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded software developers]]></category>
		<category><![CDATA[embedded software entwicklung]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system applications]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[erp implementation methodology]]></category>
		<category><![CDATA[erp implementations]]></category>
		<category><![CDATA[erp system implementation]]></category>
		<category><![CDATA[financial performance metrics]]></category>
		<category><![CDATA[Getting down to business]]></category>
		<category><![CDATA[hr performance metrics]]></category>
		<category><![CDATA[implementation erp]]></category>
		<category><![CDATA[implementation of erp]]></category>
		<category><![CDATA[implementing erp system]]></category>
		<category><![CDATA[key performance metrics]]></category>
		<category><![CDATA[klocwork static analysis]]></category>
		<category><![CDATA[kpi metrics]]></category>
		<category><![CDATA[manufacturing performance metrics]]></category>
		<category><![CDATA[memory leak detect]]></category>
		<category><![CDATA[memory leak detector]]></category>
		<category><![CDATA[metrics software]]></category>
		<category><![CDATA[organizational performance measures]]></category>
		<category><![CDATA[Parasoft]]></category>
		<category><![CDATA[performance management metrics]]></category>
		<category><![CDATA[performance measurement metrics]]></category>
		<category><![CDATA[performance metrics dashboard]]></category>
		<category><![CDATA[performance metrics examples]]></category>
		<category><![CDATA[process performance metrics]]></category>
		<category><![CDATA[productivity metrics]]></category>
		<category><![CDATA[project performance metrics]]></category>
		<category><![CDATA[quality software engineering]]></category>
		<category><![CDATA[real time embedded software]]></category>
		<category><![CDATA[real time embedded software development]]></category>
		<category><![CDATA[real time embedded systems]]></category>
		<category><![CDATA[sales performance metrics]]></category>
		<category><![CDATA[software complexity metrics]]></category>
		<category><![CDATA[software development system]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[software for embedded systems]]></category>
		<category><![CDATA[software lifecycle development]]></category>
		<category><![CDATA[software lifecycle models]]></category>
		<category><![CDATA[software process metrics]]></category>
		<category><![CDATA[source code analysis tool]]></category>
		<category><![CDATA[source code static analysis]]></category>
		<category><![CDATA[static analysis java]]></category>
		<category><![CDATA[static analysis tools java]]></category>
		<category><![CDATA[static code analyser]]></category>
		<category><![CDATA[static code analyzers]]></category>
		<category><![CDATA[Static code/analysis tools]]></category>
		<category><![CDATA[static source code analysis tools]]></category>
		<category><![CDATA[successful erp implementation]]></category>
		<category><![CDATA[what is erp implementation]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=e35bd4d3c57663eaf3a89abb5ae7948b</guid>
		<description><![CDATA[Static analysis is a development testing activity with the potential to go far beyond simply checking code. When used as part of a policy-driven defect prevention strategy, static analysis can drive a software engineering team's productivity and minimize fiscal, legal, and ethical risks associated with potentially faulty code. The reason more organizations do not realize the benefits of static analysis, however, is that it's often homogeneously deployed as a tool for "finding bugs." But the truth is that there are different implementations of static analysis that serve different purposes in the development process. And while it's a foregone conclusion that software engineers should run static code analysis, the proper implementation of the right technologies is the difference between wasting time and money and reaching new software development heights.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5948%2Ffigures%2F2" />Static analysis is a development testing activity with the potential to go far beyond simply checking code. When used as part of a policy-driven defect prevention strategy, static analysis can drive a software engineering team&#8217;s productivity and minimize fiscal, legal, and ethical risks associated with potentially faulty code. The reason more organizations do not realize the benefits of static analysis, however, is that it&#8217;s often homogeneously deployed as a tool for &#8220;finding bugs.&#8221; But the truth is that there are different implementations of static analysis that serve different purposes in the development process. And while it&#8217;s a foregone conclusion that software engineers should run static code analysis, the proper implementation of the right technologies is the difference between wasting time and money and reaching new software development heights.</h3>
<p><span id="more-2108"></span><span class='body'>
<p class="body-text">Generally speaking, best practices are platform neutral &#8211; that&#8217;s why they&#8217;re called &#8220;best practices.&#8221; The subtleties endemic to embedded development notwithstanding, there are known standards for ensuring quality, regardless of platform. Avoiding memory leaks, for example, should be universal. Further, the relationship between static analysis and software isn&#8217;t necessarily defined by the application: It is defined by the purpose of the device. That said, running static analysis is a particularly important best practice for embedded software development.</p>
<p class="body-text">Traditionally, embedded software is very costly and painful to access post-release. For this reason, most quality or validation activities are focused on eliminating the need to patch or refactor embedded code. Fixing errors post-release poses the greatest risk not only to the brand but also the bottom line. In some industries, particularly in the safety-critical realm, the consequences associated with software defects are so substantial that quality and verification tasks must be executed flawlessly. Software embedded into critical devices such as insulin pumps, weapon control systems, automotive braking systems, and so on, require a preventive strategy that uses a full range of static analysis capabilities; otherwise consequences could include costly litigation, C-level resignations, and even loss of life. This is opposed to agile, continuous development, Web-driven software applications such as smartphones, televisions, and so on, for which a preventive strategy is less important. To this end, the following discussion takes place on the preventive strategy side of the software development spectrum, examining various static analysis implementations: </p>
<ul>
<li class="bullets">Integration-time static analysis</li>
<li class="bullets">Continuous Integration-Time (CI) static analysis</li>
<li class="bullets">Metrics analysis</li>
<li class="bullets">Edit-time static analysis</li>
<li class="bullets">Runtime static analysis</li>
</ul>
<p class="heading-1">Integration-time static analysis</p>
<p class="body-text">Running static analysis during integration to detect low-hanging fruit and egregious errors is a good starting point for implementing a preventive strategy. Integration-time static analysis simulates feasible application paths without actually executing the code, which is very helpful for systems in which runtime analysis isn&#8217;t possible. Static analysis can test across multiple functions and files and catch common memory problems, such as uninitialized memory, overflows, null pointers, and so on.</p>
<p class="body-text">Static analysis serves a few purposes in terms of the development strategy when organizations begin with testing during integration. First, engineers can review the test results and determine how important they are for the particular application. Static analysis might uncover potential defects that might have a serious impact on software security, reliability, or performance. On the other hand, it could return things that the business might not care about. For example, business probably doesn&#8217;t care about a defect in a gaming console that causes the software to crash when an unlikely sequence of operations occurs. The user can simply reboot and continue enjoying their system. Resolving the same sort of issue in other contexts, however, might be crucial to preventing catastrophic consequences.</p>
<p class="body-text">Static analysis can also help software engineers find potential defects that would have been very difficult to conceive of during the risk assessment phase. Engineers can catalog potential defects to improve future risk assessment iterations. </p>
<p class="heading-1">Continuous Integration-Time (CI) static analysis</p>
<p class="body-text">After running integration-time static analysis, software engineers should have a stronger sense of potential systemic problems in the code. The next step is to run CI static analysis to enforce the coding policy outlined in the planning phase. This prevents the types of defects discovered during integration-time analysis. </p>
<p class="body-text">For every issue discovered in static analysis, there are at least 10 more of the exact same thing in other places in the code. Static analysis is the ideal tool for addressing all violations of the same kind at the same time. This is opposed to chasing every possible path through the code. It&#8217;s far better to find the systemic problems in order to create an environment in which bugs cannot survive. </p>
<p class="body-text">When we talk about <span class="italics">static analysis,</span> in many cases we mean <span class="italics">anti-pattern analysis.</span> A positive pattern is something that should be in the code. For example, a policy that requires engineers to use a <span class="code-character">typedef</span> when declaring function pointers is a positive pattern static analysis rule[1]. This is in contrast to a policy that, for example, prohibits the use of the <span class="code-character">data()</span> member function from a string class when interfacing with the standard C library[2].</p>
<p class="body-text">Executing both types (positive- and anti-pattern) of static analysis is important, but it&#8217;s worth mentioning this distinction because if the organization spends the time to build a coding policy based on positive patterns, this ensures that software engineers are building code exactly how it should be per business objectives or compliance requirements.</p>
<p class="heading-1">Metrics analysis</p>
<p class="body-text">Metrics analysis is a static analysis implementation that evaluates code characteristics and provides insight about the code that can help software engineers identify weaknesses (Figure 1). It is a critical sensor that can highlight areas of the application that can be prone to logical errors. Metrics analysis is an essential baseline measurement that should trigger further analysis, such as code review or some other remediation activity. </p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=925,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5948%2Ffigures%2F1" title="A Parasoft static analysis metrics report"><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5948%2Ffigures%2F1" alt="21" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 1:</b> A Parasoft static analysis metrics report</figcaption>
<div class="fig-zoom">(Click graphic to zoom)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">Metrics analysis is best used as early as possible because it might affect how software engineers write their code. Avoid trying to implement metrics analysis reactively or during the QA phase. The goal with metrics analysis isn&#8217;t just to detect potential defects; it&#8217;s to detect them in such a way that allows engineers to follow a sustainable coding trajectory. Run metrics analysis on potential defect hotspots, remediate any violations, and implement a pattern-based analysis rule to prevent future occurrences. </p>
<p class="body-text">Any metric that correlates to potential problems is fair game. For example, a medical device company might use metrics analysis to measure cyclomatic complexity because a high score indicates that there are too many decision points for the device to handle during normal operation. Knowing that the complexity score exceeds the threshold set in the coding policy when there are 10 branches to cut, as opposed to finding out in the QA phase, will help keep the project on time and on budget. The organization might, for example, want to measure <span class="code-character">public</span> variables because a high number might correlate to too many dependencies in the code. Each organization will need to decide which metrics can be correlated to possible defects in the code.</p>
<p class="heading-1">Edit-time static analysis</p>
<p class="body-text">The static analysis sweet spot is <span class="italics">while the developer is working in the editor. </span>Running static analysis at edit time serves a few purposes. First, it points software engineers to potential problems. Second, it implements the risk assessment strategy by ensuring that any issues are remediated systemically.</p>
<p class="body-text">But when should static analysis be implemented? We&#8217;ve discussed why implementing static analysis too late is a problem; however, it can also be implemented too early because there must be enough context for static analysis to provide meaningful information. Running static analysis on a character, line, or even statement creates too much noise to be useful. Enforcing positive design patterns ensures that new code is built as intended &#8211; while it&#8217;s being written. Running static analysis at edit time is a powerful way to promote the correct behaviors within the development team because feedback is rapid and in context of the code being written. Leveraging this type of analysis makes code reviews more productive because engineers should be able to correct policy-based errors immediately. </p>
<p class="heading-1">Runtime static analysis</p>
<p class="body-text">Some static analysis patterns can detect defects at runtime. If the embedded target can accommodate the overhead, the organization should execute runtime static analysis to round out its preventive strategy. Runtime static analysis detects errors while the code is actually running, which enables software engineers to test real paths with real data. </p>
<p class="heading-1">Final note about static analysis and&nbsp;QA</p>
<p class="body-text">In an ideal preventive strategy, errors found when QA runs static analysis should already be known and determined acceptable. This is because software engineers should have already tested against and adjusted design patterns to enforce coding policies. Violations at this stage mean that there is a problem with the process, such as improper static analysis rules. In these cases, QA needs to send the code back to development so they can find the systemic cause of the defect and implement a rule to prevent future occurrences. From this perspective, static analysis is a much better quality gate than a bug finder. </p>
<p class="reference-heading">References</p>
<p class="references-list">[1] Joint Strike Fighter, Air Vehicle, C++ Coding Standards, chapter 4.22 &#8220;Pointers &amp; References&#8221;; AV Rule 176</p>
<p class="references-list">[2] PCI Data Security Standard Version 1.2; &#8220;Requirement 6: Develop and maintain secure systems and applications&#8221;</p>
<p class="author-bio">Arthur Hicken is Evangelist at Parasoft and can be contacted at Arthur.Hicken@parasoft.com.</p>
<p class="author-bio">Wayne Ariola is VP of Strategy at&nbsp;Parasoft&nbsp;and&nbsp;can be contacted at Wayne.Ariola@parasoft.com.</p>
<p class="author-bio">Adam Trujillo is Technical Writer at&nbsp;Parasoft&nbsp;and can be contacted at Adam.Trujillo@parasoft.com.</p>
<p class="contact-info">Parasoft <span class="hyperlink"><a href="mailto:info@parasoft.com">info@parasoft.com</a></span>  <span class="hyperlink"><a href="http://www.parasoft.com">www.parasoft.com</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/Parasoft">Twitter</a></span> <span class="hyperlink"><a href="http://blog.parasoft.com/default.aspx">Blog</a></span> <span class="hyperlink"><a href="http://www.facebook.com/parasoftcorporation">Facebook</a></span> <span class="hyperlink"><a href="http://www.linkedin.com/company/parasoft">LinkedIn</a></span> <span class="hyperlink"><a href="http://www.youtube.com/watch?v=uTQYE1GdU-I">YouTube</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/03/getting-down-to-business-leveraging-the-right-static-analysis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Static analysis helps manage risk in Java</title>
		<link>http://www.embedded-computing.com/articles/id/?5946</link>
		<comments>http://www.embedded-computing.com/articles/id/?5946#comments</comments>
		<pubDate>Tue, 12 Mar 2013 15:00:00 +0000</pubDate>
		<dc:creator>Jon Jarboe, Coverity</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[application security threats]]></category>
		<category><![CDATA[c code analysis tool]]></category>
		<category><![CDATA[c static code analyzer]]></category>
		<category><![CDATA[code analysis tool]]></category>
		<category><![CDATA[code analyze tool]]></category>
		<category><![CDATA[code analyzer tool]]></category>
		<category><![CDATA[code metrics tools]]></category>
		<category><![CDATA[coding standards java]]></category>
		<category><![CDATA[computer networks security]]></category>
		<category><![CDATA[computer physical security]]></category>
		<category><![CDATA[computer security policies]]></category>
		<category><![CDATA[computer security risk]]></category>
		<category><![CDATA[computer security risks]]></category>
		<category><![CDATA[Coverity]]></category>
		<category><![CDATA[data center security standards]]></category>
		<category><![CDATA[data security risks]]></category>
		<category><![CDATA[data security threats]]></category>
		<category><![CDATA[detect memory leak]]></category>
		<category><![CDATA[information security audits]]></category>
		<category><![CDATA[information security compliance]]></category>
		<category><![CDATA[information technology security policy]]></category>
		<category><![CDATA[internet security risks]]></category>
		<category><![CDATA[it security audits]]></category>
		<category><![CDATA[it security guidelines]]></category>
		<category><![CDATA[it security policies]]></category>
		<category><![CDATA[it security risks]]></category>
		<category><![CDATA[it security threat]]></category>
		<category><![CDATA[it security vulnerabilities]]></category>
		<category><![CDATA[java code analysis tool]]></category>
		<category><![CDATA[java coding programs]]></category>
		<category><![CDATA[java coding projects]]></category>
		<category><![CDATA[java development environments]]></category>
		<category><![CDATA[java programming coding]]></category>
		<category><![CDATA[java software development tools]]></category>
		<category><![CDATA[klocwork static analysis]]></category>
		<category><![CDATA[manage multiple projects]]></category>
		<category><![CDATA[memory leak detect]]></category>
		<category><![CDATA[metrics software development]]></category>
		<category><![CDATA[network security attacks]]></category>
		<category><![CDATA[network security breaches]]></category>
		<category><![CDATA[network security issues]]></category>
		<category><![CDATA[network security risk]]></category>
		<category><![CDATA[network security risks]]></category>
		<category><![CDATA[network security threat]]></category>
		<category><![CDATA[network security vulnerabilities]]></category>
		<category><![CDATA[open source code analysis tools]]></category>
		<category><![CDATA[physical security computer]]></category>
		<category><![CDATA[programming development tools]]></category>
		<category><![CDATA[project risk identification]]></category>
		<category><![CDATA[security software development]]></category>
		<category><![CDATA[software developer tool]]></category>
		<category><![CDATA[software lifecycle development]]></category>
		<category><![CDATA[software process metrics]]></category>
		<category><![CDATA[source code static analysis]]></category>
		<category><![CDATA[static code analyser]]></category>
		<category><![CDATA[static code analyzer c]]></category>
		<category><![CDATA[static code analyzers]]></category>
		<category><![CDATA[Static code/analysis tools]]></category>
		<category><![CDATA[static source code analysis]]></category>
		<category><![CDATA[tools for software development]]></category>
		<category><![CDATA[web security threats]]></category>
		<category><![CDATA[wireless security risks]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=8c9163b3bbadeefeb3317c13550e148d</guid>
		<description><![CDATA[When it comes to software development, the old adage is best spun in a slightly different way: better "early" than never. Accordingly, static analysis can help those developing in Java to stay one step ahead of potential coding problems.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="1" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5946%2Ffigures%2F1" />When it comes to software development, the old adage is best spun in a slightly different way: better &#8220;early&#8221; than never. Accordingly, static analysis can help those developing in Java to stay one step ahead of potential coding problems.</h3>
<p><span id="more-2109"></span><span class='body'>
<p class="body-text">Today&#8217;s software development teams are under immense pressure; the market demands high-quality, secure releases at a constantly increasing pace while security threats become more and more sophisticated. Considering the high cost of product failures and security breaches, it is more important than ever to address these risks throughout the software development process. Potential problems need to be spotted early to prevent release delays or, worse, post-release failures. </p>
<p class="body-text">Fortunately, there are numerous tools to help developers manage these risks, helping to identify potential problems early in the development phase when issues are less disruptive and easier to fix. They are readily accessible to developers and easy to use within many development environments. This applies to developers programming in any language; however, we focus on Java in this discussion (see Sidebar 1).</p>
<p class="figures">
<figure>
<table width="300" border="0" align="right" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="padding-left:10px" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5946%2Fsidebars%2F1" title="Though Java&amp;#8217;s mature ecosystem, numerous IDEs, and abundance of reference materials ease Java application development, they can also bestow a false sense of security upon developers, who should be watchful to mitigate Java&amp;#8217;s weaknesses."><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=290&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5946%2Fsidebars%2F1" alt="21" width="290" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Sidebar 1:</b> Though Java&#8217;s mature ecosystem, numerous IDEs, and abundance of reference materials ease Java application development, they can also bestow a false sense of security upon developers, who should be watchful to mitigate Java&#8217;s weaknesses.</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 3.0x)</div>
</td>
</tr>
</table>
</figure>
<p class="heading-1">Static analysis helps mitigate risk </p>
<p class="body-text">When considering static analysis tools for Java or otherwise, it is important to understand what these tools are. The term &#8220;static analysis&#8221; refers to the approach of analyzing a program without executing it. As we&#8217;ll see in the next section, static analysis tools can be used to produce reports on anything from coding standard violations to specific errors or vulnerabilities. Simply put, static analysis tools analyze source code to find information useful for managing risk.</p>
<p class="body-text">One benefit of static analysis is that it can be performed early in the development cycle, often before the application will even execute. It is commonly integrated into an automated build, so that there is virtually no overhead to running frequent analyses. By integrating static analysis into the inner development loop, users maximize the value they get from such tools.</p>
<p class="body-text">When used in conjunction with a well-designed development process, static analysis tools provide crucial visibility into the state of the software. This enables development teams to understand the level of risk in their code and where the risk resides so they can take action to mitigate or remove it entirely (Table 1). Individual tools generally focus on specific problems faced by software development teams, and teams often use a combination of these tools to get a comprehensive view of their development effort.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5946%2Ftables%2F1" title="Static analysis tools typically find specific types of issues, with each type representing a different class of risk and requiring a different type of action."><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5946%2Ftables%2F1" alt="21" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Table 1:</b> Static analysis tools typically find specific types of issues, with each type representing a different class of risk and requiring a different type of action.</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 1.9x)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">Developers have traditionally used static analysis tools via a simple IDE integration or as stand-alone tools. While the tools add significant value to the development effort, the proliferation of tools has created efficiency problems as developers spend more and more time using and maintaining different tools and sifting through more and more results. To wisely manage development resources, teams must be able to effectively manage, filter, and prioritize all those issues.</p>
<p class="body-text">To address these problems, development testing platforms have emerged to unify and manage all of this static analysis information in one place, simplifying the user experience and increasing visibility and efficiency at larger scales while providing relevant access controls and reporting. Development testing platforms are even starting to blur the line between static analysis and other types of analysis by utilizing &#8211; during the static analysis process &#8211; artifacts generated during earlier program runs. For example, these platforms can use code coverage information from test runs during static analysis to effectively identify missing test cases automatically. The traditional approach to this problem requires significant manual effort based on simple coverage thresholds. By leveraging data from different sources, these platforms are able to significantly reduce the manual effort and time required to accomplish this with other methods.</p>
<p class="heading-1">Selecting static analysis tools for Java</p>
<p class="body-text">The most popular, free, static analysis tools for Java are probably Checkstyle, PMD, and FindBugs. While they all fall under the &#8220;static analysis&#8221; umbrella, their strengths are so sufficiently different that many consider the tools to be complementary rather than alternatives.</p>
<p class="heading-2">Checkstyle</p>
<p class="body-text">Checkstyle is billed as &#8220;a development tool to help programmers write Java code that adheres to a coding standard[1],&#8221; although it does not strictly limit itself to coding standard enforcement. It provides a documented API for users to define their own custom checks. Typical coding standards utilize basic rules to make code more readable and reduce the likelihood that future code changes will introduce bugs. Standards tend to define conventions about formatting (white space, bracketing, naming, commenting, and so on), inheritance, and visibility. When adequately enforced, well-designed coding standards can help developers reduce risk. Enforcement can be difficult, though, since coding standards generate a lot of violations and there can be significant pressure to ignore noisy rules. With legacy code, this can make enforcing new coding standards unfeasible. While most of the issues identified by Checkstyle do not affect code correctness, robustness, or performance, there is real value in helping developers quickly understand code written by others. It is not always obvious how to quantify the risk represented by these violations and it is problematic to measure risk directly from violation counts, but changes in those counts can be a reasonable proxy for changes in risk.</p>
<p class="heading-2">PMD</p>
<p class="body-text">PMD is described as &#8220;&#8230;a source code analyzer. It finds unused variables, empty catch blocks, unnecessary object creation, and so forth[2].&#8221; It, too, is evolving and the current checks focus mainly on syntactic oddities that might belie developer mistakes, such as overcomplicated expressions, empty blocks, unused variables, parameters, and class members. It also has a popular module to identify duplicated code. Because it is generally reporting &#8220;suspicious code&#8221; as opposed to specific coding errors or standards violations, the user will need to carefully select the checks enabled for everyday use. Because enforced rules are selected by the user, this tool can be useful for both legacy and greenfield projects, and it is often easy to correlate these counts with risk. Unfortunately, it might not be obvious whether reported issues should be considered defects or maintenance concerns.</p>
<p class="heading-2">FindBugs</p>
<p class="body-text">FindBugs is probably the most popular of these tools. It looks for actual bugs in the code, as well as suspicious code and standards violations. Because of the wide range of reported issues, it is important to use a configuration that includes the most relevant checks for the project. This is especially true for legacy projects, as it&#8217;s easier to keep new projects clean from the beginning. Like PMD, any team can benefit from using FindBugs and associating issue counts to risk can be straightforward.</p>
<p class="body-text">Commercial static analysis tools show similar diversity, identifying everything from standards violations to actual defects and security vulnerabilities. To illustrate how a commercial tool might compare to a free tool, I analyzed version 1.496 of the Jenkins job management system (www.jenkins-ci.org) using a proprietary static analysis solution and version 2.0.1 of FindBugs, with all checks enabled. On this code base, 852&nbsp;unique issues were identified &#8211; with only 28&nbsp;issues identified by both products. The proprietary solution found 197&nbsp;unique issues, with 188 of those coming from high-impact categories (security and concurrency bugs, resource leaks, and unhandled exceptions like null dereferences). FindBugs found 627&nbsp;unique issues, with 29 coming from those high-impact categories. In short, each of the tools found significant high-impact issues missed by the others, so using a proprietary solution or&nbsp;FindBugs alone will leave significant risk undetected.</p>
<p class="heading-1">Development testing &#8211; Tying&nbsp;it all&nbsp;together</p>
<p class="body-text">Static analysis tools are a powerful ally in the software development effort for Java developers, as these tools enable developers to gain insight into risk throughout the software development life cycle. They are typically easy to automate, enabling users to spend their time fixing problems rather than running the tools.</p>
<p class="body-text">When it comes to managing risk, more information is generally better &#8211; as long as that information illuminates actual sources of risk that developers care about. When deciding which tools to adopt, remember to consider not just the types of issues that analysis tools identify, but how those tools can work together to provide additional value. Also, be sure to configure them appropriately so that the number of issues doesn&#8217;t overwhelm your users.</p>
<p class="body-text">Modern development testing platforms take testing tools to another level by unifying the data in one place, simplifying the user experience, and creating opportunities to provide even more value.</p>
<p class="reference-heading">References</p>
<p class="references-list">[1] http://checkstyle.sourceforge.net/</p>
<p class="references-list">[2] http://pmd.sourceforge.net/</p>
<p class="author-bio">Jon Jarboe is Senior Technical Manager for Coverity, where&nbsp;he helps developers understand the value of adopting development testing and managing risk throughout the software development life cycle. </p>
<p class="contact-info">Coverity <span class="hyperlink"><a href="mailto:info@coverity.com">info@coverity.com</a></span>  <span class="hyperlink"><a href="http://www.coverity.com">www.coverity.com</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/Coverity">Twitter</a> <a href="https://communities.coverity.com/blogs/development-testing-blog/">Blog</a></span> <span class="hyperlink"><a href="http://www.facebook.com/Coverity">Facebook</a></span> <span class="hyperlink"><a href="https://plus.google.com/111847441226878488213/posts">Google+</a></span> <span class="hyperlink"><a href="http://www.linkedin.com/company/coverity">LinkedIn</a></span> <span class="hyperlink"><a href="http://www.youtube.com/user/CoverityInc">YouTube</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/03/static-analysis-helps-manage-risk-in-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cache partitioning increases CPU utilization for safety-critical multicore applications</title>
		<link>http://www.mil-embedded.com/articles/id/?5964</link>
		<comments>http://www.mil-embedded.com/articles/id/?5964#comments</comments>
		<pubDate>Tue, 12 Mar 2013 15:00:00 +0000</pubDate>
		<dc:creator>Tim King, DDC-I</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[Avionics Safety Certification]]></category>
		<category><![CDATA[ddc-i]]></category>
		<category><![CDATA[design embedded hardware]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[design embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[do-178b do-254]]></category>
		<category><![CDATA[do178b certification]]></category>
		<category><![CDATA[embedded microcontroller systems]]></category>
		<category><![CDATA[embedded os for real-time applications]]></category>
		<category><![CDATA[embedded real time software]]></category>
		<category><![CDATA[embedded realtime systems programming]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system operating system]]></category>
		<category><![CDATA[embedded system rtos]]></category>
		<category><![CDATA[embedded system software architecture]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems operating system]]></category>
		<category><![CDATA[embedded systems rtos]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[faa do-178b]]></category>
		<category><![CDATA[Industry Spotlight]]></category>
		<category><![CDATA[microprocessor in embedded system]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[os rtos]]></category>
		<category><![CDATA[programming embedded system]]></category>
		<category><![CDATA[real time embedded operating systems]]></category>
		<category><![CDATA[real time embedded programming]]></category>
		<category><![CDATA[real time embedded projects]]></category>
		<category><![CDATA[real time embedded software]]></category>
		<category><![CDATA[real time embedded software development]]></category>
		<category><![CDATA[real time embedded system examples]]></category>
		<category><![CDATA[real time operating system rtos]]></category>
		<category><![CDATA[real time oprating system]]></category>
		<category><![CDATA[real time software systems]]></category>
		<category><![CDATA[real time system scheduling]]></category>
		<category><![CDATA[real- time systems and real- time operating systems]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[rtca 178b]]></category>
		<category><![CDATA[rtca d0-160]]></category>
		<category><![CDATA[rtca do-178a]]></category>
		<category><![CDATA[rtca do-178c]]></category>
		<category><![CDATA[rtca do160d]]></category>
		<category><![CDATA[rtca do178]]></category>
		<category><![CDATA[rtca do178b]]></category>
		<category><![CDATA[rtca do254]]></category>
		<category><![CDATA[rtos embedded]]></category>
		<category><![CDATA[rtos embedded system]]></category>
		<category><![CDATA[rtos for embedded systems]]></category>
		<category><![CDATA[rtos in embedded system]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[rtos os]]></category>
		<category><![CDATA[rtos real time operating system]]></category>
		<category><![CDATA[scheduling in real time systems]]></category>
		<category><![CDATA[software architecture of embedded system]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=75538ed47870a49af74aecef67e73890</guid>
		<description><![CDATA[Cache partitioning reduces worst-case execution time for critical tasks, thereby enhancing CPU utilization, especially for multicore applications.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="4" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F4" />Cache partitioning reduces worst-case execution time for critical tasks, thereby enhancing CPU utilization, especially for multicore applications.</h3>
<p><span id="more-2111"></span><span class='body'>
<p class="body-text">One of the biggest challenges facing developers of certifiable, safety-critical software applications for MultiCore Processors (MCPs) is managing access to shared resources such as cache. MCPs significantly increase cache contention, causing Worst-Case Execution Times (WCETs) to exceed Average-Case Execution Times (ACETs) by 100 percent or more. Because safety-critical developers must budget for WCETs, tasks on average (critical and noncritical) are allocated more time than they need, resulting in significantly degraded CPU utilization. One way to address this problem is to utilize an RTOS that supports cache partitioning, which enables developers to bound and control interference patterns in a way that alleviates contention and reduces WCETs, thereby maximizing available CPU bandwidth without compromising safety criticality.</p>
<p class="heading-1">Cache contention </p>
<p class="body-text">In a simple dual-core processor configuration (Figure 1), each core has its own CPU and L1 cache. Both cores share an L2 cache. (Note that shared memory and optional L3 are not shown.)</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=653,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F1" title="Dual-core configuration without cache partitioning"><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F1" alt="21" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 1:</b> Dual-core configuration without cache partitioning</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 1.9x)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">In this configuration, applications executing on Core 0 compete for the entire L2 cache with applications executing on Core 1. (Note that applications on the same core also compete with one another for L2; cache partitioning applies in this case as well.) If application A on Core 0 uses data that maps to the same cache line(s) as application B on Core 1, then a collision occurs.</p>
<p class="body-text">For example, suppose A&#8217;s data resides in L2; any accesses to that data will take very few processor cycles. But suppose B accesses data that happens to map to the same L2 cache line as A&#8217;s data. At that point, A&#8217;s data must be evicted from L2 (including a potential &#8220;write-back&#8221; to RAM), and B&#8217;s data must be brought into cache from RAM. The time required to handle this collision is typically charged to B. Then, suppose A accesses its data again. Since that data is no longer in L2 (B&#8217;s data is in its place), B&#8217;s data must be evicted from L2 (including a potential &#8220;write-back&#8221; to RAM), and A&#8217;s data must be brought back into cache from RAM. The time required to handle this collision is typically charged to A.</p>
<p class="body-text">Most times, A and B will encounter such collisions infrequently. In those cases, their respective execution times can be considered as &#8220;average case&#8221; (ACET). However, on occasion, their data accesses will collide at a high frequency. In these cases, their respective execution times must be considered as &#8220;worst case&#8221; (WCET). </p>
<p class="body-text">When developing certifiable, safety-critical software, one must budget an application&#8217;s execution time for worst-case behavior. Such software must have adequate time budget to complete its intended function every time it executes, lest it cause an unsafe failure condition. The safety-critical RTOS must enforce time partitioning, such that each application has a fixed amount of CPU time budget to execute.</p>
<p class="body-text">With the potential for multiple applications on multiple cores to generate contention for L2 cache, WCETs on MCPs often are considerably higher than ACETs. And since certifiable, safety-critical applications must have time budgets to accommodate their WCETs, this situation leads to a great deal of budgeted but unused time, resulting in significantly degraded CPU utilization.</p>
<p class="heading-1">Cache partitioning</p>
<p class="body-text">Cache partitioning increases CPU utilization by reducing WCETs, thereby reducing the amount of time that must be budgeted to accommodate WCETs. Again, in a simple dual-core processor configuration (Figure 2), each core has its own CPU and L1 cache and both cores share an L2 cache. </p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '22', 'width=875,height=653,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="22" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F2" title="Dual-core configuration with cache partitioning"><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F2" alt="22" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 2:</b> Dual-core configuration with cache partitioning</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 1.9x)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">In this configuration, the RTOS partitions the L2 cache such that each core has its own segment of L2, meaning that data used by applications on Core 0 will only be cached in Core 0&#8217;s L2 partition. Similarly, data used by applications on Core 1 will only be cached in Core 1&#8217;s L2 partition. This partitioning eliminates the possibility of applications on different cores interfering with one another via L2 collisions. Without such interference, the deltas between application WCETs and ACETs often are often considerably lower than is the case without cache partitioning. By bounding and controlling these interference patterns, cache partitioning makes application execution times more deterministic and enables developers to budget execution time more tightly, thereby keeping processor utilization high.</p>
<p class="heading-1">Test environment and applications</p>
<p class="body-text">To demonstrate the benefits of cache partitioning, DDC-I used Deos (its certifiable, safety-critical, time- and space-partitioned RTOS) to run a suite of four memory-intensive test applications, all with a range of data/code sizes, sequential and random access strategies, and various working set sizes:</p>
<ul>
<li class="bullets">Read only</li>
<li class="bullets">Write only</li>
<li class="bullets">Copy</li>
<li class="bullets">Code execution</li>
</ul>
<p class="body-text">The tests were performed on a 1.6 GHz Atom processor (x86) with 32 KB of L1 data cache, 24 KB of L1 instruction cache, and a 512 KB unified L2 cache. Note that while a single-core x86 processor was used for these tests, Deos&#8217; cache partitioning capability applies equally well to applications executing on the same core (which also compete for L2). Further, it does not depend on any features that are special or unique to x86 processors and applies equally well to other processor types (such as ARM or PowerPC).</p>
<p class="body-text">The tests were run with and without a &#8220;cache trasher&#8221; application, which evicts test application data/code from L2 and &#8220;dirties&#8221; L2 with its own data/code. In effect, the cache trasher puts L2 into a worst-case state from a test application&#8217;s perspective. That is, the cache trasher mimics real-world scenarios, where different applications run concurrently and compete for the shared L2 cache.</p>
<p class="body-text">Each test application was executed under three scenarios. In scenario 1, which is conducted without cache partitioning or cache trashing, the test application competes for the entire 512&nbsp;KB L2 cache along with the RTOS kernel and a variety of debug tools. This test establishes baseline average performance, wherein each test executes with an &#8220;average&#8221; amount of L2 contention.</p>
<p class="body-text">In scenario 2, which uses no cache partitioning, the test application competes for the entire 512 KB L2 cache along with the RTOS kernel, the same set of debug tools used in scenario 1, and a rogue cache trasher application. This test establishes baseline worst-case performance, wherein each test executes with a worst-case amount of L2 interference from other applications, primarily the cache trasher.</p>
<p class="body-text">In scenario 3, which uses cache partitioning and cache trashing, three L2 partitions are created:</p>
<ul>
<li class="bullets">A 256 KB partition allocated to the test application</li>
<li class="bullets">A 64 KB partition allocated to the&nbsp;RTOS kernel and the same set of debug tools used in scenarios 1&nbsp;and&nbsp;2</li>
<li class="bullets">A 192 KB partition allocated to&nbsp;the&nbsp;rogue cache trasher application.</li>
</ul>
<p class="body-text">This scenario establishes optimized worst-case performance, wherein each test executes within its own L2 partition with no interference from other applications, including the cache trasher.</p>
<p class="heading-1">Cache partitioning results, benefits</p>
<p class="body-text">Figure 3 shows the results for the read-only test application.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '23', 'width=875,height=653,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="23" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F3" title="Cache partitioning impact on read-only tests"><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5964%2Ffigures%2F3" alt="23" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 3:</b> Cache partitioning impact on read-only tests</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 1.9x)</div>
</td>
</tr>
</table>
</figure>
<p class="body-text">For example, with no cache partitioning and no cache trashing (scenario&nbsp;1, ACET), the read-only test averaged 105&nbsp;microseconds per execution given a working set size of 512 KB. In scenario&nbsp;2 (WCET with no partitioning, cache trashing added), the test averaged 400&nbsp;microseconds per execution for the same 512&nbsp;KB working set, a 280&nbsp;percent increase. When cache partitioning is added (scenario 3, WCET with cache trashing), the average execution time drops to 117&nbsp;microseconds, or just 11 percent higher than the ACET.</p>
<p class="body-text">These results demonstrate the efficacy of cache partitioning for an application that performs a large number of reads per period. Though difficult to discern here due to differences in magnitude, the impact on bounding WCETs is more pronounced when the application&#8217;s working set size fits within the cache partition that it&#8217;s using (in this case, 256 KB). This result is expected because of the nature of cache. That said, embedded, real-time applications tend to have relatively small working set sizes, so we expect that cache partitioning will benefit most applications.</p>
<p class="body-text">Results for the write-only test were similar to the read-only test, though more pronounced for smaller working sets. For larger working sets, results showed relatively small differences between WCETs with and without cache partitioning.</p>
<p class="body-text">Results for the copy test were similar to the read-only test, though more pronounced for smaller working sets. For larger working sets, results were less dramatic, but still showed significant improvement (roughly 2x) in WCETs with cache partitioning.</p>
<p class="body-text">Results for the code execution tests were similar to the read-only test, though somewhat less dramatic.</p>
<p class="body-text">Note that it is possible for applications executing in the same cache partition to interfere with each other. However, such interference typically is much easier to analyze and bound than the unpredictable interference patterns that may occur between applications executing on different cores with shared cache. In those situations, if interference is unpredictable, then applications could be mapped to separate cache partitions.</p>
<p class="body-text">The benchmark results clearly demonstrate that cache partitioning provides an effective means of bounding and controlling interference patterns in shared cache on an MCP. In particular, WCETs can be bounded and controlled much more tightly when the cache is partitioned. This allows application developers to set relatively tight, yet safe, execution time budgets, thereby maximizing MCP utilization.</p>
<p class="body-text">Of course, results will vary for different applications and hardware configurations, and additional RTOS capabilities will be required to successfully certify safety-critical MCP-based systems. Regardless, these results represent a significant advancement toward the goal of using MCPs to host certifiable, safety-critical applications. </p>
<p class="author-bio">Tim King is the Technical Marketing Manager at DDC-I. He&nbsp;has&nbsp;more than 20&nbsp;years of experience developing, certifying, and marketing commercial <a href="http://channels.opensystemsmedia.com/avionics">avionics software</a>&nbsp;and RTOSs. Tim is a&nbsp;graduate of the University of Iowa and Arizona State University, where he earned master&#8217;s degrees in Computer Science and Business Administration, respectively. He can be contacted at&nbsp;<a href="mailto:tking@ddci.com">tking@ddci.com</a>.</p>
<p class="contact-info">DDC-I  602-275-7172  <a href="http://www.ddci.com">www.ddci.com</a></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/03/cache-partitioning-increases-cpu-utilization-for-safety-critical-multicore-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Military avionics designs embrace common standards and TRLs</title>
		<link>http://www.mil-embedded.com/articles/id/?5962</link>
		<comments>http://www.mil-embedded.com/articles/id/?5962#comments</comments>
		<pubDate>Tue, 12 Mar 2013 15:00:00 +0000</pubDate>
		<dc:creator>John McHale, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[armed uavs]]></category>
		<category><![CDATA[autonomous uav]]></category>
		<category><![CDATA[autopilot uav]]></category>
		<category><![CDATA[c4isr systems]]></category>
		<category><![CDATA[defense contracts awarded]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[drone uav]]></category>
		<category><![CDATA[Editorial Director]]></category>
		<category><![CDATA[Embedded avionics for military aircraft]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded real time system]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software architecture]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded software programming]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system operating system]]></category>
		<category><![CDATA[embedded system rtos]]></category>
		<category><![CDATA[embedded systems architecture]]></category>
		<category><![CDATA[embedded systems real time applications]]></category>
		<category><![CDATA[embedded systems rtos]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fly fighter jet]]></category>
		<category><![CDATA[legacy application modernization]]></category>
		<category><![CDATA[lockheed martin defense]]></category>
		<category><![CDATA[operating system rtos]]></category>
		<category><![CDATA[parrot ar drone]]></category>
		<category><![CDATA[predator uav rc]]></category>
		<category><![CDATA[rc fighter jets]]></category>
		<category><![CDATA[rc uav drone]]></category>
		<category><![CDATA[real time embedded applications]]></category>
		<category><![CDATA[real time embedded software]]></category>
		<category><![CDATA[real time embedded system examples]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[rockwell collins fms]]></category>
		<category><![CDATA[rtca do-160f]]></category>
		<category><![CDATA[rtca do-178c]]></category>
		<category><![CDATA[rtca do-254]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[rtos in embedded system]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[rtos real time operating system]]></category>
		<category><![CDATA[Special Report]]></category>
		<category><![CDATA[uas uav]]></category>
		<category><![CDATA[uas unmanned]]></category>
		<category><![CDATA[uav autopilot system]]></category>
		<category><![CDATA[uav control system]]></category>
		<category><![CDATA[uav control systems]]></category>
		<category><![CDATA[uav drones]]></category>
		<category><![CDATA[uav payload]]></category>
		<category><![CDATA[uav sensors]]></category>
		<category><![CDATA[uav surveillance]]></category>
		<category><![CDATA[uav tactical systems]]></category>
		<category><![CDATA[uav uas]]></category>
		<category><![CDATA[uav unmanned]]></category>
		<category><![CDATA[uav vtol]]></category>
		<category><![CDATA[unmanned aerial surveillance]]></category>
		<category><![CDATA[vtol uav]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=0afecfa39ffc289ac963a2a5b78194ec</guid>
		<description><![CDATA[The task of improving situational awareness for military pilots in a tough budget climate with little development funding available requires designers to use open architectures and common standards to keep costs down. This trend also has fueled the enthusiasm behind the FACE Consortium, which promises long-term potential savings of billions of dollars by enabling software reuse across multiple avionics platforms.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5962%2Ffigures%2F2" />The task of improving situational awareness for military pilots in a tough budget climate with little development funding available requires designers to use open architectures and common standards to keep costs down. This trend also has fueled the enthusiasm behind the FACE Consortium, which promises long-term potential savings of billions of dollars by enabling software reuse across multiple avionics platforms.</h3>
<p><span id="more-2112"></span><span class='body'>
<p class="body-text">Department of Defense (DoD) leaders want their pilots to have the best technology possible to do their jobs &#8211; whether it is a new touch-screen primary flight display, night vision goggles, 3D flight simulation systems, or even a brand-new aircraft to replace a decades-old platform. However, today&#8217;s economic climate will not allow for new fighter jets or helicopters, so military program managers need to compromise and find ways to keep older aircraft platforms flying while still enhancing capability for the pilot.</p>
<p class="body-text">&#8220;Military avionics customers in fixed- and rotary-wing platforms want improved situational awareness and to increase their mission envelope and effectiveness,&#8221; says Karl Shepherd, Marketing Director for Airborne Solutions at Rockwell Collins in Cedar Rapids, IA. &#8220;For the DoD it is all about designing avionics that can reduce the workload of a pilot so they can enhance their decision making during missions. It&#8217;s about helping pilots make decisions instead of taking decision making away from them.&#8221;</p>
<p class="body-text">While these enhancements do not require an entire new aircraft, the necessary upgrades can still be quite expensive &#8211; not just the up-front costs of new components and systems, but the behind-the-scenes costs such as training and maintenance. Keeping avionics retrofit costs down requires a move toward more commonality and open architecture designs.</p>
<p class="heading-1">Open architectures</p>
<p class="body-text">&#8220;Open architectures provide the military customer with more value for his dollar,&#8221; says Robert Waage, Director of Business Development at Elbit Systems of America in Fort Worth, TX. Multiple vendors can be used within one program, which helps drive costs down and enables platforms to fly for decades, he adds. Elbit&#8217;s redesign and upgrade of the Apache Block III AH-64D Mission Processor will use an open architecture to accommodate new capabilities as they become available, Waage continues. The Army Apache team wants to sustain and maintain these aircraft until 2040, so they and the Apache prime contractor &#8211; Boeing &#8211; are creating road maps for future refreshes that leverage open architectures to achieve that goal, he adds. &#8220;It is about having market agility and flexibility.&#8221; </p>
<p class="body-text">&#8220;There is an increasing requirement that solutions should be based on open, interoperable, industry standards &#8211; even though the underlying technology is often less important to military integrators,&#8221; says Simon Collins, Product Manager, GE Intelligent Platforms in Huntsville, AL. &#8220;Customers are more focused on how the solution meets their functional needs and how they will bring that solution to deployment.&#8221; </p>
<p class="heading-1">Leveraging commercial avionics systems for military platforms </p>
<p class="body-text">Looking to add avionics functionality and capability in an affordable way, military program managers often will look to adapt designs and applications that gained traction first in commercial aircraft cockpits. </p>
<p class="body-text">&#8220;Designing with open architectures when upgrading military avionics platforms is crucial if we want to be able to leverage commercial processors and other components without major obsolescence issues,&#8221; Shepherd says. &#8220;At Rockwell Collins we have been doing this for more than 10 years using technology developed for commercial avionics and then adapting it for military platforms. A big example of this is our Pro Line Fusion Synthetic Vision (SV) capability &#8211; developed for the business jet community and now being adapted for use in military rotary wing applications under a DARPA contract. The work essentially has a synthetic avionics backbone that hosts the SV terrain engine and fusion algorithms. The fusion algorithms process the data coming from the multifunction radar sensor along with terrain and obstacle data to provide an integrated 3D view of the operational environment on Heads-Down Displays and Heads-Up Displays in the cockpit. Real-time sensor imagery can be overlaid as well. The sensors provide real-time imagery, fused with the SV database imagery to give the pilot increased awareness when he can&#8217;t see out the window. </p>
<p class="body-text">&#8220;A primary difference between military and commercial SV applications occurs with the military platform&#8217;s mission parameters,&#8221; Shepherd continues. &#8220;We started with a civil-certified version of SV and made the necessary changes for high-resolution terrain data in a 3D environment out-the-window type of display. The initial rotary wing helicopters making use of SV technology will be those experiencing brownout conditions in Iraq and Afghanistan such as U.S.&nbsp;Army MH-60 Black Hawk and MH-47 Chinook helicopters. We see the Marine Corps and Army likely integrating the SV systems into more platforms further down the road.&#8221; </p>
<p class="figures">
<figure>
<table width="470" border="0" align="right" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="padding-left:10px" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=1205,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5962%2Fsidebars%2F1" title="FPGAs enable security in avionics systems"><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=460&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5962%2Fsidebars%2F1" alt="21" width="460" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Sidebar 1:</b> FPGAs enable security in avionics systems</figcaption>
<div class="fig-zoom">(Click graphic to zoom)</div>
</td>
</tr>
</table>
</figure>
<p class="heading-1">High TRLs wanted</p>
<p class="body-text">A tight budget environment may be perceived as one fostering increased use of more affordable COTS equipment since there is little funding available for development, but <span class="italics">COTS</span> has different meanings for different people. Some view it as too commercial and therefore lacking in reliability, while others feel that view is outdated and COTS has a proven performance track record. However, there is no proven metric for measuring the reliability of avionics products tagged as <span class="italics">COTS,</span> since it is more of a procurement term than a technological one. Instead, military program managers and integrators are turning toward Technology Readiness Levels (TRLs) to determine an avionics product&#8217;s pedigree for military systems &#8211; whether it is COTS or not. &#8220;The generals are demanding a high TRL level; therefore, I want and demand a high TRL level &#8211; something that has a high proven operational capability such as TRL level 7 or higher,&#8221; Elbit&#8217;s Waage says. </p>
<p class="heading-1">The FACE revolution</p>
<p class="body-text">Open architectures, common industry standards, and TRL requirements have all been elements of an avionics procurement evolution driven by a need to better manage development costs without sacrificing capability and innovation. Avionics upgrades have embraced these concepts and seen major cost savings that enabled older platforms to live on for decades. Now branches within the DoD are taking cost-effectiveness to another level entirely by requiring future avionics systems to ensure portability of software across multiple platforms. This initiative has taken form as the Future Airborne Capability Environment (FACE) Consortium, and support for it is growing rapidly as DoD officials look for ways to make the funding cuts their civilian leadership is demanding.</p>
<p class="body-text">&#8220;We see FACE &#8211; which is an open systems approach for avionics &#8211; as a natural evolution of leveraging commercial technology and common standards,&#8221; Shepherd says. &#8220;It focuses on the reuse of software applications from one aircraft to another &#8211; even from one military service to another. Instead of paying each OEM or contractor every time you develop a software component, you can develop once and then redeploy the software.&#8221;</p>
<p class="body-text">&#8220;There is quite a bit of activity happening within the FACE Consortium today,&#8221; says Chip Downing, Senior Director, Business Development, Aerospace &amp; Defense at Wind River Systems in Alameda, CA. &#8220;The membership now has more than 50 organizations &#8211; including essentially every major U.S. defense prime contractor. The completion of the Technical Standard for Future Airborne Capability Environment (FACE), Edition 2.0 is expected [this month] in March 2013. The FACE Conformance Test Policy, Conformance Certification Guide, Conformance Tests, and the Conformance Verification Matrix Guides should be completed [later this month] with the official release targeted for early Q2 2013. Two major programs have also been awarded requiring FACE compliance to date.&#8221;</p>
<p class="body-text">One of these programs is the modernization of the C130-T, awarded to Lockheed Martin Mission Systems &amp; Training in Owego, NY, by the U.S.&nbsp;Naval Air Systems Command. Under the $30 million contract, Lockheed Martin engineers &#8220;will deliver a suite of GFE [Government-Furnished Equipment] and CFE [Contractor-Furnished Equipment] to provide new navigation, communication, flight management, and controls and displays capability,&#8221; says John&nbsp;Aebli, Director of Avionics Products for Lockheed Martin&#8217;s Mission Systems &amp; Training business. </p>
<p class="body-text">&#8220;The new avionics package is built around the latest generation of FACE-conformant Lockheed Martin avionics,&#8221; he continues. &#8220;The FACE framework enables cost savings by isolating change and variability. More specifically, individual software applications are isolated from the aircraft-specific configurations for controls and displays, other avionics, aircraft systems, and the hardware platform. This isolation enables software migration from platform to platform, as well as third-party application development, which leverages the nonproprietary software interfaces.&#8221; Lockheed Martin engineers also will develop and deliver nine initial cockpit kits for the C130-T upgrade. </p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5962%2Ffigures%2F1" title="The Navy&amp;#8217;s modernization of the C130-T&amp;#8217;s avionics by Lockheed Martin requires conformance to the FACE standard for software."><br />
					<img src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5962%2Ffigures%2F1" alt="21" width="470" border="0" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top:10px;line-height:1em">
<figcaption><b>Figure 1:</b> The Navy&#8217;s modernization of the C130-T&#8217;s avionics by Lockheed Martin requires conformance to the FACE standard for software.</figcaption>
<div class="fig-zoom">(Click graphic to zoom by 1.9x)</div>
</td>
</tr>
</table>
</figure>
<p class="heading-1">Enthusiasm for a new standard</p>
<p class="body-text">&#8220;Whenever you talk to military leaders about FACE, they initially react as if the last thing the U.S. military needs is a new standard, and their defense shields go up,&#8221; Downing says. &#8220;But once they learn how much money can be saved over the long-term, and how much [more] efficient and capable their platforms will be with FACE adoption, they can&#8217;t hide their enthusiasm. FACE will potentially save the government billions of dollars in the long run. FACE has created both technical and business guidelines, and combined, both will drive more capability to the warfighter faster. Because the FACE team is getting so many work products completed, everyone can see the results, and this has energized the entire team.&#8221;</p>
<p class="body-text">&#8220;It&#8217;s really vital for us to be members of FACE,&#8221; GE IP&#8217;s Collins says. &#8220;We see it as an incredibly important organization with objectives that are hugely significant for the industry in terms of application development, portability, reuse, and compliance, together with the inherent time- and cost-advantages of COTS solutions. When it comes to FACE, the customers we&#8217;ve been talking to typically fall into two camps: ones who are totally committed to going down the FACE-compliant route in their development and customers who see the benefits that FACE will bring but for now are watching and waiting.&#8221; </p>
<p class="heading-1">Interoperability</p>
<p class="body-text">&#8220;The movement behind FACE basically came from the government and DoD being fed up with being charged every time they used software programs in different platforms,&#8221; says Robert Day, Vice President of Marketing for LynuxWorks in San Jose, CA. &#8220;FACE solves this problem by creating interoperability among software platforms. Applications that have the common FACE API can move among multiple platforms, making it easier to keep legacy products and have them work with new applications and designs.&#8221; </p>
<p class="body-text">&#8220;Interoperability is an underlying theme with FACE. Software applications running on a mission computer in a helicopter platform could be reused on an Unmanned Aerial Vehicle (UAV), or the UAV system could work on a manned aircraft &#8211; all because of the common foundation,&#8221; Downing says. &#8220;In this way, FACE has a similar utilization model to that of Android, where applications can be used across multiple platforms due to its underpinning architecture. </p>
<p class="body-text">&#8220;The FACE team was smart &#8211; they optimized existing standards, ARINC 653, and POSIX to create the FACE technical standard,&#8221; Downing continues. &#8220;Realizing that there is a broad range of applications in military avionics, the team created four separate profiles &#8211; Security, Minimum Safety, Extended Safety, and General Purpose. The Security and Safety profiles are designed to complement Common Criteria security and RTCA DO-178C safety certification environments. I&nbsp;expect that all of these profiles will be able to leverage the existing COTS certification and quality attributes of existing ARINC 653 and POSIX products from a wide range of vendors.&#8221; Wind River&#8217;s VxWorks 653 Real-Time-Operating-System (RTOS) for ARINC&nbsp;653 time-and-space partitioned environments is FACE compliant, he adds.</p>
<p class="body-text">&#8220;Most of the avionics funding for the next few years will go toward upgrading and modernizing current platforms,&#8221; Day says. &#8220;If you don&#8217;t have a FACE API, you likely will be left out of new refresh programs coming up. Our safety-critical RTOS 178 product &#8211; which has a native POSIX API &#8211; is FACE compliant.&#8221; </p>
<p class="body-text">&#8220;We have been reflecting FACE activities in our product development road map and are working with a number of software vendors to ensure their offering is compatible with the FACEREF1 Software Reference Platform that we introduced last year,&#8221; Collins says. &#8220;It&#8217;s a platform that features GE IP&#8217;s SBC312 3U VPX single board computer and PMCCG1 graphics PMC&#8221; and enables organizations developing FACE-compliant applications to reduce risk by using preconfigured, prevalidated, and pretested COTS solutions, he adds. </p>
<p class="body-text">Green Hills Software in Santa Barbara, CA, which makes the POSIX-compliant INTEGRTY RTOS, also is a member of FACE. The INTEGRITY-178B tuMP multicore operating system was selected for use in their Gen II Mission Computer for upgrades of the U.S. Marine Corps UH-1Y and AH-1Z helicopters.</p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/03/military-avionics-designs-embrace-common-standards-and-trls/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fast processors, FPGAs fuel radar/EW signal processing performance</title>
		<link>http://www.mil-embedded.com/articles/id/?5931</link>
		<comments>http://www.mil-embedded.com/articles/id/?5931#comments</comments>
		<pubDate>Mon, 11 Feb 2013 15:00:00 +0000</pubDate>
		<dc:creator>John McHale, Editorial Director</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[about embedded system]]></category>
		<category><![CDATA[about embedded systems]]></category>
		<category><![CDATA[altera fpga]]></category>
		<category><![CDATA[altera fpga board]]></category>
		<category><![CDATA[analog converter box]]></category>
		<category><![CDATA[analogue signal processing]]></category>
		<category><![CDATA[application of embedded system]]></category>
		<category><![CDATA[curtiss wright embedded]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[digital analog converter]]></category>
		<category><![CDATA[digital signal processors]]></category>
		<category><![CDATA[Editorial Director]]></category>
		<category><![CDATA[embedded control system]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded real time operating system]]></category>
		<category><![CDATA[embedded real time operating systems]]></category>
		<category><![CDATA[embedded real time system]]></category>
		<category><![CDATA[embedded software]]></category>
		<category><![CDATA[embedded software design]]></category>
		<category><![CDATA[embedded software developer]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system application]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system designs]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system operating system]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems developer]]></category>
		<category><![CDATA[embedded systems fpga]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fanless embedded computer]]></category>
		<category><![CDATA[fpga board]]></category>
		<category><![CDATA[fpga design engineer]]></category>
		<category><![CDATA[fpga dsp]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[low power embedded systems]]></category>
		<category><![CDATA[Mil Tech Trends]]></category>
		<category><![CDATA[networking wireless sensors]]></category>
		<category><![CDATA[rc uav drone]]></category>
		<category><![CDATA[real time data acquisition]]></category>
		<category><![CDATA[real time embedded]]></category>
		<category><![CDATA[real time embedded operating systems]]></category>
		<category><![CDATA[real time embedded software]]></category>
		<category><![CDATA[real time embedded software development]]></category>
		<category><![CDATA[real time embedded system examples]]></category>
		<category><![CDATA[real time embedded systems examples]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[Signal processing trends in radar/sonar/EW]]></category>
		<category><![CDATA[single board computer]]></category>
		<category><![CDATA[single board computers]]></category>
		<category><![CDATA[software for embedded systems]]></category>
		<category><![CDATA[uav drone]]></category>
		<category><![CDATA[uav unmanned aerial vehicle]]></category>
		<category><![CDATA[vtol uav]]></category>
		<category><![CDATA[what is real time embedded systems]]></category>
		<category><![CDATA[xilinx fpga board]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=0134f2064dd339877ad05509b05d409a</guid>
		<description><![CDATA[Radar and Electronic Warfare (EW) designers' thirst for more and more data is driving innovation at the signal processing level as embedded computing suppliers work magic with FPGAs and processors to create intelligent, fast sensor networks.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="1" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5931%2Ffigures%2F1" />Radar and Electronic Warfare (EW) designers&#8217; thirst for more and more data is driving innovation at the signal processing level as embedded computing suppliers work magic with FPGAs and processors to create intelligent, fast sensor networks.</h3>
<p><span id="more-2081"></span><span class='body'>
<p class="body-text">The need to know where and when the enemy will strike is no less important today than when the allies cracked the allegedly unbreakable German Enigma code during World War II. The only difference today is the sophistication of the technology on either side. Modern Electronic Warfare (EW) systems can detect, collect, and catalog just about every signal, while radar systems being developed today will be able to track dismounted personnel, small objects at sea, as well as enemy fighters. To make these capabilities possible, embedded computing wizards are packing as much processing power as possible at the payload level on the platform, right next to the sensor. They mix together components such as GPGPUs, multicore processors, FPGAs, and complex software algorithms in different configurations designed to meet the low Size, Weight, and Power (SWaP) requirements demanded by their military customers. </p>
<p class="body-text">Sensor technology and the need for greater bandwidth are driving military electronics designs, especially in radar and electronic warfare applications, says&nbsp;Ray Alderman, Executive Director of VITA. &#8220;What the processor and sensor technology enables us to do is absolutely incredible. Every aircraft has a signature. When we hit an enemy aircraft with radar we can figure out where it came from, destroy that location, then figure out where it is going and eliminate that destination as well. The only problem with increasing bandwidth on the sensors is the ability to stream data over the RF links is still poor. Therefore, the focus going forward is to move the processor next to the sensor.&#8221; </p>
<p class="body-text">&#8220;Department of Defense (DoD)-oriented customers want to be able to perform data exploitation onboard platforms to provide immediate actionable intelligence to the warfighter &#8211; avoiding delays and bottlenecks encountered when sending large amounts of data to a ground station,&#8221; says Paul Monticciolo, Chief Technology Officer at Mercury Systems in Chelmsford, MA. </p>
<p class="body-text">&#8220;In the past Intelligence, Surveillance, and Reconnaissance (ISR) systems were aimed at finding that particular truck or plane in an area of interest; now they are required to have the capability to pick individuals out of a crowd,&#8221; says Vincent Chuffart, Embedded Computing Specialist at Kontron in Poway, CA. &#8220;Today&#8217;s sensor systems can detect everything, so integrators want to process that sensor data and extract all they can out of it at the sensor level before they transmit it to the warfighter.&#8221; Kontron puts a lot into small form factor designs such as 3U VPX to handle the high-speed processing and meet SWaP requirements, he continues. There is a trend toward smaller and cooler systems, especially with the vast majority of upgrades in front of us being just a refresh of existing equipment, Chuffart adds.</p>
<p class="body-text">&#8220;Users are trying to detect and decode complex radar or communication signals so they need more channels and these channels need to be accommodated simultaneously,&#8221; says Rodger Hosking, Vice President at Pentek in Upper Saddle River, NJ. &#8220;An example would be a communication system that listens to multiple radios or communicates with&nbsp;multiple radios at the same time or a system that requires wider signal bandwidths for radar. Once these signals are digitized, higher data rates are required to move the data, which puts a bigger load on the DSP engine to accommodate the data so it can keep up in real time.&#8221; A higher level of system performance is required through more sophisticated signal processing techniques, higher-speed A/D converters to capture wideband signals, and faster FPGAs to do signal processing and process algorithms at higher rates, he adds. </p>
<p class="heading-1">Harnessing commercial processor technology</p>
<p class="body-text">Embedded computing companies are leveraging commercial processor technology &#8211; whether from Intel, NVIDIA, or other companies &#8211; to drive the performance of radar and electronic warfare systems. &#8220;FPGAs and GPGPUs are excellent for front-end sensor processing, but the SWaP characteristics of multicore processors are enabling us to provide the type of performance and analysis of data that is typically done in a ground station,&#8221; Monticciolo says. &#8220;Some companies are working with mobile-class processors, but when you start doing massive correlations and graph-type processing, you need the performance of a multicore processor in a server-class solution. This also guarantees code portability &#8211; being able to run the same code on a 1U server in the ground station and in a small embedded processing system up on the platform.&#8221; Mercury has a high-performance embedded computing solution with their PowerStream technology performing radar processing onboard the Navy&#8217;s Aegis-class ships.</p>
<p class="body-text">&#8220;On Intel Architecture, the advent of AVX and the coming of AVX2 with a fused multiply-add pipeline are significantly improving the applicability of Intel devices to signal processing applications, as is the increasing performance of the integrated GPUs,&#8221; says Peter Thompson, Senior Business Development Manager for high-performance embedded computing at GE Intelligent Platforms in Huntsville, AL. &#8220;Now that NVIDIA is shipping Kepler GPUs, we are seeing significantly better performance per watt than the previous generation Fermi offered. GPUDirect is helping us to reduce sensor-to-processor latency, and opening up some new applications such as EW that are time sensitive. The interconnects are keeping pace too &#8211; PCI&nbsp;Express Gen 3, 40 GbE, and 56&nbsp;Gbps InfiniBand are starting to become available or are already out there, and are allowing us to keep the processing pipelines fed.&#8221;</p>
<p class="body-text">&#8220;For many EW and DSP applications, our customers have found that the Intel Core&nbsp;i7 processor provides them with the right balance of performance and SWaP,&#8221; says Ben Klam, Vice President of Engineering at Extreme Engineering Solutions (X-ES) in Madison, WI. &#8220;The Intel Advanced Vector Extensions (AVX) supported by the Intel Core i7 processor provides excellent DSP performance with support for operations on 256-bit vectors.&#8221;</p>
<p class="heading-1">Managing power consumption and signal integrity</p>
<p class="body-text">Processors do enable amazing applications, but also create serious headaches for embedded system designers with the heat they generate. Cooling the systems and keeping their power consumption low can be quite complex, especially as system designs trend toward smaller form factors.</p>
<p class="body-text">&#8220;Two big challenges faced by embedded signal processing designers are power consumption and signal integrity,&#8221; says Denis Smetana, Product Marketing Manager for FPGA products at Curtiss-Wright Controls Defense Solutions in Ashburn, VA. &#8220;Devices continue to run faster, which requires more power. With so many high-speed signals, more exotic PWB material needs to be used along with special handling of high-speed traces and more detailed signal integrity and power integrity analysis. The super high-speed signaling is running the processors so fast that a lot of heat is being dissipated and as geometries keep getting smaller, leakage current gets bigger as a percentage of total power. And leakage current is very sensitive to temperature. This results in a significant power increase as temperature rises. Software/firmware also is needed to be able to utilize the larger processing performance.&#8221;</p>
<p class="body-text">&#8220;There are some applications with DSP performance requirements that exceed the capability of the Intel Core i7 processor where customers add GPGPUs or FPGAs into the mix, but the cost is high,&#8221; Klam explains. &#8220;GPGPUs typically consume more power than embedded General Purpose Processors (GPPs), which in turn creates more heat that has to be dissipated. GPGPUs are driven by the consumer market, so product obsolescence can be a big problem for long-life embedded systems. And development is much more complex &#8211; software development in the case of GPGPUs and VHDL and software development in the case of FPGAs. We are also seeing a lot of demand for systems that require something smaller than 3U VPX can support,&#8221; Klam says. &#8220;We have developed a small form factor system, the XPand6000 Series, that utilizes COTS components &#8211; COM Express, PMC/XMC, and SSDs &#8211; to enable customers to rapidly prototype and deploy small form factor solutions.&#8221; </p>
<p class="heading-1">FPGAs and the front end</p>
<p class="body-text">For the front end of signal processing solutions &#8211; where the signals are received by the embedded computing system &#8211; designers far and wide sing the praises of today&#8217;s FPGAs, whether Xilinx or Altera, for enabling the capabilities of modern radar and electronic warfare platforms.</p>
<p class="body-text">&#8220;We are seeing people wanting to put more components of their radar systems in an FPGA,&#8221; says Jeff Milrod, CEO of Bittware in Concord, NH. &#8220;Altera&#8217;s Stratix technology is supporting this by placing a lot of floating-point capability in the front end. That way the system can aggressively integrate full imaging and even identify areas of interest before it sends data to the ground. FPGAs are needed because the rates are so high, now everybody seems to want direct RF conversion &#8211; so they get gigahertz sample rates flying and then handle them&nbsp;in the FPGAs.&#8221;</p>
<p class="body-text">Compared with a GPP, the FPGAs are much better suited for real-time embedded systems. The GPP, while very fast, is not well connected to I/O and does not do real-time data processing as well as an FPGA. Pentek&#8217;s Onyx 71720 software radio module is used in radar, UAV, and communication signal processing applications and is based on the Xilinx Virtex-7 FPGA, used in radar and communication signal processing applications.</p>
<p class="body-text">&#8220;FPGAs will continue to dominate digital signal processing for a myriad of reasons: mainly processor technology isolation and control of one&#8217;s own IP &#8211; the critical element in any real-time, signal processing platform,&#8221; says Doug Patterson, Vice President of the Military &amp; Aerospace Sector at Aitech in Chatsworth, CA. Aitech&#8217;s military-grade 3U CompactPCI, 3U VPX, 6U VPX, and 6U VMEbus systems leverage FPGAs for radar and fire-control applications. </p>
<p class="body-text">FPGAs process everything very fast and enable radar/EW integrators to have more control, to adapt and change their applications based on mission results, says Jane Donaldson, President of Annapolis Microsystems, in Annapolis, MD. &#8220;A major drawback with FPGAs for many is the expense of programming in VHDL, which adds labor costs and lengthens the design cycle,&#8221; she continues. To reduce time to market and development costs on their WILDFIRE FPGA boards, Annapolis engineers use their CoreFire solution to program FPGAs. It enables software programmers working on GPPs to also program FPGAs, Donaldson adds.</p>
<p class="body-text">&#8220;The combination of FPGAs with SBCs, GPGPUs, and multicore processors in one system is how requirements are trending,&#8221; Smetana says. &#8220;For example, on the front end, FPGAs are well suited for parallel processing of sensor data, but then may feed the data to GPGPUs for additional parallel processing or multicore processors for sequential processing.&#8221; Curtiss-Wright is working with Tektronix to improve performance for wideband, low-latency processing for Digital Radio Frequency Memory (DRFM), electronic warfare, signal intelligence, and electronic countermeasure applications. Under the collaboration, Curtiss-Wright&#8217;s CHAMP-WB (&#8220;Wideband&#8221;) board will work with the Tektronix ADC/DAC FMC module, the TADF-4300, to become the CHAMP-WB-DRFM utilizing a Xilinx Virtex-7 FPGA. </p>
<p class="heading-1">FPGAs embracing ARM and OpenCL</p>
<p class="body-text">&#8220;In the future we see embedded systems generally moving toward embracing ARM processor technology,&#8221; Milrod says. &#8220;There is a huge user community and infrastructure, it is quite efficient, and the performance continues to improve dramatically with 64-bit now emerging. Although currently there is no ARM COTS community in the military, interest in these designs is exploding in the Linux world and could very well catch on in military designs. Both Altera and Xilinx are integrating ARM into all their FPGAs from now on. At BittWare, we&#8217;ve started to integrate them onto our high-end VPX boards. The ARM can handle housekeeping functions while the massive bulk processing onboard is handled by the FPGAs and/or floating point coprocessors such as our Anemone many-core processor that is based on Adapteva&#8217;s Epiphany architecture. </p>
<p class="body-text">&#8220;One standard that is getting interest in the defense community is the OpenCL framework,&#8221; Milrod says. &#8220;Altera has made a big push with it and they&#8217;ve really driven OpenCL on their FPGA designs. Within the defense community we&#8217;ve seen attention for OpenCL because some designers are dissatisfied with inefficiencies of running on GPUs, and then the difficulties they have when porting GPGPUs to FPGAs.&#8221;</p>
<p class="figures">
<figure>
<table width="300" border="0" align="right" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="padding-left: 8px;" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5931%2Fsidebars%2F1" title="Radar signal capture and collection speed enhanced by new software tool"><br />
					<img width="290" border="0" alt="21" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=290&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5931%2Fsidebars%2F1" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Sidebar 1:</b> Radar signal capture and collection speed enhanced by new software tool</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 3.0x)</b></div>
</td>
</tr>
</table>
</figure>
<p class="heading-1">Software challenges</p>
<p class="body-text">Managing processors and the heat and power they generate is only part of the difficulty in creating complex signal processing solutions. &#8220;Integrating new, untested technologies while developing new, critical application software drains budgets and saps our customers&#8217; resources and energy,&#8221; Patterson says. &#8220;Serial buses and parallel buses operate very differently, especially when time-critical messages must occur in order and in phase. Multiple serial buses can easily become out of sync and message passing becomes tricky with RTOS overhead to sort out the time sync issues. Command/response buses with tight, time-aware and synchronized higher-level data protocols are critical in real-time process control systems.&#8221;</p>
<p class="body-text">&#8220;Radar and EW systems are so complicated with so many levels that one of our biggest challenges lies in offering software board support packages that work with various types of middleware,&#8221; Pentek&#8217;s Hosking says. &#8220;Often the code and middleware don&#8217;t interact well and don&#8217;t do what people expect them to do. This is the biggest challenge we face &#8211; providing tools that enable our customers to efficiently develop their unique and highly complex applications under popular operating systems like Windows, Linux, and VxWorks.&#8221;</p>
<p class="body-text">Software solutions also help radar display processing engineers to combine &#8220;graphical data with real-time radar data and to create pictures using standard commercial technology,&#8221; says David Johnson, Managing Director for Cambridge Pixel in Royston, England. &#8220;The amount of data being processed and displayed is more complex than ever, so to create complex pictures of graphical data, we use high-end graphics chips from companies such as AMD and NVIDIA. We present a representation of the data generated by the front-end processors that makes sense&nbsp;&#8211; taking multiple layers of radar data, map data, chart data, and other sensor data fused together in one composite display. The system integrator decides how he wants the ISR information displayed.&#8221; Cambridge Pixel&#8217;s standard product &#8211; the SPx Radar Development Library &#8211; is a collection of software modules that can be used for radar displays as well as recording or tracking systems, he adds. </p>
<p class="body-text">
<figure>
<table width="300" border="0" align="right" cellpadding="2" cellspacing="0">
<tr>
<td align="center" style="padding-left: 8px;" >
<p>				<a onclick="popup=window.open(this.href, '22', 'width=875,height=786,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="22" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5931%2Fsidebars%2F2" title="Radar/EW Signal Processing companies"><br />
					<img width="290" border="0" alt="22" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=290&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FMES5931%2Fsidebars%2F2" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Sidebar 2:</b> Radar/EW Signal Processing companies</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>
</td>
</tr>
</table>
</figure>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/02/fast-processors-fpgas-fuel-radarew-signal-processing-performance/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Choosing a processor is a multifaceted process</title>
		<link>http://www.embedded-computing.com/articles/id/?5918</link>
		<comments>http://www.embedded-computing.com/articles/id/?5918#comments</comments>
		<pubDate>Fri, 08 Feb 2013 15:00:00 +0000</pubDate>
		<dc:creator>David Katz, Analog Devices</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Silicon]]></category>
		<category><![CDATA[about embedded systems]]></category>
		<category><![CDATA[Analog Devices]]></category>
		<category><![CDATA[applications embedded systems]]></category>
		<category><![CDATA[arm processor cores]]></category>
		<category><![CDATA[asic design jobs]]></category>
		<category><![CDATA[automotive embedded software]]></category>
		<category><![CDATA[automotive embedded systems]]></category>
		<category><![CDATA[Choosing the right processor]]></category>
		<category><![CDATA[design embedded system]]></category>
		<category><![CDATA[design of embedded systems]]></category>
		<category><![CDATA[designing embedded systems]]></category>
		<category><![CDATA[distributed embedded systems]]></category>
		<category><![CDATA[dsp engineer jobs]]></category>
		<category><![CDATA[dsp in fpga]]></category>
		<category><![CDATA[dsp on fpga]]></category>
		<category><![CDATA[dsp with fpga]]></category>
		<category><![CDATA[embedded design engineer]]></category>
		<category><![CDATA[embedded development]]></category>
		<category><![CDATA[embedded engineer jobs]]></category>
		<category><![CDATA[embedded rtos]]></category>
		<category><![CDATA[embedded software systems]]></category>
		<category><![CDATA[embedded system architecture]]></category>
		<category><![CDATA[embedded system design projects]]></category>
		<category><![CDATA[embedded system designing]]></category>
		<category><![CDATA[embedded system designs]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system engineer jobs]]></category>
		<category><![CDATA[embedded system hardware]]></category>
		<category><![CDATA[embedded system hardware design]]></category>
		<category><![CDATA[embedded system operating system]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded systeme]]></category>
		<category><![CDATA[embedded systemen]]></category>
		<category><![CDATA[embedded systems developer]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems fpga]]></category>
		<category><![CDATA[embedded systems hardware]]></category>
		<category><![CDATA[embedded systems operating system]]></category>
		<category><![CDATA[embedded systems real time applications]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[fpga dsp]]></category>
		<category><![CDATA[fpga engineer jobs]]></category>
		<category><![CDATA[fpga hardware]]></category>
		<category><![CDATA[fpga processors]]></category>
		<category><![CDATA[ic design engineer jobs]]></category>
		<category><![CDATA[power management in embedded systems]]></category>
		<category><![CDATA[real time embedded applications]]></category>
		<category><![CDATA[real time embedded operating systems]]></category>
		<category><![CDATA[real time embedded programming]]></category>
		<category><![CDATA[real time embedded software development]]></category>
		<category><![CDATA[real time microcontroller]]></category>
		<category><![CDATA[real time software systems]]></category>
		<category><![CDATA[realtime embedded system]]></category>
		<category><![CDATA[realtime embedded systems]]></category>
		<category><![CDATA[rtos embedded systems]]></category>
		<category><![CDATA[rtos in embedded system]]></category>
		<category><![CDATA[rtos operating system]]></category>
		<category><![CDATA[rtos os]]></category>
		<category><![CDATA[software embedded]]></category>
		<category><![CDATA[software embedded systems]]></category>
		<category><![CDATA[software for embedded systems]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=73f3c9814762fcb152522508e486e506</guid>
		<description><![CDATA[The days are over when selecting a processor was a relatively simple task, in light of today&#8217;s converged processing paradigm. But examining a few key considerations can ease the decision-making process.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="2" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5918%2Ffigures%2F2" />The days are over when selecting a processor was a relatively simple task, in light of today&#8217;s converged processing paradigm. But examining a few key considerations can ease the decision-making process.</h3>
<p><span id="more-2074"></span><span class='body'>
<p class="body-text">Selecting an embedded processor used to be a pretty straightforward task. Of course, this was back in &#8220;the old days,&#8221; when the focus was on a limited set of functions, user interface and connectivity didn&#8217;t matter too much, and power consumption wasn&#8217;t such an overarching issue. In today&#8217;s realm of converged processing, where a single device can perform control, signal processing, and application-level tasks, there&#8217;s a lot more to consider (Figure 1). While there are too many aspects of the processor selection process to detail here, let&#8217;s examine some of the more prominent areas that system designers must consider. </p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=647,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5918%2Ffigures%2F1" title="Today&amp;#8217;s converged processing paradigm makes selecting a processor a more complex decision than ever."><br />
					<img width="470" border="0" alt="21" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5918%2Ffigures%2F1" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Figure 1:</b> Today&#8217;s converged processing paradigm makes selecting a processor a more complex decision than ever.</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.8x)</b></div>
</td>
</tr>
</table>
</figure>
<p class="heading-1">Processor performance</p>
<p class="body-text">System designers reflexively note the processing speed of a device as a major indicator of its performance. This is not a bad start, but it&#8217;s an incomplete assessment. It is clearly important to evaluate the number of instructions a processor can perform each second, but also to assess the number of operations accomplished in each core clock cycle and the efficiency of the computation units. And it is no longer uncommon to employ processors with multiple cores as a way of greatly extending the computational capabilities of the device (especially in the case of homogenous cores) or clearly demarcating the control processing from the signal processing activity (often with heterogenous cores). </p>
<p class="heading-1">Hardware acceleration</p>
<p class="body-text">Of course, it&#8217;s not just about the processor core(s). For execution of well-specified functionality, a hardware accelerator is almost always the most power-efficient method to perform the function it was designed to accelerate. One area that can make the difference in using the accelerator is how friendly it is to use in a software algorithm. For full-algorithm-type accelerators, such as an H.264 encoder, there usually is not an issue because it&#8217;s substantially self-contained. However, for kernel-type accelerators like an FFT, it can be more challenging to use an accelerator within a larger algorithm. Take a look at how the hardware function performs and how it needs to be configured.</p>
<p class="heading-1">Bandwidth requirements</p>
<p class="body-text">Bandwidth estimation is a process that&#8217;s easy to oversimplify, sometimes with unfortunate results. All individual data flows in the system must be summed (with directionality and time window taken into account) to ensure that the core is capable of completing its data processing within the allotted window, and that the various processor buses are not overloaded, leading to data corruption or system failure. For example, for a video decoder, designers need to first account for reading the data that needs to be decoded. Then, it is necessary to incorporate the many data passes required to create the decoded frame sequence. This may involve multiple buffer transfers between internal and external memories. Finally, designers must account for the streaming of the display buffer to the output device. </p>
<p class="body-text">After all data flows are considered, the overall system budget needs to be constructed. This budget is influenced by several factors, including DRAM access patterns (and resulting performance degradations), internal bus arbitration, memory latencies, and so on. </p>
<p class="heading-1">Power management</p>
<p class="body-text">The ability to throttle power consumption to a level commensurate with temporal operating requirements is crucial to preserving battery life, as well as overall energy costs in mains-powered systems. Processors can offer a wide range of options for optimizing an application&#8217;s power profile. One such feature is dynamic power management &#8211; the ability to adjust core frequency and operating voltage to meet a certain performance level. Another is the availability of multiple power modes that turn off various unneeded resources, including memories and peripherals, during certain time intervals. System wakeup (through general-purpose I/O, a real-time clock, or another stimulus) is an integral part of this power mode control. Yet another degree of flexibility in power management is the presence of multiple voltage domains for core, I/O, and memories, allowing different system components to operate at lower voltages when practical. </p>
<p class="heading-1">Security needs</p>
<p class="body-text">Over the past several years, processor security has become increasingly important. Whether or not such a scheme is a baseline requirement of a system, it is essential to view the security question from multiple vantage points before deciding on the final direction. Security needs usually take the form of platform protection, IP security, or data security &#8211; or some combination of all&nbsp;three.</p>
<p class="body-text"><span class="italics">Platform protection</span> is needed to ensure that only authenticated code is run in the application. In other words, must &#8220;rogue code&#8221; be actively prevented from running? By &#8220;rogue code,&#8221; we refer to a program that tries to access protected information on the processor, or &#8220;hijack&#8221; the processor and gain control of the larger system. Platform protection can be implemented with a variety of techniques, and there are always trade-offs to consider in the selection. As with any trade-off, there is a cost implication as the protection levels increase. Another important consideration is the ease-of-use of the overall security scheme, both in development and in production. </p>
<p class="body-text">The ability to authenticate code is also critical to securing IP and data. IP security requires a way to either encrypt the code image brought into the processor for execution, or to store this IP internal to the processor through embedded flash or an internal ROM inaccessible through external mechanisms. Some form of data security is required to ensure that data enters and exits the system without being compromised. In some cases, especially in lower-end microcontrollers, security may be handled completely with embedded flash, but on higher-end processors, where the application is loaded in through a boot loader, the scheme may be more complex.</p>
<p class="heading-1">Safety and fault tolerance</p>
<p class="body-text">There are many applications where safety is clearly a main concern, for example, an automotive driver assistance system or a closed-loop power control system. However, currently designers of other not-so-obvious applications are starting to care more about increasing levels of operational robustness. This is especially true as processors are built in smaller silicon geometries, such as 28 nm or 40&nbsp;nm, for example, where soft errors in memory can impact operations because of naturally occurring events, including alpha and gamma particles. During the processor selection process, it&#8217;s important to examine how a processor handles these types of errors, as well as how it responds to unexpected events in general. What steps can it take when an error occurs? How does it signal to other system components that something has gone wrong?</p>
<p class="heading-1">Debugging capabilities</p>
<p class="body-text">As applications become more complex, so does the development process. Shortcuts that worked in the past might not work when the number of processor and application subcomponents has grown exponentially. Consider the system-level debug of a large software-based system that uses an operating system or real-time kernel. Do the processor and its tool chain have a way to examine the processor state without impacting the application? Is it possible to profile and trace where the processor has been, or to trap on all events of interest? All these questions, and many more, should be answered before becoming comfortable with the level of debugging available.</p>
<p class="heading-1">System cost</p>
<p class="body-text">At times, system designers focus on the processor price tag instead of the overall system design cost. It is imperative to take into account not only the device cost itself, but also cost of the supporting circuitry required &#8211; level translators, interface chips, glue logic, and so on. Also, package options play a vital role: One processor&#8217;s package might allow a four-layer board design, while another&#8217;s may necessitate an expensive six- or eight-layer board because of routing challenges. Finally, don&#8217;t overlook the value of extra processing headroom that can allow for future expandability without causing an expensive processor change or board spin.</p>
<p class="heading-1">Signal chain</p>
<p class="body-text">One final note: Processor selection should occur in tandem with a study of a system&#8217;s signal chain requirements. Does the processor vendor also sell peripherals that connect to the processor? It is often advantageous to buy multiple system components from the same vendor &#8211; for interoperability, customer support, and overall pricing benefits. </p>
<p class="heading-1">Ready to choose a processor?</p>
<p class="body-text">As mentioned, there are many other facets to consider during the processor selection phase, but the considerations described here should provide a good basis for embarking on this crucial process. Vendors such as Analog Devices offer a wide range of processors and other components that meet the described selection criteria. </p>
<p class="author-bio">David Katz is New Processor Applications Manager at Analog&nbsp;Devices, Inc.&nbsp;Previously, he&nbsp;was a Senior Design Engineer at Motorola, Inc., in&nbsp;cable modem and automation groups. </p>
<p class="author-bio">Rick Gentile is Director of DSP Applications and Systems Engineering at Analog Devices, Inc. Prior to ADI, he held a variety&nbsp;of&nbsp;signal processing and embedded processing engineering positions. </p>
<p class="contact-info">Analog Devices, Inc. <span class="hyperlink"><a href="http://www.analog.com/processors">www.analog.com/processors</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/ADI_News">Twitter</a></span> <span class="hyperlink"><a href="http://ez.analog.com/blogs/analogdialogue">Blog</a></span> <span class="hyperlink"><a href="http://www.facebook.com/AnalogDevicesInc">Facebook</a></span> <span class="hyperlink"><a href="https://plus.google.com/116502491843999760953">Google+</a></span> <span class="hyperlink"><a href="http://www.linkedin.com/company/analog-devices">LinkedIn</a> <a href="http://www.youtube.com/user/AnalogDevicesInc">YouTube</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/02/choosing-a-processor-is-a-multifaceted-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Eating right at the open source buffet</title>
		<link>http://www.embedded-computing.com/articles/id/?5919</link>
		<comments>http://www.embedded-computing.com/articles/id/?5919#comments</comments>
		<pubDate>Fri, 08 Feb 2013 15:00:00 +0000</pubDate>
		<dc:creator>Bill Weinberg, Olliance Consulting</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[computer board]]></category>
		<category><![CDATA[computer on module]]></category>
		<category><![CDATA[eclipse ide for java developers]]></category>
		<category><![CDATA[embedded board]]></category>
		<category><![CDATA[embedded c]]></category>
		<category><![CDATA[embedded computer design]]></category>
		<category><![CDATA[embedded computer system]]></category>
		<category><![CDATA[embedded computer vision]]></category>
		<category><![CDATA[embedded computing design magazine]]></category>
		<category><![CDATA[embedded controller]]></category>
		<category><![CDATA[embedded development kit]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[embedded hardware]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[embedded linux board]]></category>
		<category><![CDATA[embedded linux development kit]]></category>
		<category><![CDATA[embedded linux hardware]]></category>
		<category><![CDATA[embedded operating system]]></category>
		<category><![CDATA[embedded operating systems]]></category>
		<category><![CDATA[embedded pc]]></category>
		<category><![CDATA[embedded processor]]></category>
		<category><![CDATA[embedded programming]]></category>
		<category><![CDATA[embedded software engineering]]></category>
		<category><![CDATA[embedded system]]></category>
		<category><![CDATA[embedded system development]]></category>
		<category><![CDATA[embedded system software]]></category>
		<category><![CDATA[embedded system software design]]></category>
		<category><![CDATA[embedded systems]]></category>
		<category><![CDATA[embedded systems applications]]></category>
		<category><![CDATA[embedded systems development]]></category>
		<category><![CDATA[embedded systems programming]]></category>
		<category><![CDATA[embedded systems software]]></category>
		<category><![CDATA[embedded world]]></category>
		<category><![CDATA[embedding]]></category>
		<category><![CDATA[embeded system]]></category>
		<category><![CDATA[embeded systems]]></category>
		<category><![CDATA[floss open source]]></category>
		<category><![CDATA[gnu open source license]]></category>
		<category><![CDATA[java development tools]]></category>
		<category><![CDATA[linux embedded]]></category>
		<category><![CDATA[linux embedded board]]></category>
		<category><![CDATA[microcontrollers]]></category>
		<category><![CDATA[mini pc]]></category>
		<category><![CDATA[Olliance Consulting]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[open source code analysis]]></category>
		<category><![CDATA[open source oss]]></category>
		<category><![CDATA[open source software licensing]]></category>
		<category><![CDATA[pc104]]></category>
		<category><![CDATA[project with source code]]></category>
		<category><![CDATA[protecting intellectual property]]></category>
		<category><![CDATA[single board computer]]></category>
		<category><![CDATA[single board computer linux]]></category>
		<category><![CDATA[single board computers]]></category>
		<category><![CDATA[source code analysis tools]]></category>
		<category><![CDATA[source code for projects]]></category>
		<category><![CDATA[what is an embedded computer]]></category>
		<category><![CDATA[what is embedded system]]></category>
		<category><![CDATA[windows 7 embedded]]></category>
		<category><![CDATA[windows embedded]]></category>
		<category><![CDATA[windows xp embedded]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=59f75b03640e366534b16655b0fc25ea</guid>
		<description><![CDATA[With the smorgasbord of Open Source Software (OSS) available for developers to dine from, it's vital they"eat right" by choosing the OSS compatible with their existing project and IP needs.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5919%2Ffigures%2F3" />With the smorgasbord of Open Source Software (OSS) available for developers to dine from, it&#8217;s vital they<br />
&#8220;eat right&#8221; by choosing the OSS compatible with their existing project and IP needs.</h3>
<p><span id="more-2076"></span><span class='body'>
<p class="body-text">Open Source Software (OSS) offers intelligent systems designers a veritable smorgasbord of tools and technology. Spanning the entire software stack, from boot code and drivers to OSs, executives to middleware, and application components to development tools, OSS&nbsp;provides readily available alternatives to both legacy commercial software and also to in-house code developed from scratch. </p>
<p class="body-text">But dining at the open source table is not an embedded bean feast &#8211; code gathered<span class="interview-name"> </span><span class="italics">&#224; la carte </span>might not always integrate easily to make a well-formed &#8220;meal.&#8221; While literally millions of OSS projects are available on popular forges and hubs, developers must take care to choose the right technology ingredients and tidbits to fit project and intellectual property needs.</p>
<p class="body-text">The following examines resources and tools for discovering OSS projects and metrics for those projects. It also explores factors to consider when choosing OSS projects and components for embedded designs. And it serves up heuristic methods for choosing the OSS technology most appropriate to real-world embedded development needs.</p>
<p class="heading-1">Discovering embedded open source</p>
<p class="body-text">Finding open source software is easy. Finding the right piece of OSS can be much harder. Luckily, options for finding and evaluating OSS are plentiful, and come in five categories: search engines, hosting sites, individual project sites, dedicated OSS discovery tools, and embedded platform distributions.</p>
<p class="heading-2">Search engines</p>
<p class="body-text">Google, Yahoo!, Bing, Baidu, and other general-purpose search engines actually do an okay job at ferreting out OSS projects. A quick search on the string &#8220;open source embedded database,&#8221; for example, yields a rich mix of references and actual project sites and repositories. But while search engines are an okay starting point, using them can yield scattershot results.</p>
<p class="heading-2">Hosting sites, foundations </p>
<p class="body-text">Another path is to go right to the source &#8211; the forges and hubs that host multiple projects. Until a few years ago, <span class="hyperlink"><a href="http://sourceforge.net">SourceForge</a></span> would have been a developer&#8217;s prime destination, with its collection of 450,000 project repositories. But today, new projects are likely to find homes on <span class="hyperlink"><a href="https://github.com/">GitHub</a></span> (with 2.4M unique repositories), <span class="hyperlink"><a href="http://www.codeplex.com/">CodePlex</a></span> (32,000 projects), <span class="hyperlink"><a href="http://code.google.com/">Google Code</a></span> (10,000 projects), <span class="hyperlink">Gitorious</span>, and a long tail of other sites. </p>
<p class="body-text">Yet another type of locale for project hosting is the gamut of open source foundation forges &#8211; the Apache Foundation, CodePlex Foundation, the Eclipse Foundation, and others. These sites bring together usually related bodies of code (for example, IDE elements and plug-ins for Eclipse) and can boast several hundred hosted projects.</p>
<p class="body-text">While repository aggregations and foundation sites are searchable by themselves, each still constitutes a distinct silo; however vast their portfolios may be, they don&#8217;t cover the entire universe of open source. </p>
<p class="heading-2">Project sites</p>
<p class="body-text">Some projects eschew the crowded forges and build their own dedicated Web sites and repositories. These may be projects of broad community interest, of greater maturity, or merely the result of technical vanity. In any case, the main challenge is still finding the project, not in the relatively limited haystack of a forge but in the larger universe of the World Wide Web.</p>
<p class="heading-2">Discovery portals and tools &#8211; The&nbsp;Michelin Guide of OSS</p>
<p class="body-text">Probably the shortest path to finding and also evaluating open source projects lies in portals that help developers discover, track, and compare open source code and the projects behind them. These free portals include <span class="hyperlink"><a href="http://www.ohloh.net/">Ohloh.net</a></span> (owned by Olliance Consulting parent company Black Duck), <span class="hyperlink"><a href="http://code.google.com/codesearch">Google Code Search</a></span>, and others. These services track the full gamut of open source software, and like the projects they monitor, they are themselves open, letting users introduce new project repositories for cataloging and analysis.</p>
<p class="body-text">OSS management platform tools also exist to help developers discover suitable homemade open source as well as &#8220;in the wild.&#8221; At companies with established policies for OSS use and deployment, developers can use these tools to peruse directories of vetted/approved open source code documented and/or maintained by their employers. These portfolios can also include code built and managed under the umbrella of &#8220;inner-source&#8221; and &#8220;corporate source&#8221; programs. </p>
<p class="heading-2">Embedded platform distributions &#8211; Prix fixe meals</p>
<p class="body-text">If the organization has already committed to a prepackaged embedded platform distribution &#8211; a commercial or community-based Linux tool kit, an Android SDK, or equivalent &#8211; then engineers already have a library of applications, middleware, and utilities at their fingertips. Embedded distributions typically comprise 250 to 500 packages, with each package containing one or more unique, ready-to-use pieces of project code. Unlike downloading code directly from project sites, embedded distributions and SDKs usually include prebuilt versions of project code, tested and vetted for integration compatibility across packages. In many cases, these versions might not be the latest and greatest, and developers might need to turn to the original project sites to access the more current features and bug fixes. However, switching to newer versions of projects, while attractive, can break compatibility with other code in your stack, and also fall outside Service-Level Agreements (SLAs) from commercial suppliers.</p>
<p class="heading-1">Evaluating options, refining the OSS&nbsp;palate</p>
<p class="body-text">Finding potentially useful code represents only half the challenge. Developers must also vet discovered code across a variety of parameters to determine if it&nbsp;is technically and legally viable. Factors to consider include code size, language, and quality; community history and dynamics; software licensing; and provenance.</p>
<p class="body-text"><span class="bold">Code size &#8211;</span> Legacy embedded designs face severe constraints on code size. While tumbling DRAM and flash memory prices have made parsimonious provisioning a concern of the past, embedded software still benefits from compact code. Memory and storage eaten up by utility and infrastructure code are unavailable for differentiating software and for end-user content.</p>
<p class="body-text">Because OSS starts with source code, the memory footprint of a given project or software component isn&#8217;t always obvious. Moreover, today&#8217;s device-based software stacks can contain ingredients cooked up in traditional compiled/assembled languages (C,&nbsp;C++, assembly), byte-code executed Java, and scripted/interpreted languages (PHP, Python, Lua, and so on).</p>
<p class="body-text">The sites and tools mentioned earlier report both the language of projects and the Lines of Code (LoC) in each. If a project is truly size-sensitive, the best approach is to download and build the source code to determine actual binary size (or just examine the total size of scripted/interpreted code). Figure 1 uses Ohloh reports to compare source code growth in three database projects over time.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5919%2Ffigures%2F1" title="Comparing code size (LoC) over time for three database projects"><br />
					<img width="470" border="0" alt="21" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5919%2Ffigures%2F1" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Figure 1:</b> Comparing code size (LoC) over time for three database projects</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>
</td>
</tr>
</table>
</figure>
<p class="body-text"><span class="bold">Language &#8211;</span> Implementation language is as important as functionality and size. If a project is being developed in&nbsp;C, projects in Java or Python probably won&#8217;t integrate well into the existing or planned software stack. </p>
<p class="body-text"><span class="bold">Code quality &#8211;</span> Code quality can prove rather difficult to gage. OSS discovery portals do report how well commented/documented OSS projects are. Other tools exist to vet the quality of code contained within a project, for example, open source <span class="hyperlink"><a href="http://www.sonarsource.org/">Sonar</a></span> and the popular <span class="hyperlink"><a href="http://www.coverity.com/">Coverity</a></span> suite.</p>
<p class="body-text"><span class="bold">Community dynamics &#8211;</span> Important metrics of the health and quality of open source projects lie in the size and activity of the community behind it. Some hosting sites offer historical participation metrics, and some sites include contributor data and activity over the lifetime of a project. Figure 2 uses Ohloh reports to compare the waxing and waning of the developer community over time for three database projects. </p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '22', 'width=875,height=580,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="22" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5919%2Ffigures%2F2" title="Comparing project contributors over time"><br />
					<img width="470" border="0" alt="22" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5919%2Ffigures%2F2" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Figure 2:</b> Comparing project contributors over time</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>
</td>
</tr>
</table>
</figure>
<p class="body-text"><span class="bold">Commit history &#8211;</span> Tied to community dynamics is the commit history for a project &#8211; how often are changes committed to project repositories, over the project lifetime and for recent timeframes? In an immature project, change can appear to be fast and furious; for moribund projects, commits drop away to zero. Viable, stable, mature projects lie somewhere in between.</p>
<p class="body-text"><span class="bold">Licensing &#8211;</span> Dealing with the diversity of open source license types and requirements is beyond the scope of this article. Of the 2,200+ recognized licenses, developers are most likely to encounter perhaps a dozen. (See a list of the top 20&nbsp;open source licenses at http://osrc.blackducksoftware.com/data/licenses/; these account for 90&nbsp;percent of all projects). The most important open source licenses are the GNU General Public Licenses (GPL, LGPL, AGLP), the Apache License (APL), the BSD license, the Mozilla Public License (MPL), the Eclipse Public License (EPL), and a handful of others. Learn more about these and others at the Open Source Initiative, <span class="hyperlink"><a href="http://opensource.org/">OpenSource.org</a></span>.</p>
<p class="body-text">A larger challenge lies in reconciling project licensing with a company&#8217;s Intellectual Property Rights (IPR) governance and compliance programs. A related challenge is reconciling the requirements of different licenses for diverse code integrated into a single software stack.</p>
<p class="body-text"><span class="bold">Provenance &#8211;</span> Knowing the actual origins of code can also help in finding support for code, as well as protecting the company from potential legal challenges. Many useful and important projects are associated with commercial organizations that help maintain the project and provide support for it. Most projects have a unified copyright (note: the Linux kernel does not), and many have established processes for determining provenance (for example, certificates of origin for code submission).</p>
<p class="heading-1">The choosy OSS diner</p>
<p class="body-text">The goal here has been to serve code-hungry developers useful pointers for discovering, vetting, and ingesting open source software. The diversity of options and the surfeit of licenses need not require a particularly adventuresome technology palate &#8211; OSS is today truly mainstream and it is a rare embedded project that does not use and/or deploy open source software tools and components.</p>
<p class="body-text">Matching the right OSS technology to your project is less like rocket science and more like pairing wines and food. More time &#8220;tasting&#8221; OSS will teach you where to look for compatible coding languages.  </p>
<p class="author-bio">Bill Weinberg is Senior Director of Olliance Consulting, a division of Black&nbsp;Duck Software. </p>
<p class="contact-info">Olliance Consulting,  a division of Black Duck Software <span class="hyperlink"><a href="mailto:info@blackducksoftware.com">info@blackducksoftware.com</a></span> <span class="hyperlink"><a href="http://www.ohloh.net">www.ohloh.net</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/Ohloh">Twitter</a> <a href="http://blog.blackducksoftware.com/">Blog</a></span> <span class="hyperlink"><a href="http://www.facebook.com/BlackDuckSoftware">Facebook</a></span> <span class="hyperlink"><a href="https://plus.google.com/107746957168874785639">Google+</a></span> <span class="hyperlink"><a href="http://www.linkedin.com/company/black-duck-software">LinkedIn</a></span> <span class="hyperlink"><a href="http://www.youtube.com/user/BlackDuckSoftware">YouTube</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/02/eating-right-at-the-open-source-buffet/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The future of Android in vehicles</title>
		<link>http://www.embedded-computing.com/articles/id/?5921</link>
		<comments>http://www.embedded-computing.com/articles/id/?5921#comments</comments>
		<pubDate>Fri, 08 Feb 2013 15:00:00 +0000</pubDate>
		<dc:creator>David Kleidermacher, Green Hills Software</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Strategies]]></category>
		<category><![CDATA[apps mobile java]]></category>
		<category><![CDATA[back up camera car]]></category>
		<category><![CDATA[back up camera for car]]></category>
		<category><![CDATA[back up camera for rv]]></category>
		<category><![CDATA[back up sensors]]></category>
		<category><![CDATA[backup car camera]]></category>
		<category><![CDATA[car backup cameras]]></category>
		<category><![CDATA[car reverse camera]]></category>
		<category><![CDATA[car reverse cameras]]></category>
		<category><![CDATA[car reverse sensor]]></category>
		<category><![CDATA[car reversing cameras]]></category>
		<category><![CDATA[car reversing sensors]]></category>
		<category><![CDATA[denial of service dos]]></category>
		<category><![CDATA[embedded operating systems]]></category>
		<category><![CDATA[embedded software development]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[future vehicles]]></category>
		<category><![CDATA[Green Hills Software]]></category>
		<category><![CDATA[In-vehicle infotainment systems]]></category>
		<category><![CDATA[infrared sensor]]></category>
		<category><![CDATA[j2me mobile applications]]></category>
		<category><![CDATA[j2me mobile apps]]></category>
		<category><![CDATA[java j2me applications]]></category>
		<category><![CDATA[linux operating system]]></category>
		<category><![CDATA[linux virtual machines]]></category>
		<category><![CDATA[mobile app developers uk]]></category>
		<category><![CDATA[mobile app java]]></category>
		<category><![CDATA[mobile apps developer]]></category>
		<category><![CDATA[mobile phone app developers]]></category>
		<category><![CDATA[operating system virtualization]]></category>
		<category><![CDATA[operating systems linux]]></category>
		<category><![CDATA[pir sensor]]></category>
		<category><![CDATA[programming mobile apps]]></category>
		<category><![CDATA[real time embedded]]></category>
		<category><![CDATA[real time embedded system]]></category>
		<category><![CDATA[real time embedded systems]]></category>
		<category><![CDATA[real time system in operating system]]></category>
		<category><![CDATA[rear backup camera wireless]]></category>
		<category><![CDATA[rear camera car]]></category>
		<category><![CDATA[rear reversing camera]]></category>
		<category><![CDATA[rear view camera for rv]]></category>
		<category><![CDATA[rear view car cameras]]></category>
		<category><![CDATA[rearview backup camera]]></category>
		<category><![CDATA[rearview camera mirror]]></category>
		<category><![CDATA[rearview car camera]]></category>
		<category><![CDATA[reverse backup camera]]></category>
		<category><![CDATA[reverse camera car]]></category>
		<category><![CDATA[reverse camera monitor]]></category>
		<category><![CDATA[reverse car camera]]></category>
		<category><![CDATA[reverse parking sensor]]></category>
		<category><![CDATA[reversing camers]]></category>
		<category><![CDATA[reversing car camera]]></category>
		<category><![CDATA[rv backup camera]]></category>
		<category><![CDATA[rv rear view camera wireless]]></category>
		<category><![CDATA[texas instruments incorporated]]></category>
		<category><![CDATA[top mobile app developers]]></category>
		<category><![CDATA[ultrasonic sensor]]></category>
		<category><![CDATA[vehicle reverse camera]]></category>
		<category><![CDATA[virtual machine host]]></category>
		<category><![CDATA[voyager rear view camera]]></category>
		<category><![CDATA[wireless back up camera]]></category>
		<category><![CDATA[wireless back up cameras]]></category>
		<category><![CDATA[wireless rv rear view camera]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=cec2d43c5bbe7b3490ff4ff1944f24e6</guid>
		<description><![CDATA[Android has its share of benefits and challenges when it comes to automotive infotainment systems. One such challenge is that of the emergence of mixed-criticality systems comprising both infotainment and safety-/security-critical systems, enabled by high-performance multicore processors. To face this challenge: Try virtualization.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="3" class="figure_intro wide" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=320&#038;w=600&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5921%2Ffigures%2F3" />Android has its share of benefits and challenges when it comes to automotive infotainment systems. One such challenge is that of the emergence of mixed-criticality systems comprising both infotainment and safety-/security-critical systems, enabled by high-performance multicore processors. To face this challenge: Try virtualization.</h3>
<p><span id="more-2077"></span><span class='body'>
<p class="body-text">Android represents a compelling choice for automotive infotainment systems. As the most popular and fastest-growing mobile Operating System (OS) &#8211; comprising two-thirds of worldwide smartphone shipments<span class="superscript">1</span> &#8211; automotive OEMs see Android as the means to provide the best possible multimedia experiences. Android provides standardized interfaces for accelerated graphics, audio, wireless networking, Bluetooth technology, USB, and more, enabling applications to easily harness the power of these hardware facilities. OEMs see Android as a means of leveraging consumers&#8217; familiarity with mobile devices to improve the automotive experience. </p>
<p class="body-text">The availability of the Android open-source infotainment platform comes at a time when OEMs are taking more control over the digital infrastructure in cars. The traditional model of outsourcing the entire infotainment system to Tier 1 component suppliers is being replaced (at least at some OEMs, to varying extents) with an approach in which the OEM chooses the operating system, development environment, and microprocessor platform and even performs a significant amount of software development. Tier 1s are asked to build hardware and provide application and driver work, but the OEM owns the architecture. Android provides the control that OEMs require in this new world. But while these advantages are attractive to OEMs, Android also poses some challenges when it comes to multiprocessor-enabled, consolidated in-vehicle systems that tuck safety- and security-critical applications and infotainment applications all into a single system; however, virtualization is effectively conquering these challenges.</p>
<p class="heading-1">Challenges with Android in the car</p>
<p class="body-text">In 2012, for the first time in its 26-year history, the J.D. Power Auto Quality Study found that the infotainment system is now the biggest source of problems in new cars. Therefore, OEMs are justifiably concerned with the reliability, stability, and security of Android. </p>
<p class="body-text">Android&#8217;s extremely large source code base coupled with its open source development model results in extreme churn &#8211; literally thousands of edits per day across Android and its underlying Linux kernel. This guarantees a steady flow of vulnerabilities. A quick search of the U.S. CERT National Vulnerability Database turns up numerous vulnerabilities of varying severity for in-vehicle infotainment systems. Here is a sampling of the worst offenders:</p>
<ul>
<li class="bullets">CVE-2012-4190: allows remote attackers to cause a denial of service or execute arbitrary code</li>
<li class="bullets">CVE-2011-0680: allows remote attackers to read SMS messages intended for other recipients</li>
<li class="bullets">CVE-2010-1807: allows remote attackers to execute arbitrary code</li>
<li class="bullets">CVE-2009-2999, -2656: allows remote attackers to cause a denial of service (application restart and network disconnection)</li>
<li class="bullets">CVE-2009-1754: allows remote attackers to access application data</li>
<li class="bullets">CVE-2009-0985, -0986: buffer overflows allow remote attackers to&nbsp;execute arbitrary code</li>
</ul>
<p class="body-text">We point these particular vulnerabilities out because they fall into the highest severity category of remote exploitability. They are used by hackers to root Android phones and tablets, and automotive manufacturers want to ensure that the same vulnerabilities do not threaten Android- or Linux-based infotainment systems.</p>
<p class="body-text">Another concern with Android is driver/passenger safety. Automotive electronics architecture is in the midst of a major trend reversal: Instead of adding more and more processors for new functions, disparate functions are being consolidated into a smaller number of high-performance multicore processors in order to reduce size, weight, power, and component/wiring cost. Processor consolidation is leading safety-critical systems to be integrated with infotainment. The consolidation trend is aided by next-generation, performance-efficient multicore processor platforms, such as the &#8220;Jacinto&#8221; and OMAP processor families including TI&#8217;s OMAP 5 platform, which offers a dual-core, power-efficient ARM&nbsp;Cortex-A15 processing architecture.</p>
<p class="body-text">Additionally, such mixed-criticality system consolidation, for example, includes OEMs looking to host real-time clusters, rear-view cameras, and Advanced Driver Assistance Systems (ADAS) within the center stack computer. Next-generation Android infotainment systems must ensure that applications and multimedia seamlessly interact with safety functions, and pose no risks to passengers. </p>
<p class="heading-1">Meeting safety- and security-critical challenges </p>
<p class="body-text">OEMs cannot depend on Android to control all aspects of next-generation infotainment systems. Android cannot boot fast enough, cannot guarantee real-time response for protocols such as CAN, and is not reliable enough for safety-critical functions such as ADAS and integrated clusters. OEMs need a system architecture in which Android and its applications can peacefully coexist with real-time, critical applications.</p>
<p class="body-text">A number of OEMs are looking to virtualization as the solution to next-generation infotainment system architecture. With a specialized form of real-time hypervisor, the platform can host Android within a virtual machine alongside, but safely isolated from, lightweight applications that use open standard APIs to perform real-time, safety- and security-critical functions, such as automatically applying the brakes when a child is detected by the car&#8217;s back-up camera.</p>
<p class="body-text">One example of such a hypervisor is Green Hills Software&#8217;s INTEGRITY Multivisor, built upon the INTEGRITY separation kernel, used extensively in automotive infotainment and other mission-critical applications. With this kind of virtualization solution, the infotainment computer can achieve astounding boot times measured in milliseconds, to handle instant-on tasks such as responding&nbsp;to CAN messages &#8211; including adjusting seat controls or reporting a transmission error&nbsp;&#8211; and bringing up the rear-view camera. With a platform that enables this mixed-criticality architecture, OEMs can reduce size, weight, power, and cost in the electronic infrastructure while taking advantage of the latest Android bells and whistles.</p>
<p class="body-text">Applying this hypervisor architecture to the aforementioned system &#8211; consisting of the main infotainment OS and safety-critical applications for rear-view camera and driver information cluster &#8211; results in the architecture shown in Figure 1.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '21', 'width=875,height=752,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="21" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5921%2Ffigures%2F1" title="Virtualization architecture for Android infotainment systems"><br />
					<img width="470" border="0" alt="21" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5921%2Ffigures%2F1" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Figure 1:</b> Virtualization architecture for Android infotainment systems</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom)</b></div>
</td>
</tr>
</table>
</figure>
<p class="body-text">In addition to previously mentioned safety applications, security-critical functions can be partitioned from Android, enabling a form of security retrofit to an otherwise vulnerable environment. The transmission of sensitive information &#8211; such as a personal contact book or garage door code &#8211; over vehicular networks and the storage of private consumer or OEM data within Android&#8217;s storage system can be hardened using the hypervisor as shown in Figure 2.</p>
<p class="figures">
<figure>
<table width="480" border="0" align="center" cellpadding="2" cellspacing="0">
<tr>
<td align="center" >
<p>				<a onclick="popup=window.open(this.href, '22', 'width=875,height=687,scrollbars=no,resizable=yes'); popup.focus(); return false;" id="22" href="http://i.opensystemsmedia.com/?bg=ffffff&#038;q=90&#038;w=871&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5921%2Ffigures%2F2" title="Security retrofit to Android using virtualization"><br />
					<img width="470" border="0" alt="22" src="http://i.opensystemsmedia.com/?q=94&#038;bg=ffffff&#038;w=470&#038;f=jpg&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5921%2Ffigures%2F2" /><br />
				</a>
				</td>
</tr>
<tr>
<td class="caption" align="center" style="padding-top: 11px; line-height: 1em;">
<figcaption><b>Figure 2:</b> Security retrofit to Android using virtualization</figcaption>
<div style="color: #336600; padding-top: 4px; font-size: 9px;"><b>(click graphic to zoom by 1.9x)</b></div>
</td>
</tr>
</table>
</figure>
<p class="body-text">Android has a powerful standardized sensor capability, with support for acceleration, magnetometer, temperature, gravity, gyroscope, touch proximity, and light detection. These features are incredibly important in both safety and infotainment systems. Automotive app developers can use these standard APIs to detect conditions in which certain applications or services should be inhibited. Android&#8217;s standard vibration and sound APIs, for example, can be used to provide the driver with haptic and audio feedback when visualization is discouraged. In a virtualized environment, the hypervisor must be capable of safely multiplexing peripherals that are needed by the Android environment and critical applications.</p>
<p class="heading-1">The promising road ahead</p>
<p class="body-text">Android represents a tremendous opportunity for automotive OEMs to leverage the latest and greatest consumer electronics technology for an enhanced driver and passenger experience while providing a maximum level of control and customization. OEMs must be prepared to develop in-house Android expertise to bridge the gap between what the open source Android ecosystem provides and what is practically needed to develop a comprehensive infotainment system and cloud-based app store and services environment. </p>
<p class="body-text">Automotive electronics require a systems software architecture that enables an Android infotainment stack to be delivered with the reliability, safety, and real-time performance that OEMs and consumers demand, particularly in light of the consolidation trend. The combination of virtualization and powerful multicore processors can help realize this vision.</p>
<p>  <a id="anchor-992-anchor" name="anchor-992-anchor" />
<p class="author-bio">David Kleidermacher, Chief Technology Officer, joined Green&nbsp;Hills Software in 1991 and is responsible for technology strategy, platform planning, and solutions design. He is a leading authority in systems software and security, including secure operating systems, virtualization technology, and the application of high-robustness security engineering principles to solve computing infrastructure problems. David earned his Bachelor of&nbsp;Science in Computer Science from Cornell University.</p>
<p class="author-bio">Brad Ballard is an Automotive Marketing Manager for the OMAP processor team&nbsp;at&nbsp;Texas Instruments Incorporated (TI), responsible for expanding TI&#8217;s OMAP and &#8220;Jacinto&#8221; processor footprint in the automotive infotainment market. With more than&nbsp;20 years of automotive infotainment experience, Brad helps TI&#8217;s&nbsp;customers&nbsp;and&nbsp;partners unlock new possibilities by bringing best-in-class processors to infotainment applications. Brad holds Bachelor&#8217;s and Master&#8217;s degrees&nbsp;in Electrical Engineering from Purdue&nbsp;University.</p>
<p class="footnote">1. www.idc.com/getdoc.jsp?containerId=prUS23818212#.UMtZQY5gkjM</p>
<p class="contact-info">Green Hills Software<span class="interview-name"> </span><span class="hyperlink"><a href="http://www.ghs.com/products/rtos/integrity_virtualization.html">www.ghs.com/products/rtos/integrity_virtualization.html</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/GreenHillsPR">Twitter</a> <a href="http://www.linkedin.com/company/green-hills-software">LinkedIn</a> <a href="http://www.youtube.com/watch?v=XFSDrhgAc8I">YouTube</a></span></p>
<p class="contact-info">Texas Instruments Incorporated (TI) <span class="hyperlink"><a href="http://www.ti.com/general/docs/wtbu/wtbuproductcontent.tsp?templateId=6123&#038;navigationId=12862&#038;contentId=101230">www.ti.com</a></span></p>
<p class="contact-info">Follow: <span class="hyperlink"><a href="https://twitter.com/TXInstrumentsEU">Twitter</a> <a href="http://e2e.ti.com/b/">Blog</a> <a href="https://www.facebook.com/texasinstruments">Facebook</a> <a href="https://plus.google.com/+TexasInstruments/posts">Google+</a> <a href="http://www.linkedin.com/company/texas-instruments">LinkedIn</a> <a href="http://www.youtube.com/texasinstruments">YouTube</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2013/02/the-future-of-android-in-vehicles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A modern software platform for the era of multicore and cloud computing &#8211; Q&amp;A with Mark Brewer, President and CEO, Typesafe</title>
		<link>http://www.embedded-computing.com/articles/id/?5884</link>
		<comments>http://www.embedded-computing.com/articles/id/?5884#comments</comments>
		<pubDate>Tue, 11 Dec 2012 15:00:00 +0000</pubDate>
		<dc:creator>Jennifer Hesse, Editor, OpenSystems Media</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Interview]]></category>
		<category><![CDATA[Strategies]]></category>
		<category><![CDATA[application server websphere]]></category>
		<category><![CDATA[build web application]]></category>
		<category><![CDATA[develop java applications]]></category>
		<category><![CDATA[develop web applications]]></category>
		<category><![CDATA[developing java applications]]></category>
		<category><![CDATA[development java]]></category>
		<category><![CDATA[distributed java applications]]></category>
		<category><![CDATA[distributed parallel computing]]></category>
		<category><![CDATA[django web development]]></category>
		<category><![CDATA[ejb application server]]></category>
		<category><![CDATA[embedded computer design]]></category>
		<category><![CDATA[embedded hardware design]]></category>
		<category><![CDATA[embedded system applications]]></category>
		<category><![CDATA[embedded system software development]]></category>
		<category><![CDATA[embedded systems software development]]></category>
		<category><![CDATA[j2ee application development]]></category>
		<category><![CDATA[j2ee development]]></category>
		<category><![CDATA[java application developer]]></category>
		<category><![CDATA[java application development tools]]></category>
		<category><![CDATA[java enterprise application development]]></category>
		<category><![CDATA[java enterprise applications]]></category>
		<category><![CDATA[java programming applications]]></category>
		<category><![CDATA[java software developers]]></category>
		<category><![CDATA[jboss app server]]></category>
		<category><![CDATA[joe armstrong erlang]]></category>
		<category><![CDATA[load balancing servers]]></category>
		<category><![CDATA[Managing Editor]]></category>
		<category><![CDATA[Multicore]]></category>
		<category><![CDATA[open source web application development]]></category>
		<category><![CDATA[openmp shared]]></category>
		<category><![CDATA[parallel distributed computing]]></category>
		<category><![CDATA[programming development tools]]></category>
		<category><![CDATA[programming in php]]></category>
		<category><![CDATA[programming software development]]></category>
		<category><![CDATA[programming web applications]]></category>
		<category><![CDATA[real time embedded]]></category>
		<category><![CDATA[real time embedded system]]></category>
		<category><![CDATA[scalable web application]]></category>
		<category><![CDATA[scalable web applications]]></category>
		<category><![CDATA[software developer tool]]></category>
		<category><![CDATA[software development and programming]]></category>
		<category><![CDATA[software development java]]></category>
		<category><![CDATA[software development system]]></category>
		<category><![CDATA[software for java programming]]></category>
		<category><![CDATA[software system development]]></category>
		<category><![CDATA[was websphere application server]]></category>
		<category><![CDATA[web app developer]]></category>
		<category><![CDATA[web app developers]]></category>
		<category><![CDATA[web app frameworks]]></category>
		<category><![CDATA[web application developers]]></category>
		<category><![CDATA[web application development in java]]></category>
		<category><![CDATA[web application development tool]]></category>
		<category><![CDATA[web application development using java]]></category>
		<category><![CDATA[web applications programming]]></category>
		<category><![CDATA[web based application development]]></category>
		<category><![CDATA[web based application development tools]]></category>
		<category><![CDATA[web based database application]]></category>
		<category><![CDATA[web development using java]]></category>
		<category><![CDATA[web services application development]]></category>
		<category><![CDATA[websphere application developer]]></category>
		<category><![CDATA[websphere portal server]]></category>
		<category><![CDATA[what is java software]]></category>

		<guid isPermaLink="false">http://tech.opensystemsmedia.com/embedded-software/?guid=c910342ca481fb1e4c160cc9e86217c2</guid>
		<description><![CDATA[This Embedded Computing Design Q&#38;A taps Mark Brewer, President and CEO of Typesafe, with questions on how the Scala programming middleware helps optimize multicore and cloud computing software.]]></description>
			<content:encoded><![CDATA[<div class="story">
<h3 class="abstract"><img alt="1" class="figure_intro" src="http://i.opensystemsmedia.com/?zc=F&#038;f=png&#038;h=200&#038;w=225&#038;src=http%3A%2F%2Fattachments.opensystemsmedia.com%2FECD5884%2Ffigures%2F1" />Created from the ground up to address multicore and parallel computing, the Scala programming language smoothly integrates features of object-oriented and functional languages, enabling developers to be more productive while retaining full interoperability with Java. Mark explains how Scala-based middleware technology can maximize modern multicore hardware and cloud computing software by raising the abstraction level for building multithreaded applications.</h3>
<p><span id="more-1934"></span><span class='body'>
<p class="body-text"></p>
<p class="interview-question"><span class="interview-name">ECD:</span> What are the advantages of using general-purpose programming languages like Java and Scala for embedded development? </p>
<p class="body-text"><span id="Ad-ABD-1" style="display: none; float: left;"></span><span class="interview-name">BREWER:</span> Scala is a general-purpose programming language designed to express common programming patterns in a concise, elegant, and type-safe way. Scala smoothly integrates features of object-oriented and functional languages, enabling developers to be more productive while retaining full interoperability with Java and taking advantage of modern multicore hardware.</p>
<p class="body-text">Scala is also a functional language. Inspired by the long tradition of functional programming, Scala makes it easy to avoid shared state so that computation can be readily distributed across cores on a multicore server and across servers in a data center. This makes Scala an especially good match for modern multicore CPUs and distributed cloud computing workloads that require concurrency and parallelism.</p>
<p class="body-text">Scala is equipped with an expressive type system that detects and avoids many kinds of application errors at compile time. At the same time, a sophisticated type inference capability frees developers from the redundant type information &#8220;boilerplate code&#8221; that is typical of Java.</p>
<p class="body-text">Because the code sizes are typically reduced by a factor of two to three when compared to an equivalent Java application, Scala is well suited for an embedded environment due to its lightweight and concise nature, as demonstrated in the following code samples:</p>
<p class="heading-2">Java class definition</p>
<p class="code-paragraph">public class Person {</p>
<p class="code-paragraph"> public final String name;</p>
<p class="code-paragraph"> public final int age;</p>
<p class="code-paragraph"> Person(String name, int age) {</p>
<p class="code-paragraph"> this.name = name;</p>
<p class="code-paragraph"> this.age = age;</p>
<p class="code-paragraph"> }</p>
<p class="code-paragraph">}</p>
<p class="heading-2">Equivalent Scala class definition</p>
<p class="code-paragraph">class Person(val name: String, val age: Int) {}</p>
<p class="heading-2">Java code</p>
<p class="code-paragraph">import java.util.ArrayList;</p>
<p class="code-paragraph">&#8230;</p>
<p class="code-paragraph">Person[] people;</p>
<p class="code-paragraph">Person[] minors;</p>
<p class="code-paragraph">Person[] adults;</p>
<p class="code-paragraph">{ ArrayList&lt;Person&gt; minorsList = new ArrayList&lt;Person&gt;();</p>
<p class="code-paragraph"> ArrayList&lt;Person&gt; adultsList = new ArrayList&lt;Person&gt;();</p>
<p class="code-paragraph"> for (int i = 0; i &lt; people.length; i++)</p>
<p class="code-paragraph"> (people[i].age &lt; 18 ? minorsList : adultsList)</p>
<p class="code-paragraph"> .add(people[i]);</p>
<p class="code-paragraph"> minors = minorsList.toArray(people);</p>
<p class="code-paragraph"> adults = adultsList.toArray(people);</p>
<p class="code-paragraph">}</p>
<p class="heading-2">Equivalent Scala code</p>
<p class="code-paragraph">val people: Array[Person]</p>
<p class="code-paragraph">val (minors, adults) = people partition (_.age &lt; 18)</p>
<p class="body-text">Scala protects investments in existing Java libraries, tools, and developer programming skills. Scala programs are compiled directly to Java bytecode that runs on the mature Java Virtual Machine (JVM), leveraging its robust just-in-time compilation, garbage collection, and well-understood deployment techniques. The operations team doesn&#8217;t see a difference. Developers keep working with their familiar tools, but they&#8217;re writing code that&#8217;s shorter, faster, more scalable, more correct, and maybe even more fun.</p>
<p class="interview-question"><span class="interview-name">ECD:</span> How does the latest wave of multicore processors affect software development with object-oriented programs?</p>
<p class="body-text"><span class="interview-name">BREWER:</span> The Java programming language was created in 1995, so it was suited to handle the first generation of Internet applications, with object-oriented programming models, multiplatform runtime, and network orientation. However, with the advent of cloud computing and interactive applications that demand near real-time capabilities, the Java language and traditional Java middleware have begun to show their age when faced with the equally significant hurdles of large-scale distributed applications and multicore platforms.</p>
<p class="body-text">In most languages, the key to utilizing the full power of multicore CPUs is by writing concurrent multithreaded applications. Considering the shared state, state visibility, threads, locks, concurrent collections, and thread notifications involved, writing this type of application is difficult, even for experienced developers. These concepts are by nature error-prone and often result in deadlocks or application crashes.</p>
<p class="body-text">In an attempt to keep up with the times, Java has evolved, but has become bulky and cumbersome in the process. Java and Java Enterprise Edition (JEE) application servers are inherently difficult to scale predictably; scaling up is extremely hard to accomplish, and the commercial licensing terms offered by most vendors prohibit the economical scale-out that customers so desperately need as an alternative to this model.</p>
<p class="body-text">Another essential component of building scalable applications for embedded devices is middleware. Akka, built upon the scale afforded by the Scala programming language, is a message-oriented programming model for building multi-threaded applications. Akka raises the level of abstraction so that developers only need to worry about messages and business logic, instead of dealing with the low-level plumbing required in Java.</p>
<p class="body-text">Play! builds upon Akka to deliver a Model-View-Controller (MVC)-style Web framework with a development experience much like that enjoyed by Rails developers. Play-mini is a subset of the Play! framework that consists of a REST layer on top of the Netty non-blocking I/O socket server. It offers the ability to deploy Akka applications for service-layer jobs that don&#8217;t need the rest of the Play tools (for example, the MVC/interface layer).</p>
<p class="interview-question"><span class="interview-name">ECD:</span> How does advanced middleware technology enable developers to build better software for the cloud?</p>
<p class="body-text"><span class="interview-name">BREWER:</span> Akka is an event-driven middleware framework implemented in Scala for building reliable, high-performance distributed applications. It raises the abstraction level for the developer, removing the need to worry about the low-level plumbing required to create highly concurrent applications in languages such as Java.</p>
<p class="body-text">Raising the abstraction level is key for building better software in the cloud. Developers can focus on implementing business logic and adding value, not spending time worrying about implementing low-level features such as high-availability services and state/memory management. With Akka, the developer gets an ideal fabric for the cloud that is:</p>
<ul>
<li class="bullets">Elastic and dynamic, with the ability to expand and contract based on the actual load the system is experiencing</li>
<li class="bullets">Fault-tolerant and self-healing, where the system detects failures automatically and can restart individual components or entire servers based on the business requirements</li>
<li class="bullets">Customizable and adaptive load-balancing, where software components can route messages based on system load or any other user-definable criteria</li>
<li class="bullets">Configured so that clusters can rebalance the load in failover situations via actor migration, where actors are moved between systems dynamically</li>
</ul>
<p class="body-text">The bottom line is that it&#8217;s very easy to build loosely coupled and dynamic systems that can almost organically change and adapt at runtime.</p>
<p class="interview-question"><span class="interview-name">ECD:</span> Briefly explain Typesafe&#8217;s technology and the current applications for it in an embedded computing environment.</p>
<p class="body-text"><span class="interview-name">BREWER:</span> Typesafe&#8217;s vision is to enable development of concurrent, fault-tolerant applications with a single unified programming model, managed runtime, and binary compatible distribution.</p>
<p class="body-text">Typesafe was founded in 2011 by the creators of the Scala programming language and Akka middleware, who joined forces to create a modern software platform for the era of multicore hardware and cloud computing workloads. The company provides an easy-to-use packaging of Scala, Akka, Play!, and developer tools through both an open-source stack and a commercial stack that provides commercial support, maintenance, and operations tools via the Typesafe Subscription. In conjunction with its partners, Typesafe also provides training and consulting services to accelerate the commercial adoption of Scala, Akka, and Play!</p>
<p class="body-text">Companies that use the Typesafe Stack in an embedded way typically rely on its low latency, high throughput, and resiliency design points. It is used as for handling millions of messages per second across networks and network devices.</p>
<p class="interview-question"><span class="interview-name">ECD:</span> What challenges are your customers dealing with right now?</p>
<p class="body-text"><span class="interview-name">BREWER:</span> Performance at scale is a main driver for customers to consider the Typesafe Stack. We&#8217;ve found that customers who have tried the traditional development paradigms using JEE application servers, PHP, and Ruby hit a performance or efficiency wall. In addition to being highly efficient, the components of the Typesafe Stack are compact from both a disk and memory standpoint, especially when compared to the traditional JEE application server, and lend themselves well to the embedded space. </p>
<p class="author-bio">Mark Brewer is president and CEO of Typesafe.</p>
<p class="contact-info">Typesafe <span class="hyperlink"><a href="mailto:mark.brewer@typesafe.com">mark.brewer@typesafe.com</a></span> <span class="hyperlink"><a href="http://typesafe.com">typesafe.com</a></span></p>
<p class="contact-info"><span class="hyperlink">Follow: <a href="https://twitter.com/typesafe">@typesafe</a></span> <span class="hyperlink"><a href="http://www.facebook.com/typesafe">Facebook</a></span> <span class="hyperlink"><a href="http://www.linkedin.com/company/typesafe">Linkedin</a></span></p>
</p></div>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://tech.opensystemsmedia.com/embedded-software/2012/12/a-modern-software-platform-for-the-era-of-multicore-and-cloud-computing-qa-with-mark-brewer-president-and-ceo-typesafe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
