Loading JFFS2 Images Onto a Board

From wiki.emacinc.com
Revision as of 14:55, 11 December 2013 by Mwelling (talk | contribs) (General Information)
Jump to: navigation, search
TODO: {{#todo:Add some text (11.06.13-08:24->MW+)(11.06.13-17:55->MD+)|Michael Welling|oe 4,oe 5,mw,md,InProgress}}

Background

Journalling Flash File System version 2 or JFFS2 is a log-structured file system used on flash memory devices. JFFS2 images are typically created on a development PC and deployed to an embedded target using TFTP commands from the target's bootloader. Deployment requires both serial and Ethernet connections to the board along with a TFTP server set up on your development machine.

For instructions on installing a TFTP server on your development PC: Installing TFTP server

For details on connecting to the serial port for an embedded target: Serial Connections

JFFS2 file systems are available for download on EMAC's FTP site. We really, really, really need to update our public FTP site

For instructions on creating a JFFS2 file system image see the following page: Creating JFFS2 Images

General Information

The section below provides links and useful information for performing JFFS2 programming using U-Boot and Redboot. The links provide pages with the generic procedures for programming EMAC modules based on the bootloader type.

Using U-Boot

Refer to the following pages for instructions on accessing U-Boot on the serial console:
U-Boot Overview
Loading Images with U-Boot

From the U-Boot prompt it is possible to set target's IP address dynamically using DHCP:

U-Boot> set autoload no
U-Boot> dhcp

The target's IP can also be manually set using the ipaddr environment variable as follows:

U-Boot> set ipaddr 192.168.0.101

Once the target IP is set, the TFTP server's IP address must be specified:

U-Boot> set serverip 192.168.0.100

The configuration of the bootloader environment can be checked at any time using the printenv command. As described in Loading Images with U-Boot, the JFFS2 image will then be loaded into SDRAM and programmed into flash. A full example will be provided below for the SoM-9G45.

Using Redboot

Refer to the following page for instructions on accessing Redboot on the serial console and loading images: Loading Images with RedBoot

Full Example Using U-Boot (SoM-9G45)

This sections provides a detailed example of loading a JFFS2 file system onto the SoM-9G45 and shows how U-Boot responds to the various commands when performed successfully.

U-Boot 2009.06-rc1-svn1786 (Nov 28 2011 - 17:22:29) 

EMAC Inc. SOM-9M10/G45M 

I2C:   ready
DRAM:  128 MB
NAND:  256 MiB
DataFlash:AT45DB321
Nb pages:   8192
Page Size:    528
Size= 4325376 bytes
Logical address: 0xC0000000
Area 0: C0000000 to C00041FF (RO) Bootstrap
Area 1: C0004200 to C00083FF      Environment
Area 2: C0008400 to C0041FFF (RO) U-Boot
Area 3: C0042000 to C0251FFF      Kernel
Area 4: C0252000 to C041FFFF      FS
In:    serial
Out:   serial
Err:   serial
Net:   macb0
macb0: Starting autonegotiation...
macb0: Autonegotiation complete
macb0: link up, 100Mbps full-duplex (lpa: 0xcde1)
Hit any key to stop autoboot:  0 
U-Boot> set autoload no 
U-Boot> dhcp
macb0: link up, 100Mbps full-duplex (lpa: 0xcde1)
BOOTP broadcast 1
DHCP client bound to address 10.0.2.221
U-Boot> set serverip 10.0.2.168
U-Boot> tftp 0x74000000 som-9g45m-rootfs.jffs2
macb0: link up, 100Mbps full-duplex (lpa: 0xcde1)
Using macb0 device
TFTP from server 10.0.2.168; our IP address is 10.0.2.221
Filename 'som-9g45m-rootfs.jffs2'.
Load address: 0x74000000
Loading: ################################################################# 
                                  ...
         ####################################################
done
Bytes transferred = 27473444 (1a33624 hex)
U-Boot> nand erase

NAND erase: device 0 whole chip
Skipping bad block at  0x03320000                                            
Skipping bad block at  0x079e0000                                            
Skipping bad block at  0x085e0000                                            
Erasing at 0xffe0000 -- 100% complete.
OK
U-Boot> nand write.jffs2 0x74000000 0x0 ${filesize}

NAND write: device 0 offset 0x0, size 0x1a33624
NAND write: Padding to page size... 
27473444 bytes written: OK
U-Boot>

Quick Reference (By Target Type)

This section provides a quick reference for programming various targets with a JFFS2 image. It is assumed that the Ethernet setup is performed as described above in the General Information section.

SoM-9260M

U-Boot> tftp 0x20000000 som-9260m-rootfs.jffs2
U-Boot> protect off all
U-Boot> erase 0x10400000 0x11ffffff
U-Boot> cp.b 0x20000000 0x10400000 ${filesize}

SoM-9G20M

U-Boot> tftp 0x20000000 som-9g20m-rootfs.jffs2
U-Boot> nand erase
U-Boot> nand write.jffs2 0x20000000 0x0 ${filesize}

SoM-9G45M

U-Boot> tftp 0x74000000 som-9g45m-rootfs.jffs2
U-Boot> nand erase
U-Boot> nand write.jffs2 0x74000000 0x0 ${filesize}

SoM-9M10M

U-Boot> tftp 0x74000000 som-9m10m-rootfs.jffs2
U-Boot> nand erase
U-Boot> nand write.jffs2 0x74000000 0x0 ${filesize}

SoM-9307M

Redboot> fis unlock -f 0x60000000 -l 0x1fdffff
Redboot> load -r -v -b 0x300000 -h 10.0.2.60 som-9307m-rootfs.jffs2
Redboot> fis create -b 0x300000 -l 0x1c00000 jffs2

IPAC-9302

Redboot> fis unlock -f 0x60000000 -l 0x1fdffff
Redboot> load -r -v -b 0x300000 -h 10.0.2.60 ipac-9302-rootfs.jffs2
Redboot> fis create -b 0x300000 -l 0x1c00000 jffs2