Difference between revisions of "NAND flash boot rootfs"
From ElphelWiki
Line 1: | Line 1: | ||
− | == | + | ==<font color="blue">Notes</font>== |
− | + | * 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 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 | ||
− | === | + | ==<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=== | |
* 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=== | |
* 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
Contents
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