zephyr/scripts/schemas/board-schema.yml

159 lines
4.9 KiB
YAML

# SPDX-License-Identifier: Apache-2.0
#
# Copyright (c) 2023, Nordic Semiconductor ASA
## A pykwalify schema for basic validation of the structure of a
## board metadata YAML file.
##
# The board.yml file is a simple list of key value pairs containing board
# information like: name, vendor, socs, variants.
schema;variant-schema:
required: false
type: seq
sequence:
- type: map
mapping:
name:
required: true
type: str
cpucluster:
required: false
type: str
variants:
required: false
include: variant-schema
schema;extend-variant-schema:
required: false
type: seq
sequence:
- type: map
mapping:
name:
required: true
type: str
qualifier:
required: true
type: str
schema;board-schema:
type: map
mapping:
name:
required: false # Note: either name or extend is required, but that is handled in python
type: str
desc: Name of the board
full_name:
required: false
type: str
desc: Full name of the board. Typically set to the commercial name of the board.
extend:
required: false # Note: either name or extend is required, but that is handled in python
type: str
vendor:
required: false
type: str
desc: SoC family of the SoC on the board.
revision:
required: false
type: map
mapping:
format:
required: true
type: str
enum:
["major.minor.patch", "letter", "number", "custom"]
default:
required: false # This field is required when 'format' != 'custom'
type: str
exact:
required: false
type: bool
revisions:
required: false # This field is required when 'format' != 'custom'
type: seq
sequence:
- type: map
mapping:
name:
required: true
type: str
socs:
required: false # Required for name:, but not for extend.
type: seq
sequence:
- type: map
mapping:
name:
required: true
type: str
variants:
include: variant-schema
variants:
include: extend-variant-schema
type: map
mapping:
board:
include: board-schema
boards:
type: seq
sequence:
- include: board-schema
runners:
type: map
mapping:
priority:
type: int
desc: |
Priority of this flash run once configuration. The highest value data will be used
instead of any with lower priorities. If omitted, will default to 10.
run_once:
type: map
desc: |
Allows for restricting west flash commands when using sysbuild to run once per given
grouping of board targets. This is to allow for future image program cycles to not
erase the flash of a device which has just been programmed by another image.
mapping:
regex;(.*):
type: seq
desc: |
A dictionary of commands which should be limited to running once per invocation
of west flash for a given set of flash runners and board targets.
sequence:
- type: map
mapping:
run:
required: true
type: str
enum: ['first', 'last']
desc: |
If first, will run this command once when the first image is flashed, if
last, will run this command once when the final image is flashed.
runners:
required: true
type: seq
sequence:
- type: str
desc: |
A list of flash runners that this applies to, can use `all` to apply
to all runners.
groups:
required: true
type: seq
sequence:
- type: map
desc: |
A grouping of board targets which the command should apply to. Can
be used multiple times to have multiple groups.
mapping:
boards:
required: true
type: seq
sequence:
- type: str
desc: |
A board target to match against in regex. Must be one entry
per board target, a single regex entry will not match two
board targets even if they both match.