Add classes
- archiver_stm32mp: help to generate archiver with sdk - extlinuxconf-stm32mp: help to generate u-boot extlinux.conf - flashlayout-stm32mp: help to generate layer for ST flasher - images_types-stubi: help to customize nand image - st-partitions-image: rules to clean images contents Signed-off-by: Christophe Priouzeau <christophe.priouzeau@st.com>
This commit is contained in:
1 parent
c5fda24713
commit
9c4581d03d
5 files changed
+873
No files matched your search
@@ -0,0 +1,248 @@
|
||||
# Copyright (C) 2017, STMicroelectronics - All Rights Reserved
|
||||
# Released under the MIT license (see COPYING.MIT for the terms)
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
# Extract from openembedded-core 'uboot-extlinux-config.bbclass' class
|
||||
# --------------------------------------------------------------------
|
||||
# External variables:
|
||||
#
|
||||
# UBOOT_EXTLINUX_CONSOLE - Set to "console=ttyX" to change kernel boot
|
||||
# default console.
|
||||
# UBOOT_EXTLINUX_LABELS - A list of targets for the automatic config.
|
||||
# UBOOT_EXTLINUX_KERNEL_ARGS - Add additional kernel arguments.
|
||||
# UBOOT_EXTLINUX_KERNEL_IMAGE - Kernel image name.
|
||||
# UBOOT_EXTLINUX_FDTDIR - Device tree directory.
|
||||
# UBOOT_EXTLINUX_FDT - Device tree file.
|
||||
# UBOOT_EXTLINUX_INITRD - Indicates a list of filesystem images to
|
||||
# concatenate and use as an initrd (optional).
|
||||
# UBOOT_EXTLINUX_MENU_DESCRIPTION - Name to use as description.
|
||||
# UBOOT_EXTLINUX_ROOT - Root kernel cmdline.
|
||||
# UBOOT_EXTLINUX_TIMEOUT - Timeout before DEFAULT selection is made.
|
||||
# Measured in 1/10 of a second.
|
||||
# UBOOT_EXTLINUX_DEFAULT_LABEL - Target to be selected by default after
|
||||
# the timeout period
|
||||
#
|
||||
# If there's only one label system will boot automatically and menu won't be
|
||||
# created. If you want to use more than one labels, e.g linux and alternate,
|
||||
# use overrides to set menu description, console and others variables.
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
# STM32MP specific implementation
|
||||
# --------------------------------------------------------------------
|
||||
# Append new mechanism to allow multi 'extlinux.conf' file generation.
|
||||
# - multiple targets case:
|
||||
# each 'extlinux.conf' file generated is created under specific path:
|
||||
# '${B}/<UBOOT_EXTLINUX_BOOTPREFIXES>extlinux/extlinux.conf'
|
||||
# - simple target case:
|
||||
# the 'extlinux.conf' file generated is created under default path:
|
||||
# '${B}/extlinux/extlinux.conf'
|
||||
#
|
||||
# New external variables added:
|
||||
# UBOOT_EXTLINUX_TARGETS - A list of targets for multi config file
|
||||
# generation
|
||||
# UBOOT_EXTLINUX_BOOTPREFIXES - Bootprefix used in uboot script to select
|
||||
# extlinux.conf file to use
|
||||
#
|
||||
# --------------------------------------------------------------------
|
||||
# Output example:
|
||||
# --------------------------------------------------------------------
|
||||
# Following 'extlinux.conf' files are generated under ${UBOOT_EXTLINUX_INSTALL_DIR}:
|
||||
# ${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/extlinux.conf
|
||||
# ${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[1]}extlinux/extlinux.conf
|
||||
#
|
||||
# File content (${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/exlinux.conf):
|
||||
# menu title Select the boot mode
|
||||
# TIMEOUT ${UBOOT_EXTLINUX_TIMEOUT}
|
||||
# DEFAULT ${UBOOT_EXTLINUX_DEFAULT_LABEL_${UBOOT_EXTLINUX_TARGETS}[0]}
|
||||
# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[0]}[0]
|
||||
# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[0]}[1]
|
||||
# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
#
|
||||
# File content (${UBOOT_EXTLINUX_BOOTPREFIXES_${UBOOT_EXTLINUX_TARGETS}[0]}extlinux/exlinux.conf):
|
||||
# menu title Select the boot mode
|
||||
# TIMEOUT ${UBOOT_EXTLINUX_TIMEOUT}
|
||||
# DEFAULT ${UBOOT_EXTLINUX_DEFAULT_LABEL_${UBOOT_EXTLINUX_TARGETS}[1]}
|
||||
# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[1]}[0]
|
||||
# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[0]} >
|
||||
# LABEL ${UBOOT_EXTLINUX_LABELS_${UBOOT_EXTLINUX_TARGETS}[1]}[1]
|
||||
# KERNEL ${UBOOT_EXTLINUX_KERNEL} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_KERNEL_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
# FDT ${UBOOT_EXTLINUX_FDT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_FDT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
# APPEND ${UBOOT_EXTLINUX_ROOT} < OR OVERRIDE WITH : ${UBOOT_EXTLINUX_ROOT_${IMAGE_UBOOT_EXTLINUX_LABELS}[1]} >
|
||||
# --------------------------------------------------------------------
|
||||
|
||||
UBOOT_EXTLINUX_TARGETS ?= ""
|
||||
|
||||
UBOOT_EXTLINUX_CONSOLE ??= "console=${console}"
|
||||
UBOOT_EXTLINUX_LABELS ??= "linux"
|
||||
UBOOT_EXTLINUX_FDT ??= ""
|
||||
UBOOT_EXTLINUX_FDTDIR ??= "../"
|
||||
UBOOT_EXTLINUX_KERNEL_IMAGE ?= "/${KERNEL_IMAGETYPE}"
|
||||
UBOOT_EXTLINUX_KERNEL_ARGS ?= "rootwait rw"
|
||||
UBOOT_EXTLINUX_TIMEOUT ?= "20"
|
||||
|
||||
UBOOT_EXTLINUX_CONFIGURE_FILES ??= ""
|
||||
|
||||
python update_extlinuxconf_targets() {
|
||||
"""
|
||||
Append dynamically to UBOOT_EXTLINUX_TARGETS new target list generated from
|
||||
config flag list (UBOOT_EXTLINUX_CONFIG_FLAGS) and supported devicetree list
|
||||
for each flag (UBOOT_EXTLINUX_DEVICEFLAG_xxx)
|
||||
"""
|
||||
import re
|
||||
|
||||
default_targets = d.getVar('UBOOT_EXTLINUX_CONFIGURED_TARGETS')
|
||||
if not default_targets:
|
||||
bb.fatal("UBOOT_EXTLINUX_CONFIGURED_TARGETS not defined, please update your config")
|
||||
if not default_targets.strip():
|
||||
bb.fatal("No UBOOT_EXTLINUX_CONFIGURED_TARGETS list defined, nothing to do")
|
||||
bb.note('UBOOT_EXTLINUX_CONFIGURED_TARGETS: %s' % default_targets)
|
||||
|
||||
config_flags = d.getVar('UBOOT_EXTLINUX_CONFIG_FLAGS')
|
||||
if not config_flags:
|
||||
bb.fatal("UBOOT_EXTLINUX_CONFIG_FLAGS not defined, please update your config")
|
||||
if not config_flags.strip():
|
||||
bb.fatal("No UBOOT_EXTLINUX_CONFIG_FLAGS list defined, nothing to do")
|
||||
bb.note('UBOOT_EXTLINUX_CONFIG_FLAGS: %s' % config_flags)
|
||||
|
||||
for config_label in config_flags.split():
|
||||
bb.note('*** Loop for config_label: %s' % config_label)
|
||||
devicetree_list = d.getVar('UBOOT_EXTLINUX_DEVICEFLAG_%s' % config_label) or ''
|
||||
if devicetree_list is None:
|
||||
continue
|
||||
for devicetree in devicetree_list.split():
|
||||
bb.note('*** Loop for devicetree: %s' % devicetree)
|
||||
target_prefix = re.match('^stm32(.*)$', devicetree)
|
||||
new_target = target_prefix.group(1) + '_' + config_label
|
||||
bb.note('>>> New target label: %s' % new_target)
|
||||
if not new_target in default_targets.split():
|
||||
bb.note('Computed target: "%s" is not part of UBOOT_EXTLINUX_CONFIGURED_TARGETS: %s' % (new_target, default_targets))
|
||||
bb.note('Target not append to UBOOT_EXTLINUX_TARGETS')
|
||||
continue
|
||||
# Append target to UBOOT_EXTLINUX_TARGETS list
|
||||
d.appendVar('UBOOT_EXTLINUX_TARGETS', ' ' + new_target)
|
||||
bb.note('>>> Append %s to UBOOT_EXTLINUX_TARGETS' % new_target)
|
||||
bb.note('>>> UBOOT_EXTLINUX_TARGETS (updated): %s' % d.getVar('UBOOT_EXTLINUX_TARGETS'))
|
||||
}
|
||||
|
||||
python do_create_multiextlinux_config() {
|
||||
targets = d.getVar('UBOOT_EXTLINUX_TARGETS')
|
||||
if not targets:
|
||||
bb.fatal("UBOOT_EXTLINUX_TARGETS not defined, nothing to do")
|
||||
if not targets.strip():
|
||||
bb.fatal("No targets, nothing to do")
|
||||
|
||||
for target in targets.split():
|
||||
|
||||
localdata = bb.data.createCopy(d)
|
||||
overrides = localdata.getVar('OVERRIDES')
|
||||
if not overrides:
|
||||
bb.fatal('OVERRIDES not defined')
|
||||
localdata.setVar('OVERRIDES', target + ':' + overrides)
|
||||
|
||||
# Initialize labels from localdata to allow target override
|
||||
labels = localdata.getVar('UBOOT_EXTLINUX_LABELS')
|
||||
if not labels:
|
||||
bb.fatal("UBOOT_EXTLINUX_LABELS not defined, nothing to do")
|
||||
if not labels.strip():
|
||||
bb.fatal("No labels, nothing to do")
|
||||
|
||||
# Initialize subdir for extlinux.conf file location
|
||||
if len(targets.split()) > 1:
|
||||
bootprefix = localdata.getVar('UBOOT_EXTLINUX_BOOTPREFIXES') or ""
|
||||
subdir = bootprefix + 'extlinux'
|
||||
else:
|
||||
subdir = 'extlinux'
|
||||
|
||||
# Initialize config file
|
||||
cfile = os.path.join(d.getVar('B'), subdir , 'extlinux.conf')
|
||||
|
||||
# Create extlinux folder
|
||||
bb.utils.mkdirhier(os.path.dirname(cfile))
|
||||
|
||||
# ************************************************************
|
||||
# Copy/Paste extract of 'do_create_extlinux_config()' function
|
||||
# from openembedded-core 'uboot-extlinux-config.bbclass' class
|
||||
# ************************************************************
|
||||
try:
|
||||
with open(cfile, 'w') as cfgfile:
|
||||
cfgfile.write('# Generic Distro Configuration file generated by OpenEmbedded\n')
|
||||
|
||||
if len(labels.split()) > 1:
|
||||
cfgfile.write('menu title Select the boot mode\n')
|
||||
|
||||
spashscreen_name = localdata.getVar('UBOOT_SPLASH_IMAGE')
|
||||
if not spashscreen_name:
|
||||
bb.warn('UBOOT_SPLASH_IMAGE not defined')
|
||||
else:
|
||||
cfgfile.write('MENU BACKGROUND ../%s.bmp\n' % (spashscreen_name))
|
||||
|
||||
timeout = localdata.getVar('UBOOT_EXTLINUX_TIMEOUT')
|
||||
if timeout:
|
||||
cfgfile.write('TIMEOUT %s\n' % (timeout))
|
||||
|
||||
if len(labels.split()) > 1:
|
||||
default = localdata.getVar('UBOOT_EXTLINUX_DEFAULT_LABEL')
|
||||
if default:
|
||||
cfgfile.write('DEFAULT %s\n' % (default))
|
||||
|
||||
for label in labels.split():
|
||||
# **********************************************
|
||||
# Add localdata reset to fix var expansion issue
|
||||
# **********************************************
|
||||
localdata = bb.data.createCopy(d)
|
||||
|
||||
overrides = localdata.getVar('OVERRIDES')
|
||||
if not overrides:
|
||||
bb.fatal('OVERRIDES not defined')
|
||||
|
||||
localdata.setVar('OVERRIDES', label + ':' + overrides)
|
||||
|
||||
extlinux_console = localdata.getVar('UBOOT_EXTLINUX_CONSOLE')
|
||||
|
||||
menu_description = localdata.getVar('UBOOT_EXTLINUX_MENU_DESCRIPTION')
|
||||
if not menu_description:
|
||||
menu_description = label
|
||||
|
||||
root = localdata.getVar('UBOOT_EXTLINUX_ROOT')
|
||||
if not root:
|
||||
bb.fatal('UBOOT_EXTLINUX_ROOT not defined')
|
||||
|
||||
kernel_image = localdata.getVar('UBOOT_EXTLINUX_KERNEL_IMAGE')
|
||||
fdtdir = localdata.getVar('UBOOT_EXTLINUX_FDTDIR')
|
||||
|
||||
fdt = localdata.getVar('UBOOT_EXTLINUX_FDT')
|
||||
|
||||
if fdt:
|
||||
cfgfile.write('LABEL %s\n\tKERNEL %s\n\tFDT %s\n' %
|
||||
(menu_description, kernel_image, fdt))
|
||||
elif fdtdir:
|
||||
cfgfile.write('LABEL %s\n\tKERNEL %s\n\tFDTDIR %s\n' %
|
||||
(menu_description, kernel_image, fdtdir))
|
||||
else:
|
||||
cfgfile.write('LABEL %s\n\tKERNEL %s\n' % (menu_description, kernel_image))
|
||||
|
||||
kernel_args = localdata.getVar('UBOOT_EXTLINUX_KERNEL_ARGS')
|
||||
|
||||
initrd = localdata.getVar('UBOOT_EXTLINUX_INITRD')
|
||||
if initrd:
|
||||
cfgfile.write('\tINITRD %s\n'% initrd)
|
||||
|
||||
kernel_args = root + " " + kernel_args
|
||||
cfgfile.write('\tAPPEND %s %s\n' % (kernel_args, extlinux_console))
|
||||
|
||||
except OSError:
|
||||
bb.fatal('Unable to open %s' % (cfile))
|
||||
}
|
||||
addtask create_multiextlinux_config before do_compile
|
||||
|
||||
do_create_multiextlinux_config[dirs] += "${B}"
|
||||
do_create_multiextlinux_config[cleandirs] += "${B}"
|
||||
do_create_multiextlinux_config[prefuncs] += "update_extlinuxconf_targets"
|
||||
do_create_multiextlinux_config[file-checksums] += "${UBOOT_EXTLINUX_CONFIGURE_FILES}"
|
||||
Reference in new issue
Block a user