Introduction
============

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, cardhu, or dalmore 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 supported:
-Tegra20
-Tegra30
-Tegra114

Usage
=====

- 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

Example 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

Submitting Changes
==================

To submit patches to this project, please use the following commands:

* git format-patch --subject-prefix="tegrarcm PATCH"

  Creates a patch file from your git commit.

* git send-email --to linux-tegra@vger.kernel.org *.patch

  Sends the patch by email to the Tegra mailing list.

Even though the primary upstream repository for this project is hosted on
github, contributions aren't accepted via github pull requests. Github pull
requests would bypass public code review on the project mailing list.

Patches should be signed off (include a signed-off-by line) to indicate your
acceptance of the code's license (see COPYING and the license header in each
file). See http://developercertificate.org/ for details of what signed-off-by
implies.

Changelog
=========

See git logs for complete list.

V1.8 - Support for production devices with PKC
     - Support for --gen-signed-msgs, --signed-msgs, and --download-signed-msgs
       options.
     - Support for --usb-timeout option.
     - Various man page and code cleanups.
     - Compilation fix when cryptopp isn't installed system-wide.
V1.7 - Documented patch submission process in this file
     - Added better USB debugging message
     - Require a specific minimum version of libusb
     - Added --usb-port-path cmdline option
V1.6 - Added support for ODM secure mode
V1.5 - Added support for RCM protocol version 40
     - Added Tegra124 support
     - Added support for readbct command
     - Added support for passing in miniloader from a file
V1.4 - Added --version command
     - Updated T114 miniloader to fix SPI boot problem
     - Added --help command to man page
V1.3 - Added some better error checking on return values
     - Fixed configure problem related to libcrypto++ and libpthread
       interaction
V1.2 - Added support for T114
     - Added man page
     - Removed autogenerated files from source code control
V1.1 - Added this README file and automake fixes from Mike Frysinger
 <vapier@gentoo.org>
V1.0 - Initial release
