.. zephyr:code-sample:: shell-devmem-load :name: devmem load shell :relevant-api: shell_api Load data to device memory using devmem shell cmd. Overview ******** This module adds a ``devmem load`` command that allows data to be loaded into device memory. The ``devmem load`` command is supported by every transport the Zephyr shell can run on. After invoking the command in the Zephyr shell, the device receives the transferred data and writes it to the specified memory address. The transfer ends when the user presses :kbd:`Ctrl+X` followed by :kbd:`Ctrl+Q`. Requirements ************ * A target configured with the shell interface, exposed through any of its :ref:`backends `. Building and Running ******************** The sample can be built for several platforms. Emulation Targets ================= The sample may run on emulation targets. The following commands build the application for the qemu_x86. .. zephyr-app-commands:: :zephyr-app: samples/subsys/shell/devmem_load :host-os: unix :board: qemu_x86 :goals: run :compact: After running the application, the console displays the shell interface, and shows the shell prompt, at which point the user may type in the ``devmem load`` command. .. note:: When using the ``devmem load`` command over UART, it is recommended to use interrupts whenever possible. If this is not possible, reduce the baud rate to 9600. If you use polling mode, you should also use ``prj_poll.conf`` instead of ``prj.conf``. Building for boards without UART interrupt support: .. zephyr-app-commands:: :zephyr-app: samples/subsys/shell/devmem_load :host-os: unix :board: native_sim :gen-args: -DCONF_FILE=prj_poll.conf :goals: run :compact: On-Hardware =========== .. zephyr-app-commands:: :zephyr-app: samples/subsys/shell/shell_module :host-os: unix :board: nrf52840dk/nrf52840 :goals: flash :compact: Sample Output ************* After connecting to the UART console, you should see the following output: .. code-block:: console uart:~$ The ``devmem load`` command can now be used: .. code-block:: console uart:~$ devmem load 0x20020000 Loading... press ctrl-x ctrl-q to escape At this point, the ``devmem load`` command waits for data input. You can either type the data directly from the console or send it from the host PC (replace ``ttyX`` with your UART console device): .. code-block:: bash xxd -p data > /dev/ttyX .. note:: It is important to use a plain-style hex dump. Once the data transfer is complete, use :kbd:`Ctrl+X` followed by :kbd:`Ctrl+Q` to quit the loader. The shell then displays the number of bytes read and returns to the prompt: .. code-block:: console Number of bytes read: 3442 uart:~$ Options ======== The ``devmem load`` command currently supports the following option: * ``-e`` Interpret data as little endian, e.g. ``0xDEADBEFF`` → ``0xFFBEADDE``.