Difference between revisions of "NAND flash boot rootfs"

From ElphelWiki
Jump to: navigation, search
Line 1: Line 1:
==Reflash factory image==
+
==<font color="blue">Notes</font>==
===Notes===
+
* Overwrite the corrupt flash partition or update
* Will overwrite software/firmware or corrupt flash partition
 
 
* To update u-boot images, device tree and kernel - booting from micro SD card is not required.
 
* To update u-boot images, device tree and kernel - booting from micro SD card is not required.
 
* To update rootfs - boot from micro SD card otherwise a mounted flash partition will be rewritten, get corrupt and the camera might not boot - to recover, boot from micro SD card and reflash rootfs partition.  
 
* To update rootfs - boot from micro SD card otherwise a mounted flash partition will be rewritten, get corrupt and the camera might not boot - to recover, boot from micro SD card and reflash rootfs partition.  
Line 9: Line 8:
 
* Considering to store u-boot (probably not, because 192K-max-boot.bin might not fit UBIFS driver), device tree and kernel on UBIFS partitions in future. SPL has to be either on the NAND flash or MMC
 
* Considering to store u-boot (probably not, because 192K-max-boot.bin might not fit UBIFS driver), device tree and kernel on UBIFS partitions in future. SPL has to be either on the NAND flash or MMC
  
===Instructions===
+
==<font color="blue">Writing file to NAND flash</font>==
 
* Use files from '''elphel393/bootable-images/elphel393/nand/'''
 
* Use files from '''elphel393/bootable-images/elphel393/nand/'''
 
** '''boot.bin'''
 
** '''boot.bin'''
Line 17: Line 16:
 
** '''rootfs.ubi''' or '''rootfs.ubifs'''
 
** '''rootfs.ubi''' or '''rootfs.ubifs'''
  
====Option 1: web browser====
+
===Option 1: web browser===
 
* Boot the camera from the micro SD card (<font color='red'>important for rootfs update</font>)
 
* Boot the camera from the micro SD card (<font color='red'>important for rootfs update</font>)
 
* Go to the http://192.168.0.9/update_software.html
 
* Go to the http://192.168.0.9/update_software.html
Line 23: Line 22:
 
* Verify-button, download backup then Flash-button
 
* Verify-button, download backup then Flash-button
  
====Option 2: command line====
+
===Option 2: command line===
 
* Boot the camera from the micro SD card (<font color='red'>important for rootfs update</font>)
 
* Boot the camera from the micro SD card (<font color='red'>important for rootfs update</font>)
 
* Copy file to the camera, example from the PC terminal:
 
* Copy file to the camera, example from the PC terminal:
Line 86: Line 85:
 
  nandwrite -n /dev/mtd0 -p boot.bin
 
  nandwrite -n /dev/mtd0 -p boot.bin
 
</font>
 
</font>
 +
 +
==<font color="blue">Boot</font>==
 +
* Make sure the recovery card is not inserted (regular card can stay)
 +
* Power cycle
  
 
[[Category:Elphel393]]
 
[[Category:Elphel393]]

Revision as of 17:26, 16 December 2016

Notes

  • Overwrite the corrupt flash partition or update
  • To update u-boot images, device tree and kernel - booting from micro SD card is not required.
  • To update rootfs - boot from micro SD card otherwise a mounted flash partition will be rewritten, get corrupt and the camera might not boot - to recover, boot from micro SD card and reflash rootfs partition.
  • boot.bin, u-boot-dtb.img - most likely won't need updating at all. Only if their partitions get corrupt
    • As Zynq's BootROM performs 32KB jumps within the first 128MiB of flash in the search of a boot.bin header with a correct checksum it is possible to flash a few backup images to the 1st flash partition (mtd0) in the device tree. The partition size is 1MB, boot.bin size is normally around 100KB (<192KB - Zynq's OCM requirement)
  • Considering to store u-boot (probably not, because 192K-max-boot.bin might not fit UBIFS driver), device tree and kernel on UBIFS partitions in future. SPL has to be either on the NAND flash or MMC

Writing file to NAND flash

  • Use files from elphel393/bootable-images/elphel393/nand/
    • boot.bin
    • u-boot-dtb.img
    • devicetree.dtb
    • uImage
    • rootfs.ubi or rootfs.ubifs

Option 1: web browser

  • Boot the camera from the micro SD card (important for rootfs update)
  • Go to the http://192.168.0.9/update_software.html
  • Upload uImage and rootfs.ubi
  • Verify-button, download backup then Flash-button

Option 2: command line

  • Boot the camera from the micro SD card (important for rootfs update)
  • Copy file to the camera, example from the PC terminal:
$ scp boot.bin u-boot-dtb.img devicetree.dtb uImage rootfs.ubi root@192.168.0.9:/<path-to-image-files>/
  • From the ssh session (ssh root@192.168.0.9) reflash what needs an update:
    • Reflash rootfs (rootfs.ubi, /dev/mtd4) (radical)

cd <path-to-image-files>
flash_unlock /dev/mtd4
flash_erase /dev/mtd4 0 2048
ubiformat /dev/mtd4 -f rootfs.ubi -s 2048 -O 2048

OR

    • update rootfs (rootfs.ubifs, /dev/mtd4) (recommended)

flash_unlock /dev/mtd4
ubiattach /dev/ubi_ctrl -m 4
# NOT NEEDED: ubimkvol /dev/ubi0 -N elphel393-rootfs -s 256MiB
ubiupdatevol /dev/ubi0_0 rootfs.ubifs
# 
# read: http://www.linux-mtd.infradead.org/faq/ubifs.html
# read: http://free-electrons.com/blog/creating-flashing-ubi-ubifs-images/
# read: http://www.linux-mtd.infradead.org/doc/ubi.html#L_volupdate
# read: http://comments.gmane.org/gmane.linux.drivers.mtd/39415

    • Reflash kernel (uImage, /dev/mtd3)

cd <path-to-image-files>
# uImage
# mtd3 is 16M (128 eraseblocks,128K = 1 block, there are 64 pages of 2048 per block)
flash_unlock /dev/mtd3
flash_erase /dev/mtd3 0 128
nandwrite -n /dev/mtd3 -p uImage

    • Reflash devicetree (devicetree.dtb, /dev/mtd2)

cd <path-to-image-files>
# u-boot-dtb.img
# mtd2 is 1M (8 eraseblocks,128K = 1 block, there are 64 pages of 2048 per block)
flash_unlock /dev/mtd2
flash_erase /dev/mtd2 0 8
nandwrite -n /dev/mtd2 -p devicetree.dtb

    • Reflash u-boot (u-boot-dtb.img, /dev/mtd1)

cd <path-to-image-files>
# u-boot-dtb.img
# mtd1 is 4M (32 eraseblocks,128K = 1 block, there are 64 pages of 2048 per block)
# erase only the 1st 8 blocks as image is <1M, leave unused area for backup copies
flash_unlock /dev/mtd1
flash_erase /dev/mtd1 0 8
nandwrite -n /dev/mtd1 -p u-boot-dtb.img

    • Reflash SPL (boot.bin, /dev/mtd0)

cd <path-to-image-files>
# boot.bin
# mtd0 is 1MB (8 eraseblocks,128K = 1 block, there are 64 pages of 2048 per block)
# erase only first 2 blocks, other block are reserved for copies
flash_unlock /dev/mtd0
flash_erase /dev/mtd0 0 2
nandwrite -n /dev/mtd0 -p boot.bin

Boot

  • Make sure the recovery card is not inserted (regular card can stay)
  • Power cycle