<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:foaf="https://xmlns.com/foaf/0.1/" xmlns:og="https://ogp.me/ns#" xmlns:rdfs="https://www.w3.org/2000/01/rdf-schema#" xmlns:schema="https://schema.org/" xmlns:sioc="https://rdfs.org/sioc/ns#" xmlns:sioct="https://rdfs.org/sioc/types#" xmlns:skos="https://www.w3.org/2004/02/skos/core#" xmlns:xsd="https://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/u-boot">
  <channel>
    <title>U-Boot</title>
    <link>https://www.linuxjournal.com/tag/u-boot</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>A Handy U-Boot Trick</title>
  <link>https://www.linuxjournal.com/content/handy-u-boot-trick</link>
  <description>  &lt;div data-history-node-id="1210877" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/11551f1-t_0.jpg" width="250" height="241" alt="" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/bharath-bhushan-lohray" lang="" about="https://www.linuxjournal.com/users/bharath-bhushan-lohray" typeof="schema:Person" property="schema:name" datatype="" content="Bharath Bhushan Lohray" xml:lang=""&gt;Bharath Bhusha…&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
Embedded developers working on kernels or bare-metal programs often go
through several development cycles. Each time the developer modifies the
code, the code has to be compiled, the ELF (Executable and Linkable
Format)/kernel image has to be copied onto the SD card, and the card
then has to be transferred from the PC to the development board and
rebooted. In my experience as a developer, I found the last two steps to be a
major bottleneck. Even copying files to the fastest SD cards is slower
than copying files between hard drives and sometimes between computers
across the network. 
&lt;/p&gt;

&lt;p&gt;
Moreover, by frequently inserting and removing the SD
card from the slot, one incurs the risk of damaging the fragile connectors
on the development boards. Believe me! I lost a BeagleBoard by
accidentally applying too much force while holding the board and
pulling out the SD card. The pressure caused the I&lt;sup&gt;2&lt;/sup&gt;C
bus to fail. Because
the power management chip was controlled by I&lt;sup&gt;2&lt;/sup&gt;C, nothing other
than the serial terminal worked after that. Setting aside the cost of
the board, a board failure at a critical time during a project is
catastrophic if you do not have a backup board. 
&lt;/p&gt;

&lt;p&gt;
After losing the BeagleBoard, I
hit upon the idea to load my bare-metal code
over the LAN via bootp and TFTP and leave the board untouched. This
not only reduced the risk of mechanically damaging my board, but it also
improved on my turn-around times. I no longer needed to copy files
to the SD card and move it around.
&lt;/p&gt;

&lt;p&gt;
In this article, I present a brief introduction to U-Boot and then
describe the necessary configurations to set up a development
environment using DHCP and TFTP. The setup I present here will let
you deploy and test new builds quickly with no more than rebooting the
board. I use the &lt;a href="https://beagleboard.org/Products/BeagleBone%20Black"&gt;BeagleBone Black&lt;/a&gt; as the target
platform and Ubuntu as the development platform for my examples in this article. You may, however, use
the methods presented here to work with any board that uses U-Boot or
Barebox as its stage-2 bootloader.
&lt;/p&gt;

&lt;h3&gt;
U-Boot&lt;/h3&gt;

&lt;p&gt;
U-Boot is a popular bootloader used by many development platforms. It
supports multiple architectures including ARM, MIPS, AVR32, Nios,
Microblaze, 68K and x86. U-Boot has support for several filesystems as well,
including FAT32, ext2, ext3, ext4 and Cramfs built in to it. It also has a
shell where it interactively can take input from users, and it supports
scripting. It is distributed under the GPLv2 license. U-Boot is a stage-2 bootloader. 
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/handy-u-boot-trick" hreflang="und"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 16 Dec 2013 21:33:18 +0000</pubDate>
    <dc:creator>Bharath Bhushan Lohray</dc:creator>
    <guid isPermaLink="false">1210877 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
