Provided by: tegrarcm_1.7-1build1_amd64 bug

NAME

       tegrarcm - tegra firmware download utility

SYNOPSIS

       tegrarcm [ options ]

DESCRIPTION

       This  program  is  used  to  send  code  to  a Tegra device in recovery mode.  It does not
       supported locked devices with an encrypted boot key, only open devices such as the ventana
       or  cardhu  reference boards.  It is not capable of flashing firmware to a device, but can
       be used to download firmware that is then capable of flashing.  For  example  in  ChromeOS
       tegrarcm  is  used to download a special build of u-boot to the target Tegra device with a
       payload that it then flashes to the boot device.

   Platforms supportedTegra20Tegra30Tegra114Tegra124

   How to use
       —      Connect a USB cable from your development system to your Tegra  device.   You  will
              either need a USB A to A cable or A to micro B depending on the target board.

       —      Find  the appropriate BCT file for your board.  For reference boards, BCT files can
              be found in the L4T distribution from NVIDIA.

       —      Build some firmware for your device (such as u-boot)

       —      Run tegrarcm to download the firmware

COMMANDS

       readbct
              Read the BCT from the target device and write it to bctfile.

OPTIONS

       --bct bctfile
              Specify the BCT file to download to the Tegra device.  This  file  contains  memory
              configuation  information  for  the  board.   BCT files can be obtained through the
              NVIDIA L4T distribution or generated with cbootimage  and  a  proper  configuration
              file.

       --bootloader blfile
              Specify  the bootloader file to download to the Tegra device.  This is the firmware
              file that will be downloaded and executed.

       --loadaddr loadaddr
              Specify the address the bootloader will be loaded at.  This should be specified  in
              hex  and  is  typically  0x108000 for a Tegra20 device or 0x80108000 for a Tegra30,
              Tegra114, or Tegra124 device.

       --entryaddr entryaddr
              Specify the entry address that control will be passed  to  after  the  firmware  is
              loaded.   This should be specified in hex.  If this option is omitted it is assumed
              to be the same as the load address.

       --version
              Print the version number and exit.

       --help Print help text and exit.

       --miniloader mlfile
              Read the miniloader from the specified file instead of using the built-in one.

       --miniloader_entry mlentry
              Specify the entry address of the miniloader.

       --usb-port-path path
              Specify the physical USB port path of the Tegra device to control.

USB PORT PATH

       By default, tegrarcm operates on the first USB applicable device it finds.   In  a  system
       that  contains  multiple Tegra devices, the user may wish to specify which device tegrarcm
       should operate upon. The --usb-port-path option allows this, and in a manner that is  most
       immune to the set of attached USB devices varying.

       Note  that  the  USB port path is associated with a physical USB port on a particular hub.
       This value will vary if you physically re-organize your USB connections. This  feature  is
       still useful even if your USB topology changes, providing you have some other mechanism to
       differentiate attached devices. For  example,  you  could  use  a  wrapper  script  around
       tegrarcm  that  identifies  the  appropriate  device  by  other  means, then automatically
       calculates the USB port path using the procedures below, and passes the value to tegrarcm.

       To determine the USB port path of a device, you must plug it in and find the  current  USB
       bus  and  USB  device number of the device, then map that to the USB port path. Simply run
       lsusb to find the current USB bus and device number. If you have multiple  NVIDIA  devices
       attached,  you  may need to unplug and replug the Tegra device to ensure you know which is
       which (all while not changing the state of any other USB  devices  so  you  don't  confuse
       yourself).

       $ lsusb
       Bus 003 Device 039: ID 0955:7721 NVidia Corp.
       Bus 003 Device 045: ID 0955:7140 NVidia Corp.
       fi

       Then, to determine the USB port path, do one of:

       1.

              Execute udevmadm on the USB device, and look for the DEVPATH entry. The
              final component in the path is the USB port path:

              $ udevadm info /dev/bus/usb/003/045
              P: /devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10.4
              N: bus/usb/003/045
              E: BUSNUM=003
              E: DEVNUM=045
              E: DEVPATH=/devices/pci0000:00/0000:00:14.0/usb3/3-10/3-10.4

       2.

              Look  at  all  the  sub-directories  of  /sys/bus/usb/devices/* that do not contain
              either ":" or "usb". Each of these will contain a busnum and devnum file. Find  the
              directory which matches the lsusb output, and use its name:

              $ cat /sys/bus/usb/devices/3-10.4/busnum
              3
              $ cat /sys/bus/usb/devices/3-10.4/devnum
              45

              Alternatively,  you  may  already have udev rules that create a device node symlink
              for the device (after some specific identification algorithm). In  that  case,  you
              can  search  the  udev  output  for  MAJOR/MINOR  values, or /sys/bus/usb/devices/*
              directories for "dev" files, that match the device node the symlink points to.

              Once the port path is known, this value will not vary unless your  USB  connections
              are physically changed, so you can use it over and over without repeating the steps
              above.

EXAMPLES

       To download u-boot firmware to a Tegra20 seaboard:

       $ sudo tegrarcm --bct seaboard.bct --bootloader u-boot.bin --loadaddr 0x108000
       bct file: seaboard.bct
       booloader file: u-boot.bin
       load addr 0x108000
       entry addr 0x108000
       device id: 0x7820
       uid:  0x33c20c0413fb217
       RCM version: 2.1
       downloading miniloader to target...
       miniloader downloaded successfully
       Chip UID:                0x33c20c0413fb217
       Chip ID:                 0x20
       Chip ID Major Version:   0x1
       Chip ID Minor Version:   0x4
       Chip SKU:                0x18 (t25)
       Boot ROM Version:        0x1
       Boot Device:             0x3 (SPI)
       Operating Mode:          0x3 (developer mode)
       Device Config Strap:     0x0
       Device Config Fuse:      0x0
       SDRAM Config Strap:      0x0
       sending file: seaboard.bct
       - 4080/4080 bytes sent
       seaboard.bct sent successfully
       sending file: u-boot.bin
       - 268314/268314 bytes sent
       u-boot.bin sent successfully

       To read the BCT from a system:

       $ sudo tegrarcm --bct ventana.bct readbct
       bct file: ventana.bct
       device id: 0x7820
       reading BCT from system, writing to ventana.bct...done!

RETURN VALUE

       If any error occurs a non zero exit status is returned.

SEE ALSO

       cbootimage(1),

AUTHOR

       Allen Martin, <amartin@nvidia.com>