<?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</title>
	<atom:link href="http://belhob.wordpress.com/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</title>
		<link>http://belhob.wordpress.com</link>
	</image>
			<item>
		<title>Efficient CRC calculation with minimal memory footprint</title>
		<link>http://belhob.wordpress.com/2008/03/18/efficient-crc-calculation-with-minimal-memory-footprint/</link>
		<comments>http://belhob.wordpress.com/2008/03/18/efficient-crc-calculation-with-minimal-memory-footprint/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 04:50:37 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[binary polynomial division]]></category>
		<category><![CDATA[communication errors]]></category>
		<category><![CDATA[CRC]]></category>
		<category><![CDATA[digital information exchange]]></category>
		<category><![CDATA[Efficient CRC calculation]]></category>
		<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[error detection and correction]]></category>
		<category><![CDATA[LFSRs]]></category>
		<category><![CDATA[minimal memory footprint]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=168</guid>
		<description><![CDATA[Almost every form of digital information exchange can introduce communication errors. Sometimes, these errors can be ignored (for example, an erroneous pixel in a high-resolution video is merely unnoticeable). However, most of the time, they cannot be ignored, and we want to ensure that the receiver gets an absolutely correct stream of information.
In order to [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=168&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.relisoft.com/Science/images/crc.gif"><img SRC="http://www.relisoft.com/Science/images/crc.gif" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="306" HEIGHT="246" ALIGN="left" /></a>Almost every form of digital information exchange can introduce communication errors. Sometimes, these errors can be ignored (for example, an erroneous pixel in a high-resolution video is merely unnoticeable). However, most of the time, they cannot be ignored, and we want to ensure that the receiver gets an absolutely correct stream of information.</p>
<p>In order to overcome the inherent inaccuracy of information transmission, a few methods for error detection and correction have been developed. Generally speaking, these methods introduce some redundancy to the actual message, which in turn can be used to detect errors and in some cases to recover the original data.</p>
<p>One of the most common methods is the use of the CRC (cyclic redundancy check) function, a family of codes commonly used to ensure data integrity in digital data streams by detecting errors due to noise or dropouts of bits in the message stream. The CRC calculates a series of bits (also commonly referred to as a CRC) that is appended to the data stream and transmitted along with the message. The receiver performs a CRC function on the message and compares the result with the received CRC code to verify the integrity of the message. CRC is commonly used in a number of applications such as digital communications and computer data storage systems.</p>
<p>The CRC is performed through binary polynomial division between the transmitted message and a polynomial divisor and is usually implemented using a linear feedback shift register (LFSR). An LFSR is a shift register where its next state is a linear combination of its previous state and input bits. In our context, the linear operators are Logical XOR and Logical AND. Since the operation of an LFSR circuit is deterministic, and the CRC is shorter than the message, typically few messages are mapped to each CRC value. A well-chosen polynomial ensures an evenly distributed mapping of messages to CRC values (for example, if all messages were mapped to the same CRC, detection of an error in a message bit would be impossible).</p>
<p>The trick in an embedded systems design is to implement this technique in the most efficient way possible and in the smallest possible footprint. In this article, we discuss aspects of the theory and implementation of LFSRs and CRCs, illustrated using a family of instructions on Analog Devices&#8217; Blackfin processor specifically defined for addressing the task of efficient LFSR implementation. We also provide a method for converting an implementation from an Internal LFSR form to an External LFSR form.</p>
<p><strong>Links:</strong> <a HREF="http://embedded.com/design/206901030">http://embedded.com/design/206901030</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/168/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/168/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/168/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/168/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/168/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=168&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/18/efficient-crc-calculation-with-minimal-memory-footprint/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>The Rule of Fifty</title>
		<link>http://belhob.wordpress.com/2008/03/17/the-rule-of-fifty/</link>
		<comments>http://belhob.wordpress.com/2008/03/17/the-rule-of-fifty/#comments</comments>
		<pubDate>Mon, 17 Mar 2008 04:50:46 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Circadian Technologies Shiftware Practices]]></category>
		<category><![CDATA[Fred Brooks]]></category>
		<category><![CDATA[German Embassy]]></category>
		<category><![CDATA[hour week]]></category>
		<category><![CDATA[John Nevison]]></category>
		<category><![CDATA[overtime]]></category>
		<category><![CDATA[Overtime Hours]]></category>
		<category><![CDATA[productive hours]]></category>
		<category><![CDATA[Rule of Fifty]]></category>
		<category><![CDATA[working too many hours]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=167</guid>
		<description><![CDATA[Though we all have a gut-sense that working too many hours is counterproductive, a very short paper by John Nevison called &#8220;Overtime Hours: The Rule of Fifty&#8221; at Project Solutions (where you need to register) cites data from four studies conducted over a half century to show how productivity either drops, or at best maxes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=167&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://suttonplace.mlblogs.com/photos/uncategorized/working_overtime.jpg"><img SRC="http://suttonplace.mlblogs.com/photos/uncategorized/working_overtime.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="302" HEIGHT="413" ALIGN="right" /></a>Though we all have a gut-sense that working too many hours is counterproductive, a very short paper by John Nevison called &#8220;Overtime Hours: The Rule of Fifty&#8221; at Project Solutions (where you need to register) cites data from four studies conducted over a half century to show how productivity either drops, or at best maxes out, as overtime increases.</p>
<p>The studies&#8217; results vary quite a bit. One shows that at 50 hours/week workers do about 37 hours work, dropping to just over 30 once the workweek increases to 55. The &#8220;best,&#8221; if you can call it that, results were from a 1997 survey showed wielding the whip can have ever-increasing productive rewards, edging up to about 52 productive hours for a 70 hour week. But they all show a nearly-impenetrable barrier of around 50 useful hours or less, regardless of overtime.</p>
<p>Unsurprisingly the data shows a sharp drop in results for those working excessive OT for weeks on end, averaging around a 20% drop after 12 weeks of servitude. That means, as the author concludes, the Rule of Fifty is a best case estimate.</p>
<p>The 2005 Circadian Technologies Shiftware Practices survey showed that productivity can decrease by as much as 25% for a 60 hour workweek, which jibes pretty well with Nevison&#8217;s data. Circadian&#8217;s results also demonstrate that turnover is nearly three times higher among workers putting in a lot of OT, and absenteeism is twice the national average. I&#8217;m not sure what that result means, since it&#8217;s awfully hard for an absent worker to be putting in overtime.</p>
<p>Fred Brooks claims that the average software engineer devotes about 55% of his week to project work. The rest goes to overhead activities, responding to HR, meetings about the health insurance plan, and supporting other activities.</p>
<p>The German Embassy&#8217;s Washington  web site claims on its web  site that the nominal workweek in Germany is 37.5 hours because &#8220;The original reason for introducing this system was to combat rush-hour traffic congestion, but among the more direct gains are an improvement in employee morale, greater productivity, significant decreases in absenteeism, greater flexibility for women who juggle the demands of work, home and children, and the increased sense of individual dignity that the employees get from having a greater say in organizing their own time.&#8221;</p>
<p><strong>Links:</strong>  <a HREF="http://embedded.com/columns/breakpoint/206902869">http://embedded.com/columns/breakpoint/206902869</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/167/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/167/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/167/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/167/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/167/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=167&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/17/the-rule-of-fifty/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>Taming software complexity</title>
		<link>http://belhob.wordpress.com/2008/03/14/taming-software-complexity/</link>
		<comments>http://belhob.wordpress.com/2008/03/14/taming-software-complexity/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 04:42:51 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[C/C++ Programming]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[cyclomatic complexity]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[measure the complexity of your code]]></category>
		<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[Taming software complexity]]></category>
		<category><![CDATA[Thomas McCabe]]></category>
		<category><![CDATA[tragedies]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=166</guid>
		<description><![CDATA[&#8220;Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&#8221;
Folk wisdom, as reflected in Brian Kernighan&#8217;s clever riff on clever code, is that insight we all know but generally ignore. But how [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=166&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.spinellis.gr/blog/20031003/iexplore2.gif"><img ALIGN="left" HEIGHT="274" WIDTH="302" VSPACE="15" HSPACE="15" BORDER="0" SRC="http://www.spinellis.gr/blog/20031003/iexplore2.gif" /></a>&#8220;Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.&#8221;</p>
<p>Folk wisdom, as reflected in Brian Kernighan&#8217;s clever riff on clever code, is that insight we all know but generally ignore. But how can we measure &#8220;cleverness?&#8221; Supreme Court Justice Potter Stewart, trying to characterize pornography, memorably lamented that it somewhat defies definition, but &#8220;I know it when I see it.&#8221; Likewise, most of us can sense excessively clever code but may disagree when examining specific code chunks.</p>
<p>We do know complicated functions are tough to understand, an agony to debug, and usually require excessive amounts of maintenance.</p>
<p>One of the tragedies of software engineering is that, in industry at least, we&#8217;ve successfully avoided the metrics-based quality revolution that transformed manufacturing. Few companies know their pretest bug rates in, say, defects per line of code. Or productivity in lines of code per hour. Or which are the worst functions in a project. In an experiment I conducted surreptitiously last year, only a third of correspondents could answer the seemingly simple question &#8220;how big is your code&#8221; in any metric they wanted to use (MB, lines of code, lines they developed, value in dollars, or, heck, the weight of the listings).</p>
<p>A management mantra states &#8220;if you can&#8217;t measure it, you can&#8217;t manage it.&#8221; Though surely true for building widgets, it&#8217;s a lot harder to apply to engineering. But some objective measures provide valuable insight into the art of developing firmware. Since we know complex functions are problematic, it seems logical that we measure and control complexity in functions.</p>
<p>And it turns out that&#8217;s pretty easy to do.</p>
<p>But first, there are two kinds of complexity: essential, which is a quality about the problem being solved, and incidental, which is the complexity introduced by our engineering approaches. Here we&#8217;re talking about incidental complexity, as that&#8217;s the only kind we as developers can manage.</p>
<p>Thirty-one years ago, Thomas McCabe proposed a metric called &#8220;cyclomatic complexity&#8221; to attach a quantitative measure to a function&#8217;s complexity. It&#8217;s one of many such measures but is by far the one most used. It measures the number of &#8220;edges&#8221; and &#8220;nodes&#8221; in a function, where a node is a computational statement and an edge represents the transfer of control between nodes. Cyclomatic complexity is then:</p>
<p><strong><i>v(G)=edges–nodes+2</i></strong></p>
<p><strong>Links:</strong>  <a HREF="http://embedded.com/columns/technicalinsights/206901032">http://embedded.com/columns/technicalinsights/206901032</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/166/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/166/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=166&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/14/taming-software-complexity/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>How to write secure C/C++ application code</title>
		<link>http://belhob.wordpress.com/2008/03/13/how-to-write-secure-cc-application-code/</link>
		<comments>http://belhob.wordpress.com/2008/03/13/how-to-write-secure-cc-application-code/#comments</comments>
		<pubDate>Thu, 13 Mar 2008 04:28:42 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[C/C++ Programming]]></category>
		<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[address space]]></category>
		<category><![CDATA[buffer overflow]]></category>
		<category><![CDATA[flaws]]></category>
		<category><![CDATA[GOT]]></category>
		<category><![CDATA[heap memory space]]></category>
		<category><![CDATA[How to write secure C/C++ application code]]></category>
		<category><![CDATA[OpenBSD]]></category>
		<category><![CDATA[PLT]]></category>
		<category><![CDATA[shared libraries]]></category>
		<category><![CDATA[vulnerable program]]></category>
		<category><![CDATA[WAX policy]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=165</guid>
		<description><![CDATA[Many flaws are exploitable because the address space of the vulnerable program has memory that is both writable and executable. As a result, an attacker can write to memory using a buffer overflow, for example, and then transfer control to the address of the injected code.
This problem can be addressed by ensuring that memory pages [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=165&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.scapackaging.com/upload/About%20us/BE-SECURE-icon-72dpi.jpg"><img SRC="http://www.scapackaging.com/upload/About%20us/BE-SECURE-icon-72dpi.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="295" HEIGHT="276" ALIGN="right" /></a>Many flaws are exploitable because the address space of the vulnerable program has memory that is both writable and executable. As a result, an attacker can write to memory using a buffer overflow, for example, and then transfer control to the address of the injected code.</p>
<p>This problem can be addressed by ensuring that memory pages have the minimal permissions required for proper operation (an application of the principle of least privilege). This is not a comprehensive defense against all exploits, but simply a mechanism designed to extend your defense-in-depth strategy by increasing the difficulty for an attacker to exploit a vulnerability.</p>
<p>Several existing systems enforce reduced privileges in the kernel so that no part of the process address space is both writable and executable. This policy has been named &#8220;W xor X&#8221; or more concisely WAX. Enforcement of this policy results, for example, in a nonexecutable stack.</p>
<p>OpenBSD is an example of a system that implements a WAX policy. In OpenBSD, an application can still request explicit permissions with mprotect() to override the default.</p>
<p>The implementation of a WnX policy depends on the central processing unit (CPU) and memory management unit (MMU) architecture. For processors that feature an execute bit for each page of memory; OpenBSD implements two changes to make this possible:</p>
<p>1. The signal trampoline is removed from the stack. The signal trampoline page is given read and execute permissions, while the stack segment is given read and write permissions. By doing this, the stack becomes nonexecutable.</p>
<p>2. The mapping of shared libraries and heap memory space is changed so that the data segments do not contain objects which are read, write, and executable. This entails moving the shared library global offset table (GOT), the shared library procedure linkage table (PLT), C++ constructors (.ctors), and C++ destructors (.dtors).</p>
<p>The GOT and PLT are mapped onto their own pages, which are made nonwritable. Minor changes to the dynamic linker are needed to accommodate this change. The . dtors and . ctors sections are moved in with the GOT and consequently become nonwritable as well. Making these changes eliminates executable objects from the data segment.</p>
<p>The implementation for architectures that do not support a per-page execute bit (such as IA-32) is more involved but achieves a similar result.</p>
<p>To supplement this scheme, OpenBSD also reduces permissions on readonly strings and pointers stored as constant data. Historically, these objects were stored in the text segment and had permissions of PROT READ IPROT EXEC. This meant that constant data could potentially be executed as shell code.</p>
<p>Because OpenBSD uses the ELF object file format, a new segment, aptly named . rodata, was created to store this data. As a result, this behavior was changed so that now these objects only have PROT READ and they lose PROT EXEC.</p>
<p><strong>Links:</strong> <a HREF="http://embedded.com/columns/technicalinsights/202802744">http://embedded.com/columns/technicalinsights/202802744</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/165/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/165/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/165/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/165/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/165/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=165&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/13/how-to-write-secure-cc-application-code/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>Lilo</title>
		<link>http://belhob.wordpress.com/2008/03/08/lilo/</link>
		<comments>http://belhob.wordpress.com/2008/03/08/lilo/#comments</comments>
		<pubDate>Sat, 08 Mar 2008 04:26:42 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Alessandro Rubini]]></category>
		<category><![CDATA[BootLoaders]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[bootstrap loader]]></category>
		<category><![CDATA[Cameron Spitzer]]></category>
		<category><![CDATA[disk drive]]></category>
		<category><![CDATA[Grub]]></category>
		<category><![CDATA[Lilo]]></category>
		<category><![CDATA[Lilo installations]]></category>
		<category><![CDATA[Lilo User's Guide]]></category>
		<category><![CDATA[linux Boot Loaders]]></category>
		<category><![CDATA[LiveCDs]]></category>
		<category><![CDATA[paper tape]]></category>
		<category><![CDATA[punched card]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[ROM]]></category>
		<category><![CDATA[USB flash drives]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=164</guid>
		<description><![CDATA[LILO is the most used Linux Loader for the x86 flavor of Linux; I&#8217;ll call it Lilo rather than LILO here because I don&#8217;t appreciate uppercase. This file describes some typical Lilo installations. It&#8217;s intended as a supplement to the Lilo User&#8217;s Guide. I think examples are informative even if your setup isn&#8217;t much like [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=164&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.slackbook.org/html/booting/setup-lilo-w.png"><img SRC="http://www.slackbook.org/html/booting/setup-lilo-w.png" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="301" HEIGHT="188" ALIGN="left" /></a>LILO is the most used Linux Loader for the x86 flavor of Linux; I&#8217;ll call it Lilo rather than LILO here because I don&#8217;t appreciate uppercase. This file describes some typical Lilo installations. It&#8217;s intended as a supplement to the Lilo User&#8217;s Guide. I think examples are informative even if your setup isn&#8217;t much like mine. I hope this saves you trouble. Since Lilo&#8217;s own documentation is very good, who&#8217;s interested in the details is referred to /usr/doc/lilo* (once upon a time said gentlemen like Cameron Spitzer and Alessandro Rubini who have made early versions of this document)</p>
<p>LILO (LInux LOader) is a generic boot loader for Linux.</p>
<p>LILO was originally developed by Werner Almesberger, while its current developer is John Coffman.</p>
<p>LILO does not depend on a specific file system, and can boot an operating system (e.g., Linux kernel images) from floppy disks and hard disks. One of up to sixteen different images can be selected at boot time. Various parameters, such as the root device, can be set independently for each kernel. LILO can be placed either in the master boot record (MBR) or the boot sector of a partition. In the latter case something else must be placed in the MBR to load LILO.</p>
<p>At system start, only the BIOS drivers are available for LILO to access hard disks. For this reason, with very old BIOSes, the accessible area is limited to cylinders 0 to 1023 of the first two hard disks. For later BIOSes, LILO can use 32-bit &#8220;logical block addressing&#8221; (LBA) to access practically the entire storage of all the harddisks that the BIOS allows access to.</p>
<p>LILO was the default bootloader for most Linux distributions in the years after the popularity of loadlin. Today, most distributions use GRUB as the default bootloader.</p>
<p><strong>Links:</strong></p>
<p><a HREF="http://tldp.org/HOWTO/LILO.html">http://tldp.org/HOWTO/LILO.html</a></p>
<p><a HREF="http://en.wikipedia.org/wiki/LILO_(boot_loader)">http://en.wikipedia.org/wiki/LILO_(boot_loader) </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/164/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/164/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/164/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/164/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/164/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=164&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/08/lilo/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>GRUB</title>
		<link>http://belhob.wordpress.com/2008/03/07/grub/</link>
		<comments>http://belhob.wordpress.com/2008/03/07/grub/#comments</comments>
		<pubDate>Fri, 07 Mar 2008 11:58:38 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[BootLoaders]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[bootstrap loader]]></category>
		<category><![CDATA[disk drive]]></category>
		<category><![CDATA[Grub]]></category>
		<category><![CDATA[LiveCDs]]></category>
		<category><![CDATA[paper tape]]></category>
		<category><![CDATA[punched card]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[ROM]]></category>
		<category><![CDATA[USB flash drives]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=163</guid>
		<description><![CDATA[ GRUB is independent of any particular operating system and may be thought of as a tiny, function-specific OS. The purpose of the GRUB kernel is to recognize filesystems and load boot images, and it provides both menu-driven and command-line interfaces to perform these functions. The command-line interface in particular is quite flexible and powerful, with [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=163&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.cyberciti.biz/tips/wp-content/uploads/2006/10/super-grub-disk-linux-options.png"><img ALIGN="right" HEIGHT="175" WIDTH="291" VSPACE="15" HSPACE="15" BORDER="0" SRC="http://www.cyberciti.biz/tips/wp-content/uploads/2006/10/super-grub-disk-linux-options.png" /></a> GRUB is independent of any particular operating system and may be thought of as a tiny, function-specific OS. The purpose of the GRUB kernel is to recognize filesystems and load boot images, and it provides both menu-driven and command-line interfaces to perform these functions. The command-line interface in particular is quite flexible and powerful, with command history and completion features familiar to users of the bash shell.</p>
<p>GRUB is in its element with the multiboot, multidisk systems typical of Linux and open-source adventurers who may simultaneously test or track several Linux distributions, the BSDs, GNU/Hurd, BeOS and perhaps that vestigial partition for Mr. Bill. Even if you stick with LILO as your system&#8217;s primary boot loader, it&#8217;s smart to keep a GRUB boot floppy handy as the best and fastest way to get your system back if you otherwise cream your master boot record (MBR). If you have done any number of multiboot installations, you know exactly what I&#8217;m talking about. Should you need any more reasons for considering GRUB, check out the sidebar, “Why GRUB”. Let&#8217;s get started!</p>
<p><strong> Links:</strong></p>
<p><a HREF="http://www.linuxjournal.com/article/4622">http://www.linuxjournal.com/article/4622</a></p>
<p><a HREF="http://www.gnu.org/software/grub/">http://www.gnu.org/software/grub/</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/163/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/163/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/163/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/163/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/163/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=163&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/07/grub/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>Boot Loaders</title>
		<link>http://belhob.wordpress.com/2008/03/06/boot-loaders/</link>
		<comments>http://belhob.wordpress.com/2008/03/06/boot-loaders/#comments</comments>
		<pubDate>Thu, 06 Mar 2008 04:35:02 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[boot loader]]></category>
		<category><![CDATA[Boot Loaders]]></category>
		<category><![CDATA[bootstrap]]></category>
		<category><![CDATA[bootstrap loader]]></category>
		<category><![CDATA[disk drive]]></category>
		<category><![CDATA[LiveCDs]]></category>
		<category><![CDATA[paper tape]]></category>
		<category><![CDATA[punched card]]></category>
		<category><![CDATA[RAM]]></category>
		<category><![CDATA[ROM]]></category>
		<category><![CDATA[USB flash drives]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=162</guid>
		<description><![CDATA[Most computer systems can only execute code found in the memory (ROM or RAM). Modern operating systems are stored on hard disks, or occasionally on LiveCDs, USB flash drives, or other non-volatile storage devices. When a computer is first powered on, it does not have an operating system in memory. The computer&#8217;s hardware alone cannot [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=162&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.windowsfordevices.com/files/misc/oneNANDboot_1.jpg"><img SRC="http://www.windowsfordevices.com/files/misc/oneNANDboot_1.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="300" HEIGHT="283" ALIGN="left" /></a>Most computer systems can only execute code found in the memory (ROM or RAM). Modern operating systems are stored on hard disks, or occasionally on LiveCDs, USB flash drives, or other non-volatile storage devices. When a computer is first powered on, it does not have an operating system in memory. The computer&#8217;s hardware alone cannot perform complex actions such as loading a program from disk, so an apparent paradox exists: to load the operating system into memory, one appears to need to have an operating system already loaded.</p>
<p>The solution is to use a special small program, called a bootstrap loader, bootstrap or boot loader. This program&#8217;s only job is to load other software for the operating system to start. Often, multiple-stage boot loaders are used, in which several small programs of increasing complexity sequentially summon one after the other, until the last of them loads the operating system. The name bootstrap loader comes from the image of one pulling oneself up by one&#8217;s bootstraps. It derives from the very earliest days of computers and is possibly one of the oldest pieces of computer terminology in common use.</p>
<p>Early computers had a row of toggle switches on the front panel to allow the operator to manually enter the binary boot instructions into memory before transferring control to the CPU. The boot loader would then read the operating system in from an outside storage medium such as paper tape, punched card, or a disk drive.</p>
<p><strong>A boot loader typically consists of three programs:</strong></p>
<ul>
<li>The boot sector program is directly loaded by the BIOS at boot time and is only 512 bytes in size.</li>
<li></li>
<li>The second stage program is loaded by the boot sector program and it does everything you expect the boot loader to do.</li>
<li></li>
<li>The boot loader installer is not run when the system is booted, but it is used to install the boot loader and the second stage program onto the boot disk. These have to be stored in special locations, so they cannot be copied with cp.</li>
</ul>
<p><strong>Links:</strong></p>
<p><a HREF="http://en.wikipedia.org/wiki/Booting">http://en.wikipedia.org/wiki/Booting </a></p>
<p><a HREF="http://www.xs4all.nl/~lennartb/bootloaders/node3.html">http://www.xs4all.nl/~lennartb/bootloaders/node3.html</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/162/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/162/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/162/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/162/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/162/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=162&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/06/boot-loaders/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>SYSLINUX</title>
		<link>http://belhob.wordpress.com/2008/03/05/syslinux/</link>
		<comments>http://belhob.wordpress.com/2008/03/05/syslinux/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 04:36:04 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Linux Devices]]></category>
		<category><![CDATA[BootLoaders]]></category>
		<category><![CDATA[H. Peter Anvin]]></category>
		<category><![CDATA[isolinux]]></category>
		<category><![CDATA[lightweight bootloaders]]></category>
		<category><![CDATA[linux boot]]></category>
		<category><![CDATA[Linux operating system]]></category>
		<category><![CDATA[Live USBs]]></category>
		<category><![CDATA[rescue floppy discs]]></category>
		<category><![CDATA[SYSLINUX]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=161</guid>
		<description><![CDATA[The SYSLINUX Project covers a suite of lightweight bootloaders, for starting up computers in the Linux operating system. It is the work of H. Peter Anvin, and consists of several separate systems.
SYSLINUX is not normally used for booting full Linux installations since Linux is not normally installed on FAT filesystems. Instead, it is often used [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=161&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://upload.wikimedia.org/wikipedia/en/d/df/Newmenu2.png"><img SRC="http://upload.wikimedia.org/wikipedia/en/d/df/Newmenu2.png" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="301" HEIGHT="230" ALIGN="right" /></a>The SYSLINUX Project covers a suite of lightweight bootloaders, for starting up computers in the Linux operating system. It is the work of H. Peter Anvin, and consists of several separate systems.</p>
<p>SYSLINUX is not normally used for booting full Linux installations since Linux is not normally installed on FAT filesystems. Instead, it is often used for boot or rescue floppy discs, Live USBs, or other lightweight boot systems. ISOLINUX is generally used by Linux LiveCD and bootable install CDs.</p>
<p>A minor complication is involved when booting from CD-ROM. The El Torito standard allows for booting in two different modes;</p>
<p>Floppy emulation mode where the boot information is stored in an image file of a floppy disc, which is loaded from the CD and then behaves as a virtual floppy disc. This image file is effectively a FAT filesystem, so SYSLINUX is the required bootloader.</p>
<p>No emulation mode where the boot information is stored directly on the CD (not in a floppy image). In this mode ISOLINUX is required.</p>
<p>To have this choice is sometimes useful however as ISOLINUX is vulnerable to BIOS bugs, in which case it&#8217;s handy to be able to boot using SYSLINUX. This mostly affects computers built before about 1999, and, in fact, for modern computers no emulation mode is generally the more reliable method.</p>
<p><strong>Links:</strong></p>
<p><a HREF="http://en.wikipedia.org/wiki/SYSLINUX">http://en.wikipedia.org/wiki/SYSLINUX</a></p>
<p><a HREF="http://syslinux.zytor.com/">http://syslinux.zytor.com/ </a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/161/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/161/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/161/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/161/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/161/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=161&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/03/05/syslinux/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>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>Exactly When Do You Need Real Time?</title>
		<link>http://belhob.wordpress.com/2008/02/27/exactly-when-do-you-need-real-time/</link>
		<comments>http://belhob.wordpress.com/2008/02/27/exactly-when-do-you-need-real-time/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 06:03:01 +0000</pubDate>
		<dc:creator>Bipin Gautam Taksande</dc:creator>
				<category><![CDATA[Embedded Systems]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[32-bit processor]]></category>
		<category><![CDATA[embedded devices]]></category>
		<category><![CDATA[GPOS]]></category>
		<category><![CDATA[Hard Real time]]></category>
		<category><![CDATA[lower-priority threads]]></category>
		<category><![CDATA[quality of service]]></category>
		<category><![CDATA[RTOS]]></category>
		<category><![CDATA[schedule a thread]]></category>
		<category><![CDATA[Task scheduling]]></category>
		<category><![CDATA[unbounded dispatch latencies]]></category>

		<guid isPermaLink="false">http://belhob.wordpress.com/?p=159</guid>
		<description><![CDATA[Do most embedded projects still need an real time operating system (RTOS)? It&#8217;s a good question, given the speed of today&#8217;s high performance processors and the availability of patches for real-time Linux, Windows, and other general purpose operating systems (GPOSs). The answer lies in the very nature of embedded devices.
Devices that, in most cases, are [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=159&subd=belhob&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p><a HREF="http://www.embedded-knowhow.co.uk/images/solo%20derbot.jpg"><img SRC="http://www.embedded-knowhow.co.uk/images/solo%20derbot.jpg" BORDER="0" HSPACE="15" VSPACE="15" WIDTH="300" HEIGHT="266" ALIGN="right" /></a>Do most embedded projects still need an real time operating system (RTOS)? It&#8217;s a good question, given the speed of today&#8217;s high performance processors and the availability of patches for real-time Linux, Windows, and other general purpose operating systems (GPOSs). The answer lies in the very nature of embedded devices.</p>
<p>Devices that, in most cases, are manufactured in the thousands, or millions, of units. Devices where even a $1 reduction in per-unit hardware costs can save the manufacturer a small fortune. Devices, in other words, that can&#8217;t afford multi-gigahertz processors or a large memory array. In the automotive telematics market, for instance, the typical 32-bit processor runs at about 200Mhz — a far cry from the 2Ghz or faster processors now common in desktops and servers.</p>
<p>In an environment like this, an RTOS designed to extract extremely fast (and predictable) real-time response times from lower-end hardware offers a serious economic advantage. Savings aside, the services provided by an RTOS make many computing problems easier to solve, particularly when multiple activities compete for a system&#8217;s resources.</p>
<p>Consider, for instance, a system where users expect (or need) immediate response to input. With an RTOS, a developer can guarantee that operations initiated by the user will execute in preference to other system activities, unless a more important activity (for instance, an operation that helps protect the user&#8217;s safety) must execute first.</p>
<p>Consider also a system that must satisfy quality of service (QoS) requirements, such as a device that presents live video. If the device depends on software for any part of its content delivery, it can experience dropped frames at a rate that users perceive as unacceptable &#8211; from the users&#8217; perspective, the device is unreliable. But, with an RTOS, the developer can precisely control the order in which software processes execute and thereby ensure that playback occurs at an appropriate and consistent media rate.</p>
<p><strong>RTOSs Aren&#8217;t &#8220;Fair&#8221;</strong><br />
The need for &#8220;hard&#8221; real time &#8211; and for OSs that enable it &#8211; remains prevalent in the embedded industry. The question is, what does an RTOS have that a GPOS doesn&#8217;t? And how useful are the realtime extensions now available for some GPOSs? Can they provide a reasonable facsimile of RTOS performance?</p>
<p>Let&#8217;s begin with task scheduling. In a GPOS, the scheduler typically uses a &#8220;fairness&#8221; policy to dispatch threads and processes onto the CPU. Such a policy enables the high overall throughput required by desktop and server applications, but offers no assurances that high-priority, time-critical threads will execute in preference to lower-priority threads.</p>
<p>For instance, a GPOS may decay the priority assigned to a high-priority thread, or otherwise dynamically adjust the priority in the interest of fairness to other threads in the system. A high-priority thread can, as a consequence, be preempted by threads of lower priority. In addition, most GPOSs have unbounded dispatch latencies: the more threads in the system, the longer it takes for the GPOS to schedule a thread for execution. Any one of these factors can cause a high-priority thread to miss its deadlines, even on a fast CPU.</p>
<p>In an RTOS, on the other hand, threads execute in order of their priority. If a high-priority thread becomes ready to run, it can, within a small and bounded time interval, take over the CPU from any lower-priority thread that may be executing. Moreover, the high-priority thread can run uninterrupted until it has finished what it needs to do &#8211; unless, of course, it is preempted by an even higher-priority thread. This approach, known as priority-based preemptive scheduling, allows high-priority threads to meet their deadlines consistently, no matter how many other threads are competing for CPU time.</p>
<p><strong>Links:</strong> <a HREF="http://embedded.com/columns/technicalinsights/193001454">http://embedded.com/columns/technicalinsights/193001454</a></p>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/belhob.wordpress.com/159/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/belhob.wordpress.com/159/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/belhob.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/belhob.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/belhob.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/belhob.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/belhob.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/belhob.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/belhob.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/belhob.wordpress.com/159/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/belhob.wordpress.com/159/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/belhob.wordpress.com/159/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=belhob.wordpress.com&blog=1054595&post=159&subd=belhob&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://belhob.wordpress.com/2008/02/27/exactly-when-do-you-need-real-time/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>