U-Boot UMS on APF & OPOS: Difference between revisions

From ArmadeusWiki
mNo edit summary
Line 1: Line 1:
This page gather instructions for using U-Boot's USB Mass Storage gadget mode (or UMS) usage on [[APF6]] and [[OPOS6UL]]. This mode allows you to flash rootfs images bigger than the available module RAM, ex: > 200MBytes on the [[OPOS6UL]]. 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.
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.  
* First, keep your USB debug cable and connect a second USB cable on [[APF6_Dev]] or [[OPOS6ULDev]]'s OTG port.  

Revision as of 17:21, 27 February 2018

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 /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