<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Inside Out &#187; Embedded</title>
	<atom:link href="http://belhob.wordpress.com/tag/embedded/feed/" rel="self" type="application/rss+xml" />
	<link>http://belhob.wordpress.com</link>
	<description>Dare to Dream. If u can Dream, U can make the Dreams come true.</description>
	<lastBuildDate>Tue, 18 Mar 2008 04:50:37 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='belhob.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/470703d04704b4b85b671f6fac3eb443?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Inside Out &#187; Embedded</title>
		<link>http://belhob.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://belhob.wordpress.com/osd.xml" title="Inside Out" />
		<item>
		<title>Build a Super Simple Tasker</title>
		<link>http://belhob.wordpress.com/2008/02/28/build-a-super-simple-tasker/</link>
		<comments>http://belhob.wordpress.com/2008/02/28/build-a-super-simple-tasker/#comments</comments>
		<pubDate>Thu, 28 Feb 2008 06:11:49 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[context switches]]></category>
		<category><![CDATA[data packet]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[event queues]]></category>
		<category><![CDATA[event-driven]]></category>
		<category><![CDATA[finite state machines.]]></category>
		<category><![CDATA[interrupt processing]]></category>
		<category><![CDATA[interrupts in SST]]></category>
		<category><![CDATA[kernels]]></category>
		<category><![CDATA[multitasking]]></category>
		<category><![CDATA[mutual exclusion and blocking]]></category>
		<category><![CDATA[preemptive]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Real-Time Kernel]]></category>
		<category><![CDATA[RTOSes]]></category>
		<category><![CDATA[single stack]]></category>
		<category><![CDATA[Super Simple Tasker]]></category>
		<category><![CDATA[Tasks]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=160</guid>
		<description><![CDATA[Almost all embedded systems are event-driven; most of the time they wait for some event such as a time tick, a button press, a mouse click, or the arrival of a data packet. After recognizing the event, the systems react by performing the appropriate computation. This reaction might include manipulating the hardware or generating secondary, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=160&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.eetasia.com/ARTICLES/2007NOV/B/EEOL_2007NOV16_EMS_CTRLD_NT_SLfig2.jpg"><img SRC="http://www.eetasia.com/ARTICLES/2007NOV/B/EEOL_2007NOV16_EMS_CTRLD_NT_SLfig2.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="302" HEIGHT="184" ALIGN="left" /></a>Almost all embedded systems are event-driven; most of the time they wait for some event such as a time tick, a button press, a mouse click, or the arrival of a data packet. After recognizing the event, the systems react by performing the appropriate computation. This reaction might include manipulating the hardware or generating secondary, &#8220;soft&#8221; events that trigger other internal software components. Once the event-handling action is complete, such reactive systems enter a dormant state in anticipation of the next event.1</p>
<p>Ironically, most real-time kernels or RTOSes for embedded systems force programmers to model these simple, discrete event reactions using tasks structured as continuous endless loops. To us this seems a serious mismatch&#8211;a disparity that&#8217;s responsible for much of the familiar complexity of the traditional real-time kernels.</p>
<p>In this article we&#8217;ll show how matching the discrete event nature typical of most embedded systems with a simple run-to-completion (RTC) kernel or &#8220;tasker&#8221; can produce a cleaner, smaller, faster, and more natural execution environment. In fact, we&#8217;ll show you how (if you model a task as a discrete, run-to-completion action) you can create a prioritized, fully preemptive, deterministic real-time kernel, which we call Super Simple Tasker (SST), with only a few dozen lines of portable C code.2</p>
<p>Such a real-time kernel is not new; similar kernels are widely used in the industry. Even so, simple RTC schedulers are seldom described in the trade press. We hope that this article provides a convenient reference for those interested in such a lightweight scheduler. But more importantly, we hope to explain why a simple RTC kernel like SST is a perfect match for execution systems built around state machines including those based on advanced UML statecharts. Because state machines universally assume RTC execution semantics, it seems only natural that they should be coupled with a scheduler that expects and exploits the RTC execution model.</p>
<p>We begin with a description of how SST works and explain why it needs only a single stack for all tasks and interrupts. We then contrast this approach with the traditional real-time kernels, which gives us an opportunity to re-examine some basic real-time concepts. Next, we describe a minimal SST implementation in portable ANSI C and back it up with an executable example that you can run on any x86-based PC. We conclude with references to an industrial-strength single-stack kernel combined with an open-source state machine-based framework, which together provide a deterministic execution environment for UML state machines. We&#8217;ll assume that you&#8217;re familiar with basic real-time concepts, such as interrupt processing, context switches, mutual exclusion and blocking, event queues, and finite state machines.</p>
<p><strong>Links:</strong> <a HREF="http://embedded.com/columns/technicalinsights/190302110">http://embedded.com/columns/technicalinsights/190302110</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/160/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/160/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/160/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/160/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/160/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=160&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/02/28/build-a-super-simple-tasker/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Doing design and debug on real-time distributed embedded applications</title>
		<link>http://belhob.wordpress.com/2008/01/30/doing-design-and-debug-on-real-time-distributed-embedded-applications/</link>
		<comments>http://belhob.wordpress.com/2008/01/30/doing-design-and-debug-on-real-time-distributed-embedded-applications/#comments</comments>
		<pubDate>Wed, 30 Jan 2008 11:44:06 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[Communication between threads of execution]]></category>
		<category><![CDATA[Controlled latency and efficient use of the network res]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Real time]]></category>
		<category><![CDATA[Synchronization of events]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=138</guid>
		<description><![CDATA[Real-time system designers and embedded software developers are very familiar with the tools and techniques for designing, developing and debugging standalone or loosely coupled embedded systems. UML may be used at the design stage, an IDE during development and debuggers and logic analyzers (amongst other tools) at the integration and debug phases.
However, as connectivity between [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=138&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.cotsjournalonline.com/archive_images/cots0705/cots0705_sf_intel_f1.jpg"><img ALIGN="right" HEIGHT="180" WIDTH="300" VSPACE="15" HSPACE="15" BORDER="0" SRC="http://www.cotsjournalonline.com/archive_images/cots0705/cots0705_sf_intel_f1.jpg" /></a>Real-time system designers and embedded software developers are very familiar with the tools and techniques for designing, developing and debugging standalone or loosely coupled embedded systems. UML may be used at the design stage, an IDE during development and debuggers and logic analyzers (amongst other tools) at the integration and debug phases.</p>
<p>However, as connectivity between embedded systems becomes the norm, what used to be a few nodes connected together with clear functional separation between the applications on each node, is now often tens or hundreds of nodes with logical applications spread across them.</p>
<p>In fact, such distributed systems are becoming increasingly heterogeneous in terms of both operating systems and executing processors with tight connectivity between real-time and enterprise systems becoming the norm.</p>
<p>This article will identify the issues of real-time distributed system development and discuss how development platforms and tools have to evolve to address this challenging new environment.</p>
<p>The idea of a &#8216;platform&#8217; for development has long pervaded the real-time embedded design space as a means to define the application development environment separately from the underlying (and often very complex) real-time hardware, protocol stacks and device drivers.</p>
<p>Much as the OS evolved to provide the fundamental building blocks of standalone system-development platforms, real-time middleware has evolved to address the distributed-systems development challenges of real-time network performance, scalability and heterogeneous processor and operating system support.</p>
<p>And as has already happened in the evolution of the standard real-time operating system, new tools are becoming available to support development, debug and maintenance of the target environment &#8221; in this case, real-time applications in large distributed systems.</p>
<p>The Distributed-System Development Platform<br />
From the individual application developer&#8217;s perspective, there are three basic capabilities which must be provided by an application development platform when a logical application spans multiple networked computers:</p>
<p>1. Communication between threads of execution<br />
2. Synchronization of events<br />
3. Controlled latency and efficient use of the network resources</p>
<p>Communication and synchronization are fairly obvious distributed platform service requirements and are analogous to the services provided by an OS. However for distributed applications they have to run transparently across a network infrastructure of heterogeneous OS&#8217;s and processors with all that implies in terms of byte ordering and data representation formats.</p>
<p>It should ideally use a mechanism that does not require the developer to have an explicit understanding of the location of the intended receiver of a message or synchronizing thread so that the network can be treated as a single target system from an application development perspective.<br />
<strong>Links: </strong><a HREF="http://embedded.com/design/networking/205920767">http://embedded.com/design/networking/205920767</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/138/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/138/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/138/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/138/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/138/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=138&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/01/30/doing-design-and-debug-on-real-time-distributed-embedded-applications/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Is symmetric multiprocessing for you?</title>
		<link>http://belhob.wordpress.com/2008/01/04/is-symmetric-multiprocessing-for-you/</link>
		<comments>http://belhob.wordpress.com/2008/01/04/is-symmetric-multiprocessing-for-you/#comments</comments>
		<pubDate>Fri, 04 Jan 2008 07:23:23 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Development Tools]]></category>
		<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[common memory subsystem]]></category>
		<category><![CDATA[concurrency problems]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[homogenous cores]]></category>
		<category><![CDATA[Microprocessor]]></category>
		<category><![CDATA[multicore system debugging]]></category>
		<category><![CDATA[power footprints]]></category>
		<category><![CDATA[shrinking cost]]></category>
		<category><![CDATA[size]]></category>
		<category><![CDATA[symmetric multiprocessing]]></category>
		<category><![CDATA[tightly coupled]]></category>
		<category><![CDATA[weight]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2008/01/04/is-symmetric-multiprocessing-for-you/</guid>
		<description><![CDATA[Multicore architectures can provide the performance boost you&#8217;re looking for, but the software is certainly more complicated.
For the past thirty years, computing has enjoyed continual boosts in performance, primarily due to increases in clock speed, pipelining efficiency, and cache size. Recently, however, traditional microprocessor optimization has hit the proverbial wall. Although tweaks such as further [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=125&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://i.cmpnet.com/embedded/2008/January08/0108esdGreenHills01sm.gif"><img ALIGN="left" HEIGHT="284" WIDTH="400" VSPACE="15" HSPACE="15" BORDER="0" SRC="http://i.cmpnet.com/embedded/2008/January08/0108esdGreenHills01sm.gif" /></a><strong>Multicore architectures can provide the performance boost you&#8217;re looking for, but the software is certainly more complicated.</strong></p>
<p>For the past thirty years, computing has enjoyed continual boosts in performance, primarily due to increases in clock speed, pipelining efficiency, and cache size. Recently, however, traditional microprocessor optimization has hit the proverbial wall. Although tweaks such as further cache size increases can continue to nudge system performance, it&#8217;s clear that Moore&#8217;s gains are behind us. Meanwhile, embedded systems continue to grow in software complexity, with consumers expecting that all the bells and whistles will continue to come in ever shrinking cost, size, weight, and power footprints.</p>
<p>Microprocessor designers have concluded that the best path toward meeting the growing demand for performance with controlled footprint is to employ multicore architectures, in which the main premise is to partition the software and parallelize or offload execution across multiple processing elements. Symmetric multiprocessing (SMP) is one such architecture, consisting of homogenous cores that are tightly coupled with a common memory subsystem, as shown in Figure 1. SMP is a de facto standard on the desktop, but adoption in embedded applications has been slow, with recent surveys showing only a small percentage of designs using single-chip SMP-capable devices.</p>
<p>So if your design is in need of some extra horsepower, how can you determine whether SMP is a sensible choice? Several key requirements enable you to realize the promise of SMP. First, the software must be partitioned and parallelized to take advantage of the hardware concurrency. Second, operating systems must provide the load-balancing services required to enable distribution of software onto the multiple processing elements. And finally, you will need to learn and use development tools specifically tailored to the difficult task of multicore system debugging so you can find concurrency problems quickly and avoid time-to-market delays.</p>
<p><strong>Links:</strong>  <a HREF="http://www.embedded.com/design/multicore/205203908">http://www.embedded.com/design/multicore/205203908</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/125/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/125/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/125/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/125/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/125/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=125&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/01/04/is-symmetric-multiprocessing-for-you/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Is a De Facto Standard Already Forming for Embedded Virtualization?</title>
		<link>http://belhob.wordpress.com/2007/12/11/is-a-de-facto-standard-already-forming-for-embedded-virtualization/</link>
		<comments>http://belhob.wordpress.com/2007/12/11/is-a-de-facto-standard-already-forming-for-embedded-virtualization/#comments</comments>
		<pubDate>Tue, 11 Dec 2007 06:18:46 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[3G]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[application-specific]]></category>
		<category><![CDATA[cost]]></category>
		<category><![CDATA[customization]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[gadgets]]></category>
		<category><![CDATA[manageability]]></category>
		<category><![CDATA[multi-core]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[semiconductor direction]]></category>
		<category><![CDATA[virtualization]]></category>
		<category><![CDATA[VirtualLogix]]></category>
		<category><![CDATA[VoIP]]></category>
		<category><![CDATA[WiMAX]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/12/11/is-a-de-facto-standard-already-forming-for-embedded-virtualization/</guid>
		<description><![CDATA[The brave new world of gadgets with limitless and irritation-limiting potential depends on virtualization.
It&#8217;s going to be impossible to exploit 3G and WiMAX and VoIP and Android, for starters, without virtualization, not to mention the other promised front-end Internet devices and the sheer infrastructure of the whole edifice.
The new multi-core silicon and chipsets can&#8217;t manage [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=108&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://res.sys-con.com/story/dec07/472214/Virtualization_Conference_2008_EAST.jpg"><img SRC="http://res.sys-con.com/story/dec07/472214/Virtualization_Conference_2008_EAST.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="220" HEIGHT="214" ALIGN="right" /></a>The brave new world of gadgets with limitless and irritation-limiting potential depends on virtualization.</p>
<p>It&#8217;s going to be impossible to exploit 3G and WiMAX and VoIP and Android, for starters, without virtualization, not to mention the other promised front-end Internet devices and the sheer infrastructure of the whole edifice.</p>
<p>The new multi-core silicon and chipsets can&#8217;t manage the new services without virtualization. They need it for performance, cost, customization, security and manageability.</p>
<p>So it may be of more than just passing interest to note that VirtualLogix &#8211; which you may or may not remember as Jaluna &#8211; is currently holding three aces in its hand, namely, Cisco, Intel and Texas Instruments, all of which have now invested money in the little French company and its real-time virtualization skills.</p>
<p>If things keep breaking this way, we&#8217;ll eventually be talking de facto standard.</p>
<p>TI is the latest to ante up some undisclosed amount as part of a collaboration agreement aligning VirtualLogix&#8217; virtualization roadmap with its big friend&#8217;s embedded application-specific multi-core semiconductor direction.</p>
<p><strong>Links:</strong> <a HREF="http://opensource.sys-con.com/read/472214.htm">http://opensource.sys-con.com/read/472214.htm</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/108/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/108/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/108/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/108/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/108/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=108&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/12/11/is-a-de-facto-standard-already-forming-for-embedded-virtualization/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Connecting Embedded Applications to the Internet</title>
		<link>http://belhob.wordpress.com/2007/11/05/connecting-embedded-applications-to-the-internet/</link>
		<comments>http://belhob.wordpress.com/2007/11/05/connecting-embedded-applications-to-the-internet/#comments</comments>
		<pubDate>Mon, 05 Nov 2007 06:47:35 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Connecting Embedded Applications to the Internet]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Freescale Semiconductor]]></category>
		<category><![CDATA[Microcontroller]]></category>
		<category><![CDATA[Network]]></category>
		<category><![CDATA[protocol stack]]></category>
		<category><![CDATA[TCP/IP]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/11/05/connecting-embedded-applications-to-the-internet/</guid>
		<description><![CDATA[Where the Internet may have been a dedicated network for computer data
exchange in it&#8217;s infant years, today more and more small (non-PC based)
intelligent &#8220;machines&#8221; are connected to the Network of Networks. The
prediction is that by 2005, the amount of non-PC users on the Internet will far
exceed the amount of PC&#8217;s!
Today, a highly integrated microcontroller can [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=71&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.rtcmagazine.com/archive_images/rtc0703ii_co1.gif"><img SRC="http://www.rtcmagazine.com/archive_images/rtc0703ii_co1.gif" BORDER="0" WIDTH="318" HEIGHT="291" ALIGN="right" /></a>Where the Internet may have been a dedicated network for computer data<br />
exchange in it&#8217;s infant years, today more and more small (non-PC based)<br />
intelligent &#8220;machines&#8221; are connected to the Network of Networks. The<br />
prediction is that by 2005, the amount of non-PC users on the Internet will far<br />
exceed the amount of PC&#8217;s!<br />
Today, a highly integrated microcontroller can handle the functional control of<br />
these machines. To connect the microcontroller to the Internet, one must<br />
implement a protocol stack on the device. To function, this protocol usually<br />
requires a powerful processor, a complete operating system, and a large<br />
amount of memory. In this case, the implementation of a stand-alone Internet<br />
protocol stack could be a solution.<br />
In order to design an embedded system, one must design both the hardware<br />
around a microcontroller and the software. Depending on the target hardware<br />
as well as the complexity of the problem, the developer has to decide whether<br />
to use an operating system. According to market analysis, more than 75% of<br />
the embedded applications use a proprietary or free operating system, about<br />
25% do not use an operating system. Big operating systems usually have<br />
Internet protocols already built-in, whereas deeply embedded systems do not<br />
yet provide a TCP/IP (Transmission Control Protocol/Internet Protocol) stack.<br />
However, a 8- or 16-bit microcontroller may not have enough resources for the<br />
implementation of an operating system. Software implementations without<br />
operating systems can be found in less complex applications often using small<br />
microcontrollers with strict hardware and runtime restrictions. The choice of<br />
writing standalone code is often made because of the need to optimize memory<br />
usage, code size, and run-time behavior. Since the writing of this standalone<br />
code is target specific, it is often not portable to other targets.</p>
<p><strong>Links:   </strong></p>
<p><a HREF="http://www.freescale.com/files/microcontrollers/doc/app_note/AN2304.pdf">http://www.freescale.com/files/microcontrollers/doc/app_note/AN2304.pdf</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/71/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/71/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/71/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/71/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/71/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=71&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/11/05/connecting-embedded-applications-to-the-internet/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>IP Ethernet Interfaces</title>
		<link>http://belhob.wordpress.com/2007/11/03/ip-ethernet-interfaces/</link>
		<comments>http://belhob.wordpress.com/2007/11/03/ip-ethernet-interfaces/#comments</comments>
		<pubDate>Fri, 02 Nov 2007 18:36:10 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Embedded Internet devices]]></category>
		<category><![CDATA[hardware TCP/IP stack]]></category>
		<category><![CDATA[IP Ethernet Interfaces]]></category>
		<category><![CDATA[TCP/IP stack with a PPP controller]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/11/03/ip-ethernet-interfaces/</guid>
		<description><![CDATA[There is a general consensus that in years to come more and more Internet devices will be embedded and not PC oriented. Just one such prediction is that by 2010, 95% of Internet-connected devices will not be computers. So if they are not computers, what will they be? Embedded Internet devices.
One popular solution is to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=68&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.ixxat.com/portal/pics/tcp_ip_einfuehrung.jpg"><img SRC="http://www.ixxat.com/portal/pics/tcp_ip_einfuehrung.jpg" BORDER="0" WIDTH="348" HEIGHT="295" ALIGN="right" /></a>There is a general consensus that in years to come more and more Internet devices will be embedded and not PC oriented. Just one such prediction is that by 2010, 95% of Internet-connected devices will not be computers. So if they are not computers, what will they be? Embedded Internet devices.</p>
<p>One popular solution is to use an 8 bit microcontroller such as a Rabbit 2000, AVR or PIC and a Ethernet MAC such as a CS8900A or RTL8029AS hanging of it’s parallel port pins in 8 bit mode. A TCP/IP stack is normally written in C and can be striped of features and ported to these resource limited microcontrollers. While this works and we detail many such boards below, a little debate is brewing over it’s reliability and functionality.</p>
<p>With DOS (denial of service) attacks becoming more and more common, it doesn’t take much to knock your little 8 bit microcontroller off the network. In fact some configurations have a little trouble keeping up with the high volume of broadcast packets floating around a loaded network, let alone any malicious attacks.</p>
<p>One solution of course is to put in a bigger processor. This is the case with Embedded Linux devices such as Coldfire, DragonBall or ARM based devices. They are quite powerful enough to allow a suitable bandwidth and not be susceptible to someone’s malicious intent.</p>
<p>The other solution is to use a hardware TCP/IP stack. A hardware based stack is not new. If you have followed this site, you will be aware of the Sekio S-7600A hardware stack which incorporated a TCP/IP stack with a PPP controller so you could connect it to a modem. Sekio had licensed the technology from Iready Corporation. While it had it’s place in data logging or dial on demand applications where your device could dial up the Internet and send you an email to the effect that your house has been broken into or the past 24 hours logged data etc, it wouldn&#8217;t connect to the popular ethernet networks present everywhere today.</p>
<p><strong>Links: </strong><a HREF="http://www.beyondlogic.org/etherip/ip.htm">http://www.beyondlogic.org/etherip/ip.htm </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/68/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/68/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/68/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/68/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/68/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=68&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/11/03/ip-ethernet-interfaces/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Porting RTOS Device Drivers to Embedded Linux</title>
		<link>http://belhob.wordpress.com/2007/10/23/porting-rtos-device-drivers-to-embedded-linux/</link>
		<comments>http://belhob.wordpress.com/2007/10/23/porting-rtos-device-drivers-to-embedded-linux/#comments</comments>
		<pubDate>Mon, 22 Oct 2007 19:57:52 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Device Drivers]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Handheld]]></category>
		<category><![CDATA[interrupt]]></category>
		<category><![CDATA[Nucleus]]></category>
		<category><![CDATA[PORTING]]></category>
		<category><![CDATA[pSOS]]></category>
		<category><![CDATA[RTOS]]></category>
		<category><![CDATA[storage]]></category>
		<category><![CDATA[VRTS]]></category>
		<category><![CDATA[VxWorks]]></category>
		<category><![CDATA[Wireless]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/10/23/porting-rtos-device-drivers-to-embedded-linux/</guid>
		<description><![CDATA[Linux has taken the embedded marketplace by storm. According to industry analysts, one-third to one-half of new embedded 32- and 64-bit designs employ Linux. Embedded Linux already dominates multiple application spaces, including SOHO networking and imaging/multifunction peripherals, and it now is making vast strides in storage (NAS/SAN), digital home entertainment (HDTV/PVR/DVR/STB) and handheld/wireless, especially in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=58&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/073/7355/7355f1.resized.png"><img SRC="http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/073/7355/7355f1.inline.png" BORDER="0" WIDTH="360" HEIGHT="244" ALIGN="left" /></a>Linux has taken the embedded marketplace by storm. According to industry analysts, one-third to one-half of new embedded 32- and 64-bit designs employ Linux. Embedded Linux already dominates multiple application spaces, including SOHO networking and imaging/multifunction peripherals, and it now is making vast strides in storage (NAS/SAN), digital home entertainment (HDTV/PVR/DVR/STB) and handheld/wireless, especially in digital mobile phones.</p>
<p>New embedded Linux applications do not spring, Minerva-like, from the heads of developers; a majority of projects must accommodate thousands, even millions of lines of legacy source code. Although hundreds of embedded projects have successfully ported existing code from such platforms as Wind River&#8217;s VxWorks and pSOS, VRTX, Nucleus and other RTOSes to Linux, the exercise is still nontrivial.</p>
<p>To date, the majority of literature on migration from legacy RTOS applications to embedded Linux has focused on RTOS APIs, tasking and scheduling models and how they map to Linux user-space equivalents. Equally important in the I/O-intensive sphere of embedded programming is porting RTOS application hardware interface code to the more formal Linux device driver model.</p>
<p>This article surveys several common approaches to memory-mapped I/O frequently found in legacy embedded applications. These range from ad hoc use of interrupt service routines (ISRs) and user-thread hardware access to the semi-formal driver models found in some RTOS repertoires. It also presents heuristics and methodologies for transforming RTOS code into well-formed Linux device drivers. In particular, the article focuses on memory mapping in RTOS code vs. Linux, porting queue-based I/O schemes and redefining RTOS I/O for native Linux drivers and dæmons.</p>
<p><strong>Links:</strong>  <a HREF="http://www.linuxjournal.com/node/7355/print">http://www.linuxjournal.com/node/7355/print</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/58/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/58/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=58&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/10/23/porting-rtos-device-drivers-to-embedded-linux/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Summary</title>
		<link>http://belhob.wordpress.com/2007/10/22/summary/</link>
		<comments>http://belhob.wordpress.com/2007/10/22/summary/#comments</comments>
		<pubDate>Sun, 21 Oct 2007 18:38:58 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[applications]]></category>
		<category><![CDATA[deadlines]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[kernels]]></category>
		<category><![CDATA[RTOS]]></category>
		<category><![CDATA[Scheduling]]></category>
		<category><![CDATA[task management]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/10/22/summary/</guid>
		<description><![CDATA[Real-time and embedded systems are used in many applications such as airborne computers, medical instruments and communication systems. Embedded systems are characterized by limited processor memory, limited processing power, and unusual interfaces to the outside world. Real-time requirements impose stringent time deadlines for delivering the results of embedded processing.
RTOS kernels hide from application software the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=57&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.khronos.org/img/events_graphics/dmp_training.jpg"><img SRC="http://www.khronos.org/img/events_graphics/dmp_training.jpg" BORDER="0" WIDTH="375" HEIGHT="281" ALIGN="right" /></a>Real-time and embedded systems are used in many applications such as airborne computers, medical instruments and communication systems. Embedded systems are characterized by limited processor memory, limited processing power, and unusual interfaces to the outside world. Real-time requirements impose stringent time deadlines for delivering the results of embedded processing.</p>
<p>RTOS kernels hide from application software the low-level details of system hardware, and at the same time provide several categories of services to application software. These include: task management with priority-based preemptive scheduling, reliable intertask communication and synchronization, non-fragmenting dynamic memory allocation, and basic timer services.</p>
<p>The issue of timing determinism is important in differentiating general-computing operating systems from real-time operating systems. This issue crops up in many parts of operating system kernels, such as task schedulers, dynamic memory allocation and intertask message communication. While general-computing operating systems often offer non-deterministic services in these areas, fully deterministic solutions are needed for real-time and embedded systems. A number of real-time operating systems implement these solutions in their compact high-performance kernels.</p>
<p><strong>Links: </strong><a HREF="http://linuxdevices.com/articles/AT4627965573.html">http://linuxdevices.com/articles/AT4627965573.html</a><strong> </strong></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/57/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/57/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/57/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/57/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/57/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=57&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/10/22/summary/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Dynamic memory allocation</title>
		<link>http://belhob.wordpress.com/2007/10/21/dynamic-memory-allocation/</link>
		<comments>http://belhob.wordpress.com/2007/10/21/dynamic-memory-allocation/#comments</comments>
		<pubDate>Sat, 20 Oct 2007 18:33:48 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[]]></category>
		<category><![CDATA[DMA]]></category>
		<category><![CDATA[Dynamic memory allocation]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[Fragmentation]]></category>
		<category><![CDATA[fragments]]></category>
		<category><![CDATA[glued]]></category>
		<category><![CDATA[Heap]]></category>
		<category><![CDATA[malloc]]></category>
		<category><![CDATA[pools]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/10/21/dynamic-memory-allocation/</guid>
		<description><![CDATA[Determinism of service times is also an issue in the area of dynamic allocation of RAM memory. Many general-computing non-real-time operating systems offer memory allocation services from what is termed a &#8220;Heap.&#8221; The famous &#8220;malloc&#8221; and &#8220;free&#8221; services known to C-language programmers work from a heap. Tasks can temporarily borrow some memory from the operating [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=56&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Determinism of service times is also an issue in the area of dynamic allocation of RAM memory. Many general-computing non-real-time operating systems offer memory allocation services from what is termed a &#8220;Heap.&#8221; The famous &#8220;malloc&#8221; and &#8220;free&#8221; services known to C-language programmers work from a heap. Tasks can temporarily borrow some memory from the operating system’s heap by calling &#8220;malloc&#8221;, and specifying the size of memory buffer needed. When this task (or another task) is finished with this memory buffer it can return the buffer to the operating system by calling &#8220;free.&#8221; The operating system will then return the buffer to the heap, where its memory might be used again, perhaps as part of a larger buffer. Or perhaps it may in the future be broken into several smaller buffers.</p>
<p>Heaps suffer from a phenomenon called &#8220;External Memory Fragmentation&#8221; that may cause the heap services to degrade. This fragmentation is caused by the fact that when a buffer is returned to the heap, it may in the future be broken into smaller buffers when &#8220;malloc&#8221; requests for smaller buffer sizes occur. After a heap undergoes many cycles of &#8220;malloc&#8221;s and &#8220;free&#8221;s, small slivers of memory may appear between memory buffers that are being used by tasks. These slivers are so small that they are useless to tasks. But they are trapped between buffers that are being used by tasks, so they can’t be coagulated (&#8220;glued&#8221;) together into bigger, useful buffer sizes. Over time, a heap will have more and more of these slivers. This will eventually result in situations where tasks will ask for memory buffers (&#8220;malloc&#8221;) of a certain size, and they will be refused by the operating system &#8212; even though the operating system has enough available memory in its heap. The problem: That memory is scattered in small slivers distributed in various separate parts of the heap. In operating system terminology, the slivers are called &#8220;fragments&#8221;, and this problem is called &#8220;external memory fragmentation.&#8221;</p>
<p>This fragmentation problem can be solved by so-called &#8220;garbage collection&#8221; (defragmentation) software. Unfortunately, &#8220;garbage collection&#8221; algorithms are often wildly non-deterministic – injecting randomly-appearing random-duration delays into heap services. These are often seen in the memory allocation services of general-computing non-real-time operating systems.</p>
<p>This puts the embedded system developer who wants to use a general-computing non-real-time operating system into a quandry: Should the embedded system be allowed to suffer occasional randomly-appearing random-duration delays if / when &#8220;garbage collection&#8221; kicks in?&#8230; Or, alternatively, should the embedded system be allowed to fragment its memory until application software &#8220;malloc&#8221; requests to the heap are refused even though a sufficient total amount of free memory is still available? Neither alternative is acceptable for embedded systems that need to provide service continually for long periods of time.</p>
<p>Real-time operating systems, on the other hand, solve this quandry by altogether avoiding both memory fragmentation and &#8220;garbage collection&#8221;, and their consequences. RTOSs offer non-fragmenting memory allocation techniques instead of heaps. They do this by limiting the variety of memory chunk sizes they make available to application software. While this approach is less flexible than the approach taken by memory heaps, they do avoid external memory fragmentation and avoid the need for defragmentation. For example, the &#8220;Pools&#8221; memory allocation mechanism allows application software to allocate chunks of memory of perhaps 4 or 8 different buffer sizes per pool. Pools totally avoid external memory fragmentation, by not permitting a buffer that is returned to the pool to be broken into smaller buffers in the future. Instead, when a buffer is returned the pool, it is put onto a &#8220;free buffer list&#8221; of buffers of its own size that are available for future re-use at their original buffer size. This is shown in Figure 7.</p>
<p STYLE="text-align: center"><img SRC="http://linuxdevices.com/files/misc/kalinsky_whitepaper_files/figure7.gif" BORDER="0" WIDTH="450" HEIGHT="263" /></p>
<p>Memory is allocated and de-allocated from a pool with deterministic, often constant, timing.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/56/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/56/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=56&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/10/21/dynamic-memory-allocation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
		<item>
		<title>Fixed-time task switching</title>
		<link>http://belhob.wordpress.com/2007/10/18/fixed-time-task-switching/</link>
		<comments>http://belhob.wordpress.com/2007/10/18/fixed-time-task-switching/#comments</comments>
		<pubDate>Thu, 18 Oct 2007 10:48:09 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Embedded]]></category>
		<category><![CDATA[RTOS]]></category>
		<category><![CDATA[Scheduling]]></category>
		<category><![CDATA[task-switching]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/2007/10/18/fixed-time-task-switching/</guid>
		<description><![CDATA[The time it takes to do task switching is of interest when evaluating an operating system. A simple general-computing (non-preemptive) operating system might do task switching only at timer tick times, which might for example be ten milliseconds apart. Then if the need for a task switch arises anywhere within a 10-millisecond timeframe, the actual [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=53&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>The time it takes to do task switching is of interest when evaluating an operating system. A simple general-computing (non-preemptive) operating system might do task switching only at timer tick times, which might for example be ten milliseconds apart. Then if the need for a task switch arises anywhere within a 10-millisecond timeframe, the actual task switch would occur only at the end of the current 10-millisecond period. Such a delay would be unacceptable in most real-time embedded systems.</p>
<p>In more sophisticated preemptive task schedulers, the scheduler may need to search through arrays of tasks to determine which task should be made to run next. If there are more tasks to search through, the search will take longer. Such searches are often done by general-computing operating systems, thus making them non-deterministic. Real-time operating systems, on the other hand, avoid such searches by using incrementally updated tables that allow the task scheduler to identify the task that should run next in a rapid fixed-time fashion.</p>
<p>These two types of timing behavior for task switching can be seen in Figure 4.</p>
<p STYLE="text-align: center"><img SRC="http://linuxdevices.com/files/misc/kalinsky_whitepaper_files/figure4.gif" BORDER="0" WIDTH="450" HEIGHT="306" /></p>
<p ALIGN="center">&nbsp;</p>
<p>In this figure, we see that for a general-computing (non-real-time) operating system, the task switching time generally rises as a software system includes more tasks that can be scheduled. However, the actual time for a task switch is not the time shown by the dashed red line. Instead, in any given task switch instance, it might be well above or well below the time shown by the dashed red line. The shaded regions surrounding the dashed red line simply show the likelihood of the actual task switch time being that far above or below the dashed red line.</p>
<p>On the other hand, the horizontal solid green line shows the task switching time characteristic of a real-time operating system. It is constant, independent of any load factor such as the number of tasks in a software system.</p>
<p>Please note that in some instances, such as the leftmost area of the graph, the task switching time might in special cases be quicker for a general-computing non-real-time operating system, than for a real-time operating system. This does not detract from the appropriateness of a real-time operating system for real-time embedded applications. For, in fact, the term &#8220;real-time&#8221; does not mean &#8220;as fast as possible&#8221; but rather &#8220;real-time&#8221; demands consistent, repeatable, known timing performance. Although a non-real-time operating system might do some faster task switching for small numbers of tasks, it might equally well introduce a long time delay the next time it does the same task switch. The strength of a real-time operating system is in its known, repeatable timing performance, which is also typically faster than that of a non-deterministic task scheduler in situations of large numbers of tasks in a software system. Most often, the real-time operating system will exhibit task-switching times much faster than its non-real-time competitor when the number of tasks grows above 5 or 10.</p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/53/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/53/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/53/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/53/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/53/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=53&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2007/10/18/fixed-time-task-switching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/67813aa08830bd31722c3ab9736fa66a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Bipin Gautam Taksande</media:title>
		</media:content>
	</item>
	</channel>
</rss>