HOWTO Boot from NAND Flash on the Logic OMAP3530 Zoom

The Logic OMAP 3530Zoom requires LogicLoader and U-Boot in order to boot the Linux Kernel. Logic Loader does not support jffs2 so we have to burn the file system from U-Boot

Requirements

These instructions have been most recently tested against:

  • 2.6.32 Kernel
  • Logic Loader Version 2.4.13p1
  • A Logic PD Zoom board, with NOR and NAND flash populated.

LogicLoader versions older than 2.4.6 do not support flash file systems
You have to boot the board from NAND flash in order for these instructions to work

Linux MTD partitions

NOR flash partitions

0x00000000-0x00800000 : "NOR fs #1"

NAND flash partitions

0x00000000-0x00020000 : "NoLo-NAND"
0x00020000-0x00240000 : "Lboot-NAND"
0x00240000-0x0ffe0000 : "NAND fs #1"
0x0ffe0000-0x10000000 : "u-boot Env-NAND"

Burning the Images to NAND Flash

Erase the NOR partition and NAND partition

The CONFIG block is stored in the second block of NOR so place the partition after the CONFIG block

losh> erase /dev/flash0 B2 B62
losh> erase /dev/nand0 B18 B2030

Create U-Boot/Kernel partition

losh> config CREATE
losh> part-add /dev/flash0 a 2 62      

Copy U-Boot and kernel NOR boot partition

losh> mount emu /dev/flash0a /emu
losh> mount yaffs /emu /boot
losh> ifconfig sm0 dhcp
losh> cp /tftp/10.0.0.2:u-boot /boot/u-boot
losh> cp /tftp/10.0.0.2:uImage-2.6.28-ts-armv7l /boot/uImage

Configure LogicLoader to load and autoboot U-Boot (Note: the [size] you enter for the kernel_size variable should be the size returned by ls -l uImage... on your host)

losh> kernel_size= [size]
losh> echo "LOLOvideo-open 15 16; part-add /dev/flash0 a 2 62; mount emu /dev/flash0a /emu; mount yaffs /emu /boot; load raw 0x81000000 $kernel_size /boot/uImage; load elf /boot/u-boot; exec -" /dev/config

Reset the board to boot into U-Boot and set the U-Boot ecc to hw (Note: This does not work for all versions of U-Boot, but it will not hurt anything if it runs and fails.)

=> nand ecc hw

or in some versions in which the previous command is not implemented.

=> nandecc hw

Burn the jffs2 image to flash (The $jffs2_size variable will be the hex value of the size returned by the tftp command)

=> nand erase 0x240000
=> setenv serverip 10.0.0.2
=> setenv ipaddr 10.0.0.23
=> setenv ethaddr 00:08:ee:02:38:8d

=> tftp 0x81000000 rootfs.jffs2
=> nand write 0x81000000 0x240000 $jffs2_size

Configure U-boot to boot the kernel

=> setenv nandboot 'setenv bootargs display=${display} console=${consoledev},${baudrate} root=/dev/mtdblock3 rootfstype=jffs2 rw;bootm ${loadaddr}'
=> setenv bootcmd 'run nandboot'
=> saveenv

Reset the board and it should automatically boot into Linux

Additional Notes

To return to LoLo after writing the configuration script described above, power off your board, hold 'q' in the serial console window, and power the board.