U-Boot UMS on APF & OPOS

From ArmadeusWiki
Jump to: navigation, search

This page gather instructions for using U-Boot's USB Mass Storage gadget mode (or UMS) usage on APF6 and OPOS6UL(NANO). This mode allows you to flash rootfs images bigger than the available module RAM, ex: > 200MBytes on the OPOS6UL(NANO). Indeed run update_rootfs script uses RAM to store images while uploading from TFTP, which can be short for big rootfs. UMS also allows you to backup your rootfs on your Host.

  • First, keep your USB debug cable and connect a second USB cable on APF6_Dev or OPOS6ULDev's OTG port.
  • Under U-Boot type:
BIOS> ums 0 mmc 0
UMS: disk start sector: 0x0, count: 0x760000
|
  • On your Host computer you should see the eMMC partition like a standard USB key.
$ dmesg | tail
[...]
[26828.348088] sd 13:0:0:0: [sdc] Mode Sense: 0f 00 00 00
[26828.348395] sd 13:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[26828.354177]  sdc: sdc1 sdc2
[26828.356782] sd 13:0:0:0: [sdc] Attached SCSI disk

Here the device is /dev/sdc and all partitions have been automounted by the Host:

[26830.002168] EXT4-fs (sdc1): mounting ext2 file system using the ext4 subsystem
[26830.054358] EXT4-fs (sdc2): mounting ext2 file system using the ext4 subsystem
[26830.078638] EXT4-fs (sdc2): warning: mounting unchecked fs, running e2fsck is recommended
[26830.114382] EXT4-fs (sdc2): mounted filesystem without journal. Opts: (null)
[26830.135564] EXT4-fs (sdc1): warning: mounting unchecked fs, running e2fsck is recommended
[26830.268450] EXT4-fs (sdc1): mounted filesystem without journal. Opts: (null)
Warning Warning: Before doing the following procedure, be sure that your device name is correct. You can erase all your Host datas if you do it wrong !!!
  • The rootfs is under the sdc2 and is named "ROOTFS". On your debian/ubuntu Host it might be auto-mounted under /media/usb1, if no other USB key is present on system and if you activated auto-mounting.
$ ls /media/usb1/
bin  boot  dev  etc  home  init  lib  lib32  linuxrc  lost+found  media  mnt  opt  proc  root  run  sbin  sys  tmp  usr  var
  • To flash entire rootfs, first erase all files on this partition:
$ sudo umount /media/usb1            (if partition is auto-mounted)
$ sudo mkfs.ext4 -L ROOTFS -O ^64bit,^metadata_csum,uninit_bg /dev/sdc2

Update your rootfs

  • Then, you have 2 methods to update your rootfs:
tar method dd method
  • Then mount it under an arbitrary directory:
$ sudo mkdir /tmp/rootfs
$ sudo mount /dev/sdc2 /tmp/rootfs
  • Untar the archive generated by your bsp (in buildroot/output/images/)
$ make shell_env
$ . armadeus_env.sh
$ sudo tar -xvf $ARMADEUS_ROOTFS_TAR -C /tmp/rootfs
  • then umount the filesystem:
$ sudo umount /tmp/rootfs/
$ sync
  • One alternative way to untaring is to use dd:
$ sudo dd if=/tftpboot/xxx-rootfs.ext4 of=/dev/sdc2

(replace xxx with the name of your module)

  • Once finished, you can kill the U-Boot's USB gadget process with a Ctrl-C:
BIOS> ums 0 mmc 0
UMS: disk start sector: 0x0, count: 0x760000
CTRL+C - Operation aborted
BIOS>

Backup your rootfs

$ sudo dd  if=/dev/sdc2 of=/home/xxx/rootfs_xxx.ext4       (takes time ;-) )
  • check if it succeed:
$ sudo mount -o loop /home/xxx/rootfs_xxx.ext4 /media/mmc/
$ ls /media/mmc/boot/

Troubleshots

  • UMS was reported not working on Windows 7/8 hosts with Virtual Box Ubuntu 15.04 emulated machines...

Links