[FE training-materials-updates] Bootloader lab fixes and updates

Michael Opdenacker michael.opdenacker at free-electrons.com
Wed Dec 3 10:34:06 CET 2014


Repository : git://git.free-electrons.com/training-materials.git

On branch  : master
Link       : http://git.free-electrons.com/training-materials/commit/?id=4627402551e2b1cc8bea88183561c0af5761befc

>---------------------------------------------------------------

commit 4627402551e2b1cc8bea88183561c0af5761befc
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Dec 3 10:31:25 2014 +0100

    Bootloader lab fixes and updates
    
    - In particular updates for 14.04
    - Also fix the at91bootstrap version instead of taking
      the latest one (risky)
    
    Signed-off-by: Michael Opdenacker <michael.opdenacker at free-electrons.com>


>---------------------------------------------------------------

4627402551e2b1cc8bea88183561c0af5761befc
 labs/sysdev-u-boot/sysdev-u-boot.tex | 94 +++++++++++++++++++++++-------------
 1 file changed, 60 insertions(+), 34 deletions(-)

diff --git a/labs/sysdev-u-boot/sysdev-u-boot.tex b/labs/sysdev-u-boot/sysdev-u-boot.tex
index 56aff54..07cd034 100644
--- a/labs/sysdev-u-boot/sysdev-u-boot.tex
+++ b/labs/sysdev-u-boot/sysdev-u-boot.tex
@@ -23,9 +23,9 @@ very specific to the hardware platform. There are usually two cases:
 The Xplained board, which uses the SAMA5D3 SoCs, falls into the second
 category. The monitor integrated in the ROM reads the MMC/SD card to
 search for a valid bootloader before looking at the internal NAND
-flash for a bootloader. Whenever nothing's available, it will operate
-in a fallback mode, that will allow to use an external tool through
-USB to reflash some bootloader. Therefore, either by using an MMC/SD
+flash for a bootloader. In case nothing is available, it will operate
+in a fallback mode, that will allow to use an external tool
+to reflash some bootloader through USB. Therefore, either by using an MMC/SD
 card or that fallback mode, we can start up a SAMA5D3-based board
 without having anything installed on it.
 
@@ -34,16 +34,26 @@ without having anything installed on it.
 Go to the \code{~/embedded-linux-labs/bootloader} directory.
 
 If you are using a 64 bit installation of Ubuntu, install support for
-executables built with a 32 bit C library:
+some 32 bit libraries:
 
 \begin{verbatim}
-sudo apt-get install ia32-libs
+sudo dpkg --add-architecture i386
+sudo apt-get update
+sudo apt-get install libxss1:i386 libxft2:i386
+\end{verbatim}
+
+Otherwise, you just need to install the below libraries:
+
+\begin{verbatim}
+sudo apt-get install libxss1 libxft2
 \end{verbatim}
 
 We're going to use that fallback mode, and its associated tool,
 \code{sam-ba}.
 
-We first need to download this tool, from Atmel's website.
+We first need to download this tool, from Atmel's website
+\footnote{In case this website is down, you can also find this
+tool on \url{http://free-electrons.com/labs/tools/}.}.
 
 \begin{verbatim}
 wget http://www.atmel.com/Images/sam-ba_2.12.zip
@@ -77,8 +87,14 @@ sudo adduser $USER dialout
 You need to log out and in again for the group change to be effective.
 
 Run \code{picocom -b 115200 /dev/ttyUSB0}, to start serial
-communication on \code{/dev/ttyUSB0}, with a baudrate of 115200. If
-you wish to exit \code{picocom}, press \code{[Ctrl][a]} followed by
+communication on \code{/dev/ttyUSB0}, with a baudrate of 115200.
+
+You can now power-up the board by connecting the micro-USB cable to 
+the board, and to your PC at the other end. If a system was previously
+installed on the board, you should be able to interact with it
+through the serial line.
+
+If you wish to exit \code{picocom}, press \code{[Ctrl][a]} followed by
 \code{[Ctrl][x]}.
 
 \section{AT91Bootstrap Setup}
@@ -110,8 +126,9 @@ The first item to compile is AT91Bootstrap that you can fetch from
 Atmel's github account:
 
 \begin{verbatim}
-git clone git://github.com/linux4sam/at91bootstrap.git -b at91bootstrap-3.x
+git clone git://github.com/linux4sam/at91bootstrap.git
 cd at91bootstrap
+git checkout v3.7.1
 \end{verbatim}
 
 Then, we first need to configure the build system for our setup. We're
@@ -123,12 +140,12 @@ going to need a few pieces of information for this:
 \item What component you want AT91Boostrap to load
 \end{itemize}
 
-You can get the list of the supported board by listing the
-\code{board} directory. You'll see that in each of these folder, we
+You can get the list of the supported boards by listing the
+\code{board} directory. You'll see that in each of these folders, we
 have a bunch of \code{defconfig} files, that are the supported
-combinations. In our case, we will load U-Boot, from the NAND.
+combinations. In our case, we will load U-Boot, from NAND flash.
 
-Then, you've found the right defconfig, load it using
+Then, you've found the right \code{defconfig}, load it using
 \code{make <defconfig_name>}, and you can start the compilation using
 \code{make}\footnote{You can speed up the compiling by using the
   \code{-jX} option with \code{make}, where X is the number of
@@ -142,8 +159,10 @@ At the end of the compilation, you should have a file called
 
 In order to flash it, we need to do a few things. First, remove the
 \code{NAND CS} jumper on the board. It's next to the pin header
-closest to the Micro-USB plug. Reset the board, and put the jumper
-back. On the serial port, you should see \code{RomBoot}.
+closest to the Micro-USB plug. Now, press the \code{RESET} button.
+On the serial port, you should see \code{RomBoot}.
+
+Put the jumper back.
 
 Then, start \code{sam-ba} as root. You'll get a small window. Select
 the \code{ttyACM0} connection, and the \code{at91sama5d3x-ek} board. Hit
@@ -151,12 +170,14 @@ the \code{ttyACM0} connection, and the \code{at91sama5d3x-ek} board. Hit
 
 You need to:
 \begin{itemize}
-\item Hit the NANDFlash tab
-\item In the scripts choices, select \code{Enable NandFlash} and hit \code{Execute}
+\item Hit the \code{NANDFlash} tab
+\item In the \code{Scripts} choices, select \code{Enable NandFlash}
+      and hit \code{Execute}
 \item Select \code{Erase All}, and execute the command
-\item Then, select \code{Enable OS PMECC} parameters in order to
-  change the NAND ECC parameters to what RomBOOT expects. Change the
-  number of ECC bits to 4, and the ECC offset to 36.
+\item Then, select and execute \code{Enable OS PMECC parameters}
+  in order to change the NAND ECC parameters to what RomBOOT expects.
+  Change the number of ECC bits to \code{4}, and the ECC offset to
+  \code{36}.
 \item Finally, send the image we just compiled using the command
   \code{Send Boot File}
 \end{itemize}
@@ -179,10 +200,12 @@ needs a patch to work properly. Apply the patch named
 \code{0001-mtd-atmel_nand-Disable-subpage-NAND-write-when-using.patch},
 by doing:
 
+{\small
 \begin{verbatim}
 cd u-boot-2014.07/
 cat ../data/0001-mtd-atmel_nand-Disable-subpage-NAND-write-when-using.patch | patch -p1
 \end{verbatim}
+}
 
 Get an understanding of its configuration and compilation steps by
 reading the \code{README} file, and specifically the {\em Building the
@@ -196,7 +219,7 @@ Basically, you need to:
 
 \item run \code{make <NAME>_config}, where \code{<NAME>} is the name
   of your board as declared in the \code{boards.cfg} file. There are
-  two flavors of the Xplained: one to run from the SD card
+  two flavors of the Xplained configuration: one to run from the SD card
   (\code{sama5d3_xplained_mmc}) and one to run from the NAND flash
   (\code{sama5d3_xplained_nandflash}). Since we're going to boot on
   the NAND, use the latter. Note that for our platform, both these
@@ -212,13 +235,15 @@ Now, in sam-ba, in the \code{Send File Name} field, set the path to
 the \code{u-boot.bin} that was just compiled, and set the address to
 \code{0x40000}. Click on the \code{Send File} button.
 
+You can now exist sam-ba.
+
 \section{Testing U-Boot}
 
 Reset the board and check that it boots your new bootloaders. You can
 verify this by checking the build dates:
 
 \begin{verbatim}
-AT91Bootstrap 3.6.2-00090-g1e8fd41ce714 (mercredi 4 juin 2014, 11:08:41 (UTC+0200))
+AT91Bootstrap 3.7.1 (mercredi 3 décembre 2014, 11:08:41 (UTC+0100))
 
 NAND: ONFI flash detected
 NAND: Manufacturer ID: 0x2c Chip ID: 0x32
@@ -228,7 +253,7 @@ NAND: Image: Copy 0x80000 bytes from 0x40000 to 0x26f00000
 NAND: Done to load image
 
 
-U-Boot 2014.07 (Aug 26 2014 - 09:47:25)
+U-Boot 2014.07 (Dec 03 2014 - 09:47:25)
 
 CPU: SAMA5D36
 Crystal frequency:       12 MHz
@@ -286,10 +311,10 @@ Select the new {\em wired network connection}:
 \end{center}
 
 In the \code{IPv4 Settings} tab, press the \code{Add} button
-and make the interface use a static IP
-address, like \code{192.168.0.1} (of course, make sure that this
-address belongs to a separate network segment from the one of the main
-company network).
+and then choose the \code{Manual} method to make the interface use
+a static IP address, like \code{192.168.0.1} (of course, make sure
+that this address belongs to a separate network segment from the one
+of the main company network).
 
 \begin{center}
 \includegraphics[width=8cm]{labs/sysdev-u-boot/network-config-3.png}
@@ -329,10 +354,10 @@ To make these settings permanent, save the environment:
 saveenv
 \end{verbatim}
 
-Now switch your board off and on again\footnote{Power cycling your
-  board is needed to make your \code{ethaddr} permanent, for obscure
-  reasons. If you don't, U-boot will complain that \code{ethaddr} is not
-  set.}.
+Now reset your board \footnote{Resetting your board is needed to
+make your \code{ethaddr} permanent, for obscure reasons. If you
+don't, U-boot will complain that \code{ethaddr} is not
+set.}.
 
 You can then test the TFTP connection. First, put a small text file in
 the directory exported through TFTP on your development
@@ -342,9 +367,10 @@ workstation. Then, from U-Boot, do:
 tftp 0x22000000 textfile.txt
 \end{verbatim}
 
-{\bf Caution: known issue in Ubuntu 12.04 and later}:
-if this command doesn't work, you may have to stop the server
-and start it again every time you boot your workstation:
+{\bf Caution: known issue in Ubuntu 12.04 and later (still present
+in Ubuntu 14.04}: if this command doesn't work, you may have to
+stop the server and start it again every time you boot your
+workstation:
 
 \begin{verbatim}
 sudo service tftpd-hpa restart



More information about the training-materials-updates mailing list