forked from nrfconnect/sdk-zephyr
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
doc: build: flashing: Add documentation
Adds documentation on the new flashing configuration system Signed-off-by: Jamie McCrae <[email protected]>
- Loading branch information
1 parent
4b2d19f
commit ff823c6
Showing
3 changed files
with
116 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,106 @@ | ||
.. _flashing-soc-board-config: | ||
|
||
Flashing configuration | ||
###################### | ||
|
||
Zephyr supports setting up configuration for flash runners (invoked from | ||
:ref:`west flash<west-flashing>`) which allows for customising how commands are used when | ||
programming boards. This configuration is used for :ref:`sysbuild` projects and allows for | ||
configuring when commands are ran for groups of board targets. As an example: a multi-core SoC | ||
might want to only allow the ``--erase`` argument to be used once for all of the cores in the SoC | ||
which would prevent multiple erase tasks running in a single ``west flash`` invocation, which | ||
could wrongly clear the memory which is used by the other images being programmed. | ||
|
||
Priority | ||
******** | ||
|
||
Flashing configuration is singular, it will only be read from a single location, this | ||
configuration can reside in the following files starting with the highest priority: | ||
|
||
* ``soc.yml`` (in soc folder) | ||
* ``board.yml`` (in board folder) | ||
|
||
Configuration | ||
************* | ||
|
||
Configuration is applied in the yml file by using a ``runners`` map with a single ``run_once`` | ||
child, this then contains a map of commands as they would be provided to the flash runner e.g. | ||
``--reset`` followed by a list which specifies the settings for each of these commands (these | ||
are grouped by flash runner, and by qualifiers/boards). Commands have associated runners that | ||
they apply to using a ``runners`` list value, this can contain ``all`` if it applies to all | ||
runners, otherwise must contain each runner that it applies to using the runner-specific name. | ||
Groups of board targets can be specified using the ``groups`` key which has a list of board | ||
target sets. Board targets are regular expression matches, for ``soc.yml`` files each set of | ||
board targets must be in a ``qualifiers`` key (only regular expression matches for board | ||
qualifiers are allowed, board names must be omitted from these entries). For ``board.yml`` | ||
files each set of board targets must be in a ``boards`` key, these are lists containing the | ||
matches which form a singular group. A final parameter ``run`` can be set to ``first`` which | ||
means that the command will be ran once with the first image flashing process per set of board | ||
targets, or to ``last`` which will be ran once for the final image flash per set of board targets. | ||
|
||
An example flashing configuration for a ``soc.yml`` is shown below in which the ``--recover`` | ||
command will only be used once for any board targets which used the nRF5340 SoC application or | ||
network CPU cores, and will only reset the network or application core after all images for the | ||
respective core have been flashed. | ||
|
||
.. code-block:: yaml | ||
runners: | ||
run_once: | ||
'--recover': | ||
- run: first | ||
runners: | ||
- nrfjprog | ||
groups: | ||
- qualifiers: | ||
- nrf5340/cpunet | ||
- nrf5340/cpuapp | ||
- nrf5340/cpuapp/ns | ||
'--reset': | ||
- run: last | ||
runners: | ||
- nrfjprog | ||
- jlink | ||
groups: | ||
- qualifiers: | ||
- nrf5340/cpunet | ||
- qualifiers: | ||
- nrf5340/cpuapp | ||
- nrf5340/cpuapp/ns | ||
# Made up non-real world example to show how to specify different options for different | ||
# flash runners | ||
- run: first | ||
runners: | ||
- some_other_runner | ||
groups: | ||
- qualifiers: | ||
- nrf5340/cpunet | ||
- qualifiers: | ||
- nrf5340/cpuapp | ||
- nrf5340/cpuapp/ns | ||
Usage | ||
***** | ||
|
||
Commands that are supported by flash runners can be used as normal when flashing non-sysbuild | ||
applications, the run once configuration will not be used. When flashing a sysbuild project with | ||
multiple images, the flash runner run once configuration will be applied. | ||
|
||
For example, building the :zephyr:code-sample:`smp-svr` sample for the nrf5340dk which will | ||
include MCUboot as a secondary image: | ||
|
||
.. code-block:: console | ||
cmake -GNinja -Sshare/sysbuild/ -Bbuild -DBOARD=nrf5340dk/nrf5340/cpuapp -DAPP_DIR=samples/subsys/mgmt/mcumgr/smp_svr | ||
cmake --build build | ||
Once built with an nrf5340dk connected, the following command can be used to flash the board with | ||
both applications and will only perform a single device recovery operation when programming the | ||
first image: | ||
|
||
.. code-block:: console | ||
west flash --recover | ||
If the above was ran without the flashing configuration, the recovery process would be ran twice | ||
and the device would be unbootable. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
.. _flashing: | ||
|
||
Flashing | ||
######## | ||
|
||
.. toctree:: | ||
:maxdepth: 1 | ||
|
||
configuration.rst |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters