<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EmbLogic &#187; Nakul Dhingra</title>
	<atom:link href="https://www.emblogic.com/blog/author/nakul-dhingra11/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.emblogic.com/blog</link>
	<description>Embedded System and ARM Training</description>
	<lastBuildDate>Tue, 03 Mar 2020 13:00:06 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.1</generator>
	<item>
		<title>Embedded Systems and Internet of Things</title>
		<link>https://www.emblogic.com/blog/12/embedded-systems-and-internet-of-things/</link>
		<comments>https://www.emblogic.com/blog/12/embedded-systems-and-internet-of-things/#comments</comments>
		<pubDate>Fri, 09 Dec 2016 11:56:05 +0000</pubDate>
		<dc:creator><![CDATA[Nakul Dhingra]]></dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.emblogic.com/blog/?p=13719</guid>
		<description><![CDATA[ Embedded Systems and IOT With billions of devices expected to join the IoT over the next several years, analysts expect organizations to continue this migration away from the legacy static languages that have been traditionally used. This steady integration into &#8230; <a href="https://www.emblogic.com/blog/12/embedded-systems-and-internet-of-things/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p style="text-align: center"> <strong>Embedded Systems and IOT</strong></p>
<p>With billions of devices expected to join the IoT over the next several years, analysts expect organizations to continue this migration away from the legacy static languages that have been traditionally used. This steady integration into the IoT will have significant impact on device design (Figure 1).</p>
<div class="article_figure"><a class="figure" title="IoT impact on the device." href="http://rtcmagazine.com/files/images/5912/RTC07-TCrTW-Oracle-Fig1_original_large.jpg"><img src="http://rtcmagazine.com/files/images/5912/RTC07-TCrTW-Oracle-Fig1_original_medium.jpg" alt="" /></a></div>
<div class="article_figure">
<h2>People Internet vs. Device Internet</h2>
<p>Not surprisingly, people and embedded devices use the Internet very differently.</p>
<p>People make use of the Internet largely through the World Wide Web — a set of applications that run on the Internet. Of course, the Web is not the entirety of the human interface for the Internet. We also use e-mail, text messages, mobile apps, and bevy of social media tools.</p>
<p>In the Internet of Things, by comparison, autonomous electronic devices exchange information with each other over the Internet. But these devices do not yet have the machine equivalent of Web browsers and social media. We are at the beginning of the development of these new tools and services.</p>
<h2>TCP/IP Protocol Stack</h2>
<p>The TCP/IP protocol stack is at the heart of the Internet. It can be represented using the OSI seven-layer reference model, as illustrated below. The top three layers are grouped together, which simplifies the model.</p>
<p><a class="fbx-link" href="http://micrium.com/wp-content/uploads/2014/03/OSI-Seven-Layer-Model.png"><img class="size-large wp-image-5073" src="http://micrium.com/wp-content/uploads/2014/03/OSI-Seven-Layer-Model-1024x617.png" alt="TCP/IP stack reference model" width="584" height="351" /></a></p>
<h3>Physical and Data Link Layers</h3>
<p>The most common physical layer protocols used by embedded systems are:</p>
<ul>
<li>Ethernet (10, 100, 1G)</li>
<li>WiFi (802.11b, g, n)</li>
<li>Serial with PPP (point-to-point protocol)</li>
<li>GSM, 3G, LTE, 4G</li>
</ul>
<h3>Network Layer</h3>
<p>This is where the Internet lives. The Internet — short for Inter-Network — is named so because it provides connections between networks, between the physical layers. This is where we find the ubiquitous IP address.</p>
<h3>Transport Layer</h3>
<p>Above the Network layer, we find TCP and UDP, the two transport protocols.</p>
<p>TCP is used for most of our human interactions with the Web (e-mail, Web browsing, and so on). And so many people believe that TCP should be the only protocol used at the Transport layer. TCP provides the concept of a logical connection, acknowledgement of transmitted packets, retransmission of lost packets, and flow control.</p>
<p>But for an embedded system, TCP can be overkill. This is why UDP, even if it has long been relegated to network services such as DNS and DHCP, is now finding a new home in sensor acquisition and remote control.</p>
<p>UDP is also better suited for real-time data applications such as voice and video. The reason is that TCP’s packet acknowledgment and retransmission features are useless overhead for those applications. If a piece of data (such as a bit of spoken audio) does not arrive at its destination in time, there is no point in retransmitting the packet. It would arrive out of sequence and garble the message.</p>
<p>When designing your IoT device, you must consider how you will connect your local network to the Internet. You can do so via a gateway, or you can build this functionality into the device itself. Many MCUs now have an integrated Ethernet controller, which makes this an easier task.</p>
<h2>The IoT Protocols</h2>
<p>Can you build an IoT system with familiar Web technologies? Yes you can, although the result would not be as efficient as with the newer protocols.</p>
<p>HTTP(S) and Websockets are common existing standards, which can be used to deliver XML or JavaScript Object Notation (JSON) in the payload. JSON provides an abstraction layer for Web developers to create a stateful Web application with a persistent connection to a Web server.</p>
<h3>HTTP</h3>
<p>HTTP is the foundation of the client-server model used for the Web. The more secure method to implement HTTP is to include only a client in your IoT device, not a server. In other words, it is safer to build an IoT device that can only initiate connections, not receive. After all, you do not want to allow outside access to your local network.</p>
<h3>WebSocket</h3>
<p>WebSocket is a protocol that provides full-duplex communication over a single TCP connection between client and server. It is part of the HTML 5 specification. The WebSocket standard simplifies much of the complexity around bi-directional Web communication and connection management.</p>
<h3>XMPP</h3>
<p><a href="http://wiki.xmpp.org/web/Tech_pages/IoT_systems">XMPP (Extensible Messaging and Presence Protocol)</a> is a good example of an existing Web technology finding new use in the IoT space.</p>
<p>XMPP has its roots in instant messaging and presence information. It has expanded into signaling for VoIP, collaboration, lightweight middleware, content syndication, and generalized routing of XML data. It is a contender for mass scale management of consumer white goods such as washers, dryers, refrigerators, and so on.</p>
<h3>CoAP</h3>
<p>Although Web protocols are available and usable for IoT devices, they are too heavy for the majority of IoT applications. The <a href="https://datatracker.ietf.org/doc/draft-ietf-core-coap/">Constrained Application Protocol (CoAP)</a> was designed by the IETF for use with low-power and constrained networks. CoAP is a RESTful protocol. It is semantically aligned with HTTP, and even has a one-to-one mapping to and from HTTP.</p>
<p>CoAP is a good choice of protocol for devices operating on battery or energy harvesting. Some features of CoAP:</p>
<ul>
<li>CoAP uses UDP.</li>
<li>Because CoAP uses UDP, some of the TCP functions are reproduced in CoAP. For example, CoAP distinguishes between confirmable (requiring an acknowledgement) and non-confirmable messages.</li>
<li>Requests and responses are exchanged asynchronously over CoAP messages.</li>
<li>All the headers, methods and status codes are binary encoded, which reduces the protocol overhead.</li>
<li>Unlike HTTP, the ability to cache CoAP responses does not depend on the request method, but the Response Code.</li>
<li>CoAP fully addresses the need for an extremely lightweight protocol and the ability for a permanent connection. And if you have a Web background, using CoAP is relatively easy.</li>
</ul>
<h3>MQTT</h3>
<p><a href="http://www.mqtt.org">MQ Telemetry Transport (MQTT)</a> is an open source protocol for constrained devices and low-bandwidth, high-latency networks. It is a publish/subscribe messaging transport that is extremely lightweight and ideal for connecting small devices to constrained networks.</p>
<p>MQTT is bandwidth efficient, data agnostic, and has continuous session awareness. It helps minimize the resource requirements for your IoT device, while also attempting to ensure reliability and some degree of assurance of delivery with grades of service.</p>
<p>MQTT targets large networks of small devices that need to be monitored or controlled from a back-end server on the Internet. It is not designed for device-to-device transfer. Nor is it designed to “multicast” data to many receivers. MQTT is extremely simple, offering few control options.</p>
<h2>Comparing IoT Protocols</h2>
<p>The table below contains a summary of the IoT protocol landscape.</p>
<table style="font-family: 'Arial Narrow';height: 571px" width="865">
<caption> </caption>
<thead>
<tr>
<th style="background: #f0f0f0;width: 15%">Protocol</th>
<th style="background: #f0f0f0">CoAP</th>
<th style="background: #f0f0f0">XMPP</th>
<th style="background: #f0f0f0">RESTful HTTP</th>
<th style="background: #f0f0f0">MQTT</th>
</tr>
</thead>
<tbody>
<tr>
<td style="background: #f0f0f0">Transport</td>
<td>UDP</td>
<td>TCP</td>
<td>TCP</td>
<td>TCP</td>
</tr>
<tr>
<td style="background: #f0f0f0">Messaging</td>
<td>Request/Response</td>
<td>Publish/Subscribe Request/Response</td>
<td>Request/Response</td>
<td>Publish/Subscribe Request/Response</td>
</tr>
<tr>
<td style="background: #f0f0f0">2G, 3G, 4G Suitability (1000s nodes)</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Excellent</td>
<td>Excellent</td>
</tr>
<tr>
<td style="background: #f0f0f0">LLN Suitability (1000s nodes)</td>
<td>Excellent</td>
<td>Fair</td>
<td>Fair</td>
<td>Fair</td>
</tr>
<tr>
<td style="background: #f0f0f0">Compute Resources</td>
<td>10Ks RAM/Flash</td>
<td>10Ks RAM/Flash</td>
<td>10Ks RAM/Flash</td>
<td>10Ks RAM/Flash</td>
</tr>
<tr>
<td style="background: #f0f0f0">Success Stories</td>
<td>Utility Field Area Networks</td>
<td>Remote management of consumer white goods</td>
<td>Smart Energy Profile 2 (premise energy management, home services)</td>
<td>Extending enterprise messaging into IoT applications</td>
</tr>
</tbody>
</table>
<p>These Internet-specific IoT protocols have been developed to meet the requirements of devices with small amounts of memory, and networks with low bandwidth and high latency.</p>
<div id="post-body-content">
<div id="postdivrich" class="postarea edit-form-section">
<div id="wp-content-wrap" class="wp-core-ui wp-editor-wrap tmce-active has-dfw">
<div id="wp-content-editor-container" class="wp-editor-container">
<div id="mce_27" class="mce-tinymce mce-container mce-panel" style="border-width: 1px">
<div id="mce_27-body" class="mce-container-body mce-stack-layout">
<div id="mce_33" class="mce-edit-area mce-container mce-panel mce-stack-layout-item" style="border-width: 1px 0px 0px"></div>
<div id="mce_34" class="mce-statusbar mce-container mce-panel mce-last mce-stack-layout-item" style="border-width: 1px 0px 0px">
<div id="mce_34-body" class="mce-container-body mce-flow-layout">
<div id="mce_35" class="mce-path mce-first mce-last mce-flow-layout-item">
<div id="mce_35-0" class="mce-path-item">div</div>
<div class="mce-divider">»</div>
<div id="mce_35-1" class="mce-path-item mce-last">h3</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<table id="post-status-info">
<tbody>
<tr>
<td id="wp-word-count">Word count: <span class="word-count">1233</span></td>
<td class="autosave-info"><span class="autosave-message">Draft saved at 5:18:17 pm.</span></td>
<td id="content-resize-handle" class="hide-if-no-js"></td>
</tr>
</tbody>
</table>
</div>
</div>
<div id="postbox-container-1" class="postbox-container">
<div id="side-sortables" class="meta-box-sortables ui-sortable">
<div id="submitdiv" class="postbox ">
<div class="handlediv" title="Click to toggle"></div>
</div>
</div>
</div>
<div id="submitpost" class="submitbox"></div>
<div id="minor-publishing">
<div id="minor-publishing-actions">
<div id="save-action"></div>
<div id="preview-action"><a id="post-preview" class="preview button" href="http://www.emblogic.com/blog/?p=13719&amp;preview=true" target="wp-preview-13719">Preview</a></div>
<div class="clear"></div>
</div>
<div id="misc-publishing-actions">
<div class="misc-pub-section misc-pub-post-status"><label for="post_status">Status:</label> <span id="post-status-display"> Draft</span> <a class="edit-post-status hide-if-no-js" href="http://www.emblogic.com/blog/wp-admin/post-new.php#post_status">Edit <span class="screen-reader-text">Edit status</span></a></div>
<div id="visibility" class="misc-pub-section misc-pub-visibility">Visibility: <span id="post-visibility-display">Public</span> <a class="edit-visibility hide-if-no-js" href="http://www.emblogic.com/blog/wp-admin/post-new.php#visibility">Edit <span class="screen-reader-text">Edit visibility</span></a></div>
<div class="misc-pub-section curtime misc-pub-curtime"><span id="timestamp"> Publish <b>immediately</b></span> <a class="edit-timestamp hide-if-no-js" href="http://www.emblogic.com/blog/wp-admin/post-new.php#edit_timestamp">Edit <span class="screen-reader-text">Edit date and time</span></a></div>
</div>
<div class="clear"></div>
</div>
<div id="major-publishing-actions">
<div id="delete-action"><a class="submitdelete deletion" href="http://www.emblogic.com/blog/wp-admin/post.php?post=13719&amp;action=trash&amp;_wpnonce=a2ddd25f78">Move to Trash</a></div>
<div id="publishing-action"></div>
</div>
<div id="submitdiv" class="postbox "></div>
<div id="categorydiv" class="postbox ">
<div class="handlediv" title="Click to toggle"></div>
</div>
<div id="categorydiv" class="postbox ">
<div class="inside">
<div id="taxonomy-category" class="categorydiv">
<ul id="category-tabs" class="category-tabs">
<li class="tabs"><a href="http://www.emblogic.com/blog/wp-admin/post-new.php#category-all">All Categories</a></li>
<li class="hide-if-no-js"><a href="http://www.emblogic.com/blog/wp-admin/post-new.php#category-pop">Most Used</a></li>
</ul>
<div id="category-all" class="tabs-panel">
<ul id="categorychecklist" class="categorychecklist form-no-clear">
<li id="category-7"><label class="selectit"> ARM Embedded Processors</label></li>
<li id="category-11" class="popular-category"><label class="selectit"> Data Structures with C</label></li>
<li id="category-18" class="popular-category"><label class="selectit"> Device Drivers</label>
<ul class="children">
<li id="category-14"><label class="selectit"> Block Driver</label></li>
<li id="category-13" class="popular-category"><label class="selectit"> Character Driver</label></li>
<li id="category-17"><label class="selectit"> Network Driver</label></li>
<li id="category-15" class="popular-category"><label class="selectit"> Parallel Port Driver</label></li>
<li id="category-16"><label class="selectit"> Serial Port Driver</label></li>
<li id="category-65"><label class="selectit"> USB Driver</label></li>
</ul>
</li>
<li id="category-37"><label class="selectit"> Embedded Controllers</label></li>
<li id="category-12" class="popular-category"><label class="selectit"> Embedded Linux</label></li>
<li id="category-102"><label class="selectit"> Jackpot</label></li>
<li id="category-4" class="popular-category"><label class="selectit"> Linux Internals and System Programming</label></li>
<li id="category-104"><label class="selectit"> Project 00: Linux System / Network Administration</label></li>
<li id="category-103" class="popular-category"><label class="selectit"> Project 03: Client Server Communication using Linux and IPC</label></li>
<li id="category-83" class="popular-category"><label class="selectit"> Project 04: FTP based Client Server using Threads and Sockets</label></li>
<li id="category-81"><label class="selectit"> Project 11: A Character Device Drivers Based Project</label></li>
<li id="category-77"><label class="selectit"> Project 1: A Linux Administration based Project</label></li>
<li id="category-79" class="popular-category"><label class="selectit"> Project 2: Multiple Data Compression and Encryption</label></li>
<li id="category-80"><label class="selectit"> Project 6: Client Server using Inter Process Communication Mechanism</label></li>
<li id="category-84"><label class="selectit"> Project 9: Embedded Linux on ARM</label></li>
<li id="category-27"><label class="selectit"> Project Management Tools</label></li>
<li id="category-10"><label class="selectit"> Shell Scripts</label></li>
<li id="category-1" class="popular-category"><label class="selectit"> Uncategorized</label></li>
<li id="category-3"><label class="selectit"> Word from Admin</label></li>
</ul>
</div>
</div>
</div>
</div>
<div id="tagsdiv-post_tag" class="postbox ">
<div class="handlediv" title="Click to toggle"></div>
</div>
<div id="post_tag" class="tagsdiv">
<div class="jaxtag">
<div class="ajaxtag hide-if-no-js"><label class="screen-reader-text" for="new-tag-post_tag">Tags</label></p>
<div class="taghint"></div>
</div>
</div>
</div>
<div id="tagsdiv-post_tag" class="postbox ">
<div class="inside">
<div id="post_tag" class="tagsdiv">
<div class="jaxtag">
<p class="howto">Separate tags with commas</p>
</div>
<div class="tagchecklist"></div>
</div>
<p class="hide-if-no-js"><a id="link-post_tag" class="tagcloud-link" href="http://www.emblogic.com/blog/wp-admin/post-new.php#titlediv">Choose from the most used tags</a></p>
</div>
</div>
<div id="postimagediv" class="postbox ">
<div class="handlediv" title="Click to toggle"></div>
</div>
<div id="post-body" class="metabox-holder columns-2">
<div id="postbox-container-1" class="postbox-container">
<div id="side-sortables" class="meta-box-sortables ui-sortable">
<div id="postimagediv" class="postbox ">
<div class="inside">
<p class="hide-if-no-js"><a id="set-post-thumbnail" class="thickbox" title="Set featured image" href="http://www.emblogic.com/blog/wp-admin/media-upload.php?post_id=13719&amp;type=image&amp;TB_iframe=1">Set featured image</a></p>
</div>
</div>
</div>
</div>
<div id="postbox-container-2" class="postbox-container"></div>
</div>
<p><a class="fbx-link" href="http://micrium.com/wp-content/uploads/2014/03/Web-and-IoT-Stacks.png"><img class="size-full wp-image-5074" src="http://micrium.com/wp-content/uploads/2014/03/Web-and-IoT-Stacks.png" alt="Comparison of Web and IoT protocol stacks" width="564" height="425" /></a></p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>https://www.emblogic.com/blog/12/embedded-systems-and-internet-of-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
