.. SPDX-License-Identifier: GPL-2.0+:

saves command
=============

Synopsis
--------

::

    saves [offset [size [baud]]]

Description
-----------

The *saves* command is used to transfer a file from the device via the serial
line using the Motorola S-record file format.

offset
    start address of memory area to save, defaults to 0x0

size
    size of memory area to save, defaults to 0x0

baud
    baud rate to use for upload. This parameter is only available if
    CONFIG_SYS_LOADS_BAUD_CHANGE=y

Example
-------

In the example the *screen* command is used to connect to the U-Boot serial
console.

In a first screen session a file is loaded from the SD-card and the *saves*
command is invoked. <CTRL+A><k> is used to kill the screen session.

A new screen session is started which logs the output to a file and the
<ENTER> key is hit to start the file output. <CTRL+A><k> is issued to kill the
screen session.

The log file is converted to a binary file using the *srec_cat* command.
A negative offset of -1337982976 (= -0x4c000000) is applied to compensate for
the offset used in the *saves* command.

.. code-block::

    $ screen /dev/ttyUSB0 115200
    => echo $scriptaddr
    0x4FC00000
    => load mmc 0:1 $scriptaddr boot.txt
    124 bytes read in 1 ms (121.1 KiB/s)
    => saves $scriptaddr $filesize
    ## Ready for S-Record upload, press ENTER to proceed ...
    Really kill this window [y/n]
    $ screen -Logfile out.srec -L /dev/ttyUSB0 115200
    S0030000FC
    S3154FC00000736574656E76206175746F6C6F616420AD
    S3154FC000106E6F0A646863700A6C6F6164206D6D633E
    S3154FC0002020303A3120246664745F616464725F72B3
    S3154FC00030206474620A6C6F6164206D6D6320303AC0
    S3154FC000403120246B65726E656C5F616464725F72DA
    S3154FC0005020736E702E6566690A626F6F74656669C6
    S3154FC0006020246B65726E656C5F616464725F7220CB
    S3114FC00070246664745F616464725F720A38
    S70500000000FA
    ## S-Record upload complete
    =>
    Really kill this window [y/n]
    $ srec_cat out.srec -offset -1337982976 -Output out.txt -binary 2>/dev/null
    $ cat out.txt
    setenv autoload no
    dhcp
    load mmc 0:1 $fdt_addr_r dtb
    load mmc 0:1 $kernel_addr_r snp.efi
    bootefi $kernel_addr_r $fdt_addr_r
    $

Configuration
-------------

The command is only available if CONFIG_CMD_SAVES=y. The parameter to set the
baud rate is only available if CONFIG_SYS_LOADS_BAUD_CHANGE=y

Return value
------------

The return value $? is 0 (true) on success, 1 (false) otherwise.
