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

loads command
=============

Synopsis
--------

::

    loads [offset [baud]]

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

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

offset
    offset added to the addresses in the S-record file

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

Example
-------

As example file to be transferred we use a script printing 'hello s-record'.
Here are the commands to create the S-record file:

.. code-block:: bash

    $ echo 'echo hello s-record' > script.txt
    $ mkimage -T script -d script.txt script.scr
    Image Name:
    Created:      Sun Jun 25 10:35:02 2023
    Image Type:   PowerPC Linux Script (gzip compressed)
    Data Size:    28 Bytes = 0.03 KiB = 0.00 MiB
    Load Address: 00000000
    Entry Point:  00000000
    Contents:
       Image 0: 20 Bytes = 0.02 KiB = 0.00 MiB
    $ srec_cat script.scr -binary -CRLF -Output script.srec
    $ echo -e "S9030000FC\r" >> script.srec
    $ cat script.srec
    S0220000687474703A2F2F737265636F72642E736F75726365666F7267652E6E65742F1D
    S1230000270519566D773EB6649815E30000001700000000000000003DE3D97005070601E2
    S12300200000000000000000000000000000000000000000000000000000000000000000BC
    S11A00400000000F0000000068656C6C6F20732D7265636F72640A39
    S5030003F9
    S9030000FC
    $

The load address in the first S1 record is 0x0000.

The terminal emulation program picocom is invoked with *cat* as the send
command to transfer the file.

.. code-block::

    picocom --send-cmd 'cat' --baud 115200 /dev/ttyUSB0

After entering the *loads* command the key sequence <CTRL-A><CTRL-S> is used to
let picocom prompt for the file name. Picocom invokes the program *cat* for the
file transfer. The loaded script is executed using the *source* command.

.. code-block::

    => loads $scriptaddr
    ## Ready for S-Record download ...

    *** file: script.srec
    $ cat script.srec

    *** exit status: 0 ***

    ## First Load Addr = 0x4FC00000
    ## Last  Load Addr = 0x4FC0005B
    ## Total Size      = 0x0000005C = 92 Bytes
    ## Start Addr      = 0x00000000
    => source $scriptaddr
    ## Executing script at 4fc00000
    hello s-record
    =>

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

The command is only available if CONFIG_CMD_LOADS=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.
