Merge branch 'dey-5.0/master' into dey-5.0/maint

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
This commit is contained in:
Arturo Buzarra 2025-07-02 12:44:20 +02:00
commit b460485771
210 changed files with 57258 additions and 4929 deletions

View File

@ -1,5 +1,5 @@
# Digi Embedded Yocto (DEY) 5.0
## Release 5.0-r1
## Release 5.0-r2
This document provides information about Digi Embedded Yocto,
Digi International's professional embedded Yocto development environment.
@ -42,6 +42,38 @@ Software for the following hardware platforms is in production support:
* ConnectCore 93 Development Kit (DVK)
* [CC-WMX93-KIT](https://www.digi.com/products/models/cc-wmx93-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/5.0/cc93/yocto-gs_index))
## ConnectCore MP13
* ConnectCore MP13 System-on-Module (SOM)
* [CC-WST-DX58-NK](https://www.digi.com/products/models/cc-wst-dx58-nk)
* [CC-ST-DX58-ZK](https://www.digi.com/products/models/cc-st-dx58-zk)
* ConnectCore MP13 Development Kit (DVK)
* [CC-WMP133-KIT](https://www.digi.com/products/models/cc-wmp133-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/4.0/ccmp13/yocto-gs_index))
## ConnectCore MP15
* ConnectCore MP15 System-on-Module (SOM)
* [CC-WST-DW69-NM](https://www.digi.com/products/models/cc-wst-dw69-nm)
* [CC-ST-DW69-ZM](https://www.digi.com/products/models/cc-st-dw69-zm)
* ConnectCore MP15 Development Kit (DVK)
* [CC-WMP157-KIT](https://www.digi.com/products/models/cc-wmp157-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/4.0/ccmp15/yocto-gs_index))
## ConnectCore 8M Mini
* ConnectCore 8M Mini System-on-Module (SOM)
* [CC-WMX-ET8D-NN](https://www.digi.com/products/models/cc-wmx-et8d-nn)
* [CC-WMX-ET7D-NN](https://www.digi.com/products/models/cc-wmx-et7d-nn)
* [CC-MX-ET8D-ZN](https://www.digi.com/products/models/cc-mx-et8d-zn)
* [CC-MX-ET7D-ZN](https://www.digi.com/products/models/cc-mx-et7d-zn)
* ConnectCore 8M Mini Development Kit (DVK)
* [CC-WMX8MM-KIT](https://www.digi.com/products/models/cc-wmx8mm-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/5.0/cc8mmini/yocto-gs_index))
## ConnectCore 8M Nano
* ConnectCore 8M Nano System-on-Module (SOM)
* [CC-WMX-FS7D-NN](https://www.digi.com/products/models/cc-wmx-fs7d-nn)
* [CC-WMX-FR6D-NN](https://www.digi.com/products/models/cc-wmx-fr6d-nn)
* [CC-MX-FS7D-ZN](https://www.digi.com/products/models/cc-mx-fs7d-zn)
* [CC-MX-FR6D-ZN](https://www.digi.com/products/models/cc-mx-fr6d-zn)
* ConnectCore 8M Nano Development Kit (DVK)
* [CC-WMX8MN-KIT](https://www.digi.com/products/models/cc-wmx8mn-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/5.0/cc8mnano/yocto-gs_index))
## ConnectCore 8X
* ConnectCore 8X System-on-Module (SOM)
* [CC-WMX-JM8E-NN](https://www.digi.com/products/models/cc-wmx-jm8e-nn)
@ -82,11 +114,15 @@ Documentation is available online at https://www.digi.com/resources/documentatio
# Downloads
* Demo images: https://ftp1.digi.com/support/digiembeddedyocto/5.0/r1/images/
* Software Development Kit (SDK): https://ftp1.digi.com/support/digiembeddedyocto/5.0/r1/sdk/
* Demo images: https://ftp1.digi.com/support/digiembeddedyocto/5.0/r2/images/
* Software Development Kit (SDK): https://ftp1.digi.com/support/digiembeddedyocto/5.0/r2/sdk/
# Release Changelog
## 5.0-r2
TODO
## 5.0-r1
* Release based on [Yocto 5.0 (Scarthgap)](https://www.yoctoproject.org/software-overview/downloads) including:

View File

@ -331,7 +331,7 @@ IMAGE_CMD:sdcard() {
else
if [ "${TRUSTFENCE_SIGN}" = "1" ]; then
if [ "${BOOTLOADER_IMAGE_RECIPE}" = "u-boot" ]; then
SDIMG_BOOT="$(readlink -e ${SDIMG_BOOTLOADER} | sed -e 's,u-boot-,u-boot-dtb-signed-,g')"
SDIMG_BOOT="$(readlink -e ${SDIMG_BOOTLOADER} | sed -e 's,u-boot-,u-boot-signed-,g')"
else
SDIMG_BOOT="$(readlink -e ${SDIMG_BOOTLOADER} | sed -e 's,imx-boot-,imx-boot-signed-,g')"
fi

View File

@ -0,0 +1,24 @@
# Copyright (C) 2025, Digi International Inc.
# Overwrite search_path() function in original 'sign-stm2mp.bbclass'
def search_path(file_search, d, err_not_found=False):
"""
Search for <file_search> in BBPATH and return its absolute path.
If the file is not found:
- Returns the original file string if err_not_found is False.
- Otherwise, it triggers a fatal error.
"""
search_path = d.getVar("BBPATH").split(":")
for p in search_path:
file_path = os.path.join(p, file_search)
if os.path.isfile(file_path):
return file_path
# If file is not found
bbpaths = d.getVar('BBPATH').replace(':','\n\t')
bb.debug(1, '\n[sign-stm32mp-digi] Not able to find "%s" path from current BBPATH' % (file_search))
if not err_not_found:
return file_search # Return original file string instead of failing
bb.fatal('\n[sign-stm32mp-digi] Not able to find "%s" path from current BBPATH var:\n\t%s.' % (file_search, bbpaths))

View File

@ -14,8 +14,6 @@ BBFILES_DYNAMIC += " \
freescale-layer:${LAYERDIR}/dynamic-layers/freescale-layer/*/*/*.bbappend \
stm-st-stm32mp:${LAYERDIR}/dynamic-layers/stm-st-stm32mp/*/*/*.bb \
stm-st-stm32mp:${LAYERDIR}/dynamic-layers/stm-st-stm32mp/*/*/*.bbappend \
wolfssl:${LAYERDIR}/dynamic-layers/wolfssl/*/*/*.bb \
wolfssl:${LAYERDIR}/dynamic-layers/wolfssl/*/*/*.bbappend \
"
LAYERDEPENDS_digi-arm = "core"
@ -48,6 +46,7 @@ BBMASK += " \
meta-st-stm32mp/recipes-core/busybox/busybox_%.bbappend \
meta-st-stm32mp/recipes-core/systemd/systemd-conf_%.bbappend \
meta-st-stm32mp/recipes-kernel/linux/linux-stm32mp_5.15.bb \
meta-st-stm32mp/recipes-bsp/u-boot/u-boot-stm32mp_2023.10.bb \
"
# Tweak x-linux-ai dependencies to use ST's machine learning packages

View File

@ -25,6 +25,10 @@ MACHINE_FIRMWARE:append = " ${@oe.utils.conditional('HAVE_WIFI', '1', 'firmware-
UBOOT_CONFIG ??= "ccimx6qpsbc1GB ccimx6qpsbc2GB"
UBOOT_CONFIG[ccimx6qpsbc1GB] = "ccimx6qpsbc1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6qpsbc2GB] = "ccimx6qpsbc2GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
KERNEL_DEVICETREE ?= " \
imx6qp-ccimx6qpsbc.dtb \
@ -43,11 +47,6 @@ BT_TTY ?= "ttymxc1"
# XBee
XBEE_TTY ?= "ttymxc4"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
u-boot-ccimx6qpsbc1GB.imx \

View File

@ -23,6 +23,10 @@ UBOOT_CONFIG[ccimx6dlsbc] = "ccimx6dlsbc_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6qsbc2GB] = "ccimx6qsbc2GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6qsbc512MB] = "ccimx6qsbc512MB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6qsbc] = "ccimx6qsbc_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
KERNEL_DEVICETREE ?= " \
imx6dl-ccimx6sbc.dtb \
@ -45,11 +49,6 @@ BT_TTY ?= "ttymxc1"
# XBee
XBEE_TTY ?= "ttymxc4"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
u-boot-ccimx6dlsbc512MB.imx \

View File

@ -11,6 +11,10 @@ UBOOT_CONFIG ??= "ccimx6ulsbc1GB ccimx6ulsbc512MB ccimx6ulsbc"
UBOOT_CONFIG[ccimx6ulsbc1GB] = "ccimx6ulsbc1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6ulsbc512MB] = "ccimx6ulsbc512MB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6ulsbc] = "ccimx6ulsbc_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "0"
KERNEL_DEVICETREE ?= " \
digi/imx6ul-ccimx6ulsbc.dtb \
@ -30,11 +34,6 @@ BT_TTY ?= "ttymxc0"
# XBee
XBEE_TTY ?= "ttymxc1"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"tar.xz boot.ubifs recovery.ubifs squashfs", \
"tar.xz ubifs boot.ubifs recovery.ubifs", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
u-boot-ccimx6ulsbc1GB.imx \

View File

@ -11,6 +11,10 @@ UBOOT_CONFIG ??= "ccimx6ulstarter1GB ccimx6ulstarter512MB ccimx6ulstarter"
UBOOT_CONFIG[ccimx6ulstarter1GB] = "ccimx6ulstarter1GB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6ulstarter512MB] = "ccimx6ulstarter512MB_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccimx6ulstarter] = "ccimx6ulstarter_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "0"
KERNEL_DEVICETREE ?= " \
digi/imx6ul-ccimx6ulstarter.dtb \
@ -26,11 +30,6 @@ SERIAL_CONSOLES ?= "115200;ttymxc4"
# Bluetooth tty
BT_TTY ?= "ttymxc0"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"tar.xz boot.ubifs recovery.ubifs squashfs", \
"tar.xz ubifs boot.ubifs recovery.ubifs", d)}'
# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "core-image-base"

View File

@ -22,6 +22,11 @@ SPL_BINARY = "spl/u-boot-spl.bin"
# Set u-boot DTB
UBOOT_DTB_NAME = "ccimx8mm-dvk.dtb"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
ATF_PLATFORM = "imx8mm"
IMX_BOOT_SOC_TARGET = "iMX8MM"
@ -37,6 +42,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx8m-dvk_user-leds.dtbo \
digi/ccimx8mm-dvk.dtb \
"
FIT_CONF_DEFAULT_DTB = "ccimx8mm-dvk.dtb"
SERIAL_CONSOLES ?= "115200;ttymxc0"
@ -48,11 +54,6 @@ XBEE_RESET_N_GPIO ?= "mca-gpio@15,gpio1@8"
XBEE_SLEEP_RQ_GPIO ?= "mca-gpio@11,gpio1@7"
XBEE_TTY ?= "ttymxc3"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = "imx-boot-ccimx8mm-dvk.bin"

View File

@ -21,6 +21,11 @@ SPL_BINARY = "spl/u-boot-spl.bin"
# Set u-boot DTB
UBOOT_DTB_NAME = "ccimx8mn-dvk.dtb"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
ATF_PLATFORM = "imx8mn"
IMX_BOOT_SOC_TARGET = "iMX8MN"
@ -38,6 +43,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx8mn-dvk_v1-v2.dtbo \
digi/ccimx8mn-dvk.dtb \
"
FIT_CONF_DEFAULT_DTB = "ccimx8mn-dvk.dtb"
SERIAL_CONSOLES ?= "115200;ttymxc0"
@ -49,11 +55,6 @@ XBEE_RESET_N_GPIO ?= "mca-gpio@15,gpio1@8"
XBEE_SLEEP_RQ_GPIO ?= "mca-gpio@11,gpio1@7"
XBEE_TTY ?= "ttymxc3"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = "imx-boot-ccimx8mn-dvk.bin"

View File

@ -9,6 +9,10 @@ include conf/machine/include/ccimx8x.inc
UBOOT_CONFIG ??= "ccimx8x_sbc_express"
UBOOT_CONFIG[ccimx8x_sbc_express] = "ccimx8x_sbc_express_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
SPL_BINARY = "spl/u-boot-spl.bin"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
KERNEL_DEVICETREE ?= " \
digi/ccimx8x_bt.dtbo \
@ -16,6 +20,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx8x_wifi.dtbo \
digi/ccimx8x-sbc-express.dtb \
"
FIT_CONF_DEFAULT_DTB = "ccimx8x-sbc-express.dtb"
SERIAL_CONSOLES ?= "115200;ttyLP2"
@ -27,11 +32,6 @@ XBEE_RESET_N_GPIO ?= "gpio3@13"
XBEE_SLEEP_RQ_GPIO ?= "gpio3@16"
XBEE_TTY ?= "ttyLP0"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
imx-boot-ccimx8x-sbc-express-B0.bin \

View File

@ -10,6 +10,10 @@ include conf/machine/include/ccimx8x.inc
UBOOT_CONFIG ??= "ccimx8x_sbc_pro"
UBOOT_CONFIG[ccimx8x_sbc_pro] = "ccimx8x_sbc_pro_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
SPL_BINARY = "spl/u-boot-spl.bin"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
KERNEL_DEVICETREE ?= " \
digi/ccimx8x_bt.dtbo \
@ -31,6 +35,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx8x-sbc-pro_v1-v3.dtbo \
digi/ccimx8x-sbc-pro.dtb \
"
FIT_CONF_DEFAULT_DTB = "ccimx8x-sbc-pro.dtb"
SERIAL_CONSOLES ?= "115200;ttyLP2"
@ -42,11 +47,6 @@ XBEE_RESET_N_GPIO ?= "mca-gpio@15"
XBEE_SLEEP_RQ_GPIO ?= "mca-gpio@11"
XBEE_TTY ?= "ttyMCA0"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat tar.xz recovery.vfat squashfs", \
"boot.vfat ext4.gz sdcard.gz tar.xz recovery.vfat", d)}'
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
imx-boot-ccimx8x-sbc-pro-B0.bin \

View File

@ -14,6 +14,11 @@ IMXBOOT_TARGETS = "flash_singleboot"
UBOOT_CONFIG ??= "ccimx91-dvk"
UBOOT_CONFIG[ccimx91-dvk] = "ccimx91-dvk_defconfig"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
# imx-boot configurations
ATF_PLATFORM = "imx91"
IMX_BOOT_SOC_TARGET = "iMX91"
@ -32,6 +37,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx9_wifi.dtbo \
${@bb.utils.contains('DISTRO_FEATURES', 'tsn', 'digi/ccimx9-dvk_eqos-tsn.dtbo', '', d)} \
"
FIT_CONF_DEFAULT_DTB = "ccimx91-dvk.dtb"
# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "core-image-base"

View File

@ -12,6 +12,11 @@ include conf/machine/include/ccimx9.inc
UBOOT_CONFIG ??= "ccimx93-dvk"
UBOOT_CONFIG[ccimx93-dvk] = "ccimx93-dvk_defconfig"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
# imx-boot configurations
ATF_PLATFORM = "imx93"
IMX_BOOT_SOC_TARGET = "iMX93"
@ -35,6 +40,7 @@ KERNEL_DEVICETREE ?= " \
digi/ccimx93-dvk.dtb \
${@bb.utils.contains('DISTRO_FEATURES', 'tsn', 'digi/ccimx9-dvk_eqos-tsn.dtbo', '', d)} \
"
FIT_CONF_DEFAULT_DTB = "ccimx93-dvk.dtb"
# Add additional firmware
MACHINE_FIRMWARE:append = " ethos-u-firmware"

View File

@ -12,7 +12,7 @@ DIGI_SOM = "ccmp13"
# Chip architecture
# =========================================================================
DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
MACHINEOVERRIDES = "arm:armv7ve:stcommon:stm32mpcommon:stm32mp1common:${DIGI_FAMILY}:${DIGI_SOM}:ccmp13-dvk"
MACHINEOVERRIDES = "arm:armv7ve:stcommon:stm32mpcommon:stm32mp1common:stm32mp13common:${DIGI_FAMILY}:${DIGI_SOM}:ccmp13-dvk"
# =========================================================================
# boot device
@ -26,13 +26,24 @@ DEVICE_BOARD_ENABLE:SDCARD += "${@bb.utils.contains('BOOTDEVICE_LABELS', 'sdcard
# =========================================================================
# Last one is the default (the one the symlinks point at)
UBOOT_CONFIG = "ccmp13-dvk"
UBOOT_CONFIG[ccmp13-dvk] = "ccmp13-dvk_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccmp13-dvk] = "ccmp13-dvk_defconfig,,u-boot.dtb"
# Remove STM32mp13 configs from ST layer
UBOOT_CONFIG:remove:stm32mp13common = "default_stm32mp13"
# List of U-Boot device tree to use
UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
# =========================================================================
# Machine settings
# =========================================================================
# Define list of devicetree per board
STM32MP_DEVICETREE ??= "ccmp13-dvk-256MB"
# Define list of devicetree per supported storage
STM32MP_DT_FILES_NAND = "ccmp13-dvk-256MB"
STM32MP_DT_FILES_SDCARD = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_USB = "${STM32MP_DT_FILES_NAND}"
# Extra DTB for board - need to specify it with .dtb ...
STM32MP_KERNEL_DEVICETREE:ccmp13-dvk += " \
ccmp13_bt_test.dtbo \
@ -43,12 +54,20 @@ STM32MP_KERNEL_DEVICETREE:ccmp13-dvk += " \
ccmp13-dvk_mikroe-i2c-to-spi-click.dtbo \
ccmp13-dvk_pwm8.dtbo \
ccmp13-dvk_v2.dtbo \
ccmp13-dvk_v3.dtbo \
ccmp133-dvk.dtb \
"
# Set DTB load address to U-Boot fdt_addr_r
UBOOT_DTB_LOADADDRESS = "0xc4000000"
# List of U-Boot device tree to use
UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
FIT_CONF_DEFAULT_DTB = "ccmp133-dvk.dtb"
# =========================================================================
# optee
# =========================================================================
# Map OPTEE configuration to device tree list
OPTEE_DEVICETREE_optee = "${STM32MP_DEVICETREE}"
OPTEE_DEVICETREE_opteemin = "${STM32MP_DEVICETREE}"
# Supported boot schemes
BOOTSCHEME_LABELS ?= "optee"
BOOTSCHEME_DEFAULT ?= "optee"
# =========================================================================
# Machine features
@ -65,16 +84,6 @@ MACHINE_EXTRA_RRECOMMENDS += " \
${MACHINE_FIRMWARE} \
"
# =========================================================================
# Image
# =========================================================================
# Image FS types
# tar.xz is omitted here because it's already being added via
# st-machine-common-stm32mp.inc in the meta-st-stm32mp layer
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.ubifs recovery.ubifs squashfs", \
"ubifs boot.ubifs recovery.ubifs", d)}'
# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "core-image-base"
@ -100,24 +109,10 @@ ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
# activate/deactivate the debug and trace on boot stage
ST_DEBUG_TRACE = "0"
# =========================================================================
# optee
# =========================================================================
# Map OPTEE configuration to device tree list
OPTEE_CONF = "${STM32MP_DEVICETREE}"
# =========================================================================
# Flashlayouts
# =========================================================================
# =========================================================================
# Kernel
# =========================================================================
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_SIGN_FIT_STM', '1', 'fitImage', 'zImage', d)}"
KERNEL_CLASSES = "kernel-fitimage"
KERNEL_ALT_IMAGETYPE = "Image vmlinux"
KERNEL_DEFCONFIG ?= "arch/arm/configs/ccmp1_defconfig"
# =========================================================================
# DEY settings
# =========================================================================
@ -141,18 +136,10 @@ HAS_WIFI_VIRTWLANS = "true"
# Set this platform without graphical support
IS_HEADLESS = "true"
# Remove additional bluetooth packages
MACHINE_BLUETOOTH_EXTRA_INSTALL = ""
# XBee
XBEE_RESET_N_GPIO ?= "GPIOG@15"
XBEE_TTY ?= "ttySTM2"
# =========================================================================
# alsa
# =========================================================================
ALSA_LIST = ""
# Per-machine DISTRO_FEATURES customization
MACHINE_DISTRO_FEATURES_ADD = "efi optee"
MACHINE_DISTRO_FEATURES_REMOVE = "gstreamer opengl vulkan wayland x11"
@ -162,8 +149,11 @@ ST_VENDORFS = "0"
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
arm-trusted-firmware/tf-a-ccmp13-dvk-256MB-nand.stm32 \
fip/fip-ccmp13-dvk-256MB-optee.bin \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'tf-a-ccmp13-dvk-256MB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.stm32', \
'tf-a-ccmp13-dvk-256MB-${BOOTSCHEME_DEFAULT}-nand.stm32')} \
metadata-ccmp13-dvk.bin \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'fip-ccmp13-dvk-256MB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.bin', \
'fip-ccmp13-dvk-256MB-${BOOTSCHEME_DEFAULT}-nand.bin')} \
"
# Default overlayfs_etc mount point and type

View File

@ -12,7 +12,7 @@ DIGI_SOM = "ccmp15"
# Chip architecture
# =========================================================================
DEFAULTTUNE = "cortexa7thf-neon-vfpv4"
MACHINEOVERRIDES = "arm:armv7ve:stcommon:stm32mpcommon:stm32mp1common:${DIGI_FAMILY}:${DIGI_SOM}:ccmp15-dvk"
MACHINEOVERRIDES = "arm:armv7ve:stcommon:stm32mpcommon:stm32mp1common:stm32mp15common:${DIGI_FAMILY}:${DIGI_SOM}:ccmp15-dvk"
# =========================================================================
# boot device
@ -26,13 +26,24 @@ DEVICE_BOARD_ENABLE:SDCARD += "${@bb.utils.contains('BOOTDEVICE_LABELS', 'sdcard
# =========================================================================
# Last one is the default (the one the symlinks point at)
UBOOT_CONFIG = "ccmp15-dvk"
UBOOT_CONFIG[ccmp15-dvk] = "ccmp15-dvk_defconfig,,u-boot-dtb.${UBOOT_SUFFIX}"
UBOOT_CONFIG[ccmp15-dvk] = "ccmp15-dvk_defconfig,,u-boot.dtb"
# Remove STM32mp15 configs from ST layer
UBOOT_CONFIG:remove:stm32mp15common = "default_stm32mp15"
# List of U-Boot device tree to use
UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "1"
# =========================================================================
# Machine settings
# =========================================================================
# Define list of devicetree per board
STM32MP_DEVICETREE ??= "ccmp15-dvk-512MB ccmp15-dvk-1GB"
# Define list of devicetree per supported storage
STM32MP_DT_FILES_NAND = "ccmp15-dvk-512MB ccmp15-dvk-1GB"
STM32MP_DT_FILES_SDCARD = "${STM32MP_DT_FILES_NAND}"
STM32MP_DT_FILES_USB = "${STM32MP_DT_FILES_NAND}"
# Extra DTB for board - need to specify it with .dtb ...
STM32MP_KERNEL_DEVICETREE:ccmp15-dvk += " \
ccmp15_bt_test.dtbo \
@ -55,10 +66,17 @@ STM32MP_KERNEL_DEVICETREE:ccmp15-dvk += " \
ccmp15-dvk_v2.dtbo \
ccmp157-dvk.dtb \
"
# Set DTB load address to U-Boot fdt_addr_r
UBOOT_DTB_LOADADDRESS = "0xc4000000"
# List of U-Boot device tree to use
UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
FIT_CONF_DEFAULT_DTB = "ccmp157-dvk.dtb"
# =========================================================================
# optee
# =========================================================================
# Map OPTEE configuration to device tree list
OPTEE_DEVICETREE_optee = "${STM32MP_DEVICETREE}"
OPTEE_DEVICETREE_opteemin = "${STM32MP_DEVICETREE}"
# Supported boot schemes
BOOTSCHEME_LABELS ?= "opteemin"
BOOTSCHEME_DEFAULT ?= "opteemin"
# =========================================================================
# Machine features
@ -66,6 +84,9 @@ UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
MACHINE_FEATURES += "bluetooth"
MACHINE_FEATURES += "wifi"
MACHINE_FEATURES += "gpu"
# When BOOTSCHEME_LABELS is set to "opteemin", optee doesn't get automatically
# added to MACHINE_FEATURES. Add it manually
MACHINE_FEATURES += "optee"
# =========================================================================
# Firmware
@ -76,16 +97,6 @@ MACHINE_EXTRA_RRECOMMENDS += " \
${MACHINE_FIRMWARE} \
"
# =========================================================================
# Image
# =========================================================================
# Image FS types
# tar.xz is omitted here because it's already being added via
# st-machine-common-stm32mp.inc in the meta-st-stm32mp layer
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.ubifs recovery.ubifs squashfs", \
"ubifs boot.ubifs recovery.ubifs", d)}'
# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "dey-image-webkit"
@ -114,24 +125,10 @@ ST_TOOLS_FOR_SDK:remove = "nativesdk-gcc-arm-none-eabi"
# activate/deactivate the debug and trace on boot stage
ST_DEBUG_TRACE = "0"
# =========================================================================
# optee
# =========================================================================
# Map OPTEE configuration to device tree list
OPTEE_CONF = "${STM32MP_DEVICETREE}"
# =========================================================================
# Flashlayouts
# =========================================================================
# =========================================================================
# Kernel
# =========================================================================
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_SIGN_FIT_STM', '1', 'fitImage', 'zImage', d)}"
KERNEL_CLASSES = "kernel-fitimage"
KERNEL_ALT_IMAGETYPE = "Image vmlinux"
KERNEL_DEFCONFIG ?= "arch/arm/configs/ccmp1_defconfig"
# =========================================================================
# DEY settings
# =========================================================================
@ -152,31 +149,29 @@ MKUBIFS_ARGS ?= "-m 2048 -e 126976 -c 8191"
# Wireless external module
HAS_WIFI_VIRTWLANS = "true"
# Remove additional bluetooth packages
MACHINE_BLUETOOTH_EXTRA_INSTALL = ""
# XBee
XBEE_RESET_N_GPIO ?= "GPIOZ@2"
XBEE_TTY ?= "ttySTM2"
# =========================================================================
# alsa
# =========================================================================
ALSA_LIST = ""
# Per-machine DISTRO_FEATURES customization
MACHINE_DISTRO_FEATURES_ADD = "efi optee"
MACHINE_DISTRO_FEATURES_REMOVE = "vulkan x11"
# Disable use of vendorfs partition
ST_VENDORFS = "0"
ST_USERFS = "0"
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
arm-trusted-firmware/tf-a-ccmp15-dvk-512MB-nand.stm32 \
arm-trusted-firmware/tf-a-ccmp15-dvk-1GB-nand.stm32 \
fip/fip-ccmp15-dvk-512MB-optee.bin \
fip/fip-ccmp15-dvk-1GB-optee.bin \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'tf-a-ccmp15-dvk-512MB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.stm32', \
'tf-a-ccmp15-dvk-512MB-${BOOTSCHEME_DEFAULT}-nand.stm32')} \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'tf-a-ccmp15-dvk-1GB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.stm32', \
'tf-a-ccmp15-dvk-1GB-${BOOTSCHEME_DEFAULT}-nand.stm32')} \
metadata-ccmp15-dvk.bin \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'fip-ccmp15-dvk-512MB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.bin', \
'fip-ccmp15-dvk-512MB-${BOOTSCHEME_DEFAULT}-nand.bin')} \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'fip-ccmp15-dvk-1GB-${BOOTSCHEME_DEFAULT}-nand${SIGN_SUFFIX}.bin', \
'fip-ccmp15-dvk-1GB-${BOOTSCHEME_DEFAULT}-nand.bin')} \
"
# Default overlayfs_etc mount point and type

View File

@ -33,6 +33,10 @@ UBOOT_CONFIG = "ccmp25-dvk"
UBOOT_CONFIG[ccmp25-dvk] = "ccmp25-dvk_defconfig,,u-boot.dtb"
# List of U-Boot device tree to use
UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
# Index of USB device for installer
UBOOT_INSTALL_USB_INDEX = "0"
# Index of microSD device for installer
UBOOT_INSTALL_SD_INDEX = "2"
# =========================================================================
# Machine settings
@ -40,14 +44,17 @@ UBOOT_DEVICETREE = "${STM32MP_DEVICETREE}"
# Define list of devicetree per supported storage
STM32MP_DT_FILES_EMMC = "ccmp25-dvk"
STM32MP_DT_FILES_SDCARD = "${STM32MP_DT_FILES_EMMC}"
STM32MP_DT_FILES_USB = "${STM32MP_DT_FILES_EMMC}"
# Extra DTB for board - need to specify it with .dtb ...
# Extra files for the board must be specified while ensuring the main DTB
# file for FIT image generation remains the first item.
STM32MP_KERNEL_DEVICETREE:ccmp25-dvk += " \
ccmp25-dvk.dtb \
ccmp25_bt.dtbo \
ccmp25_wifi.dtbo \
ccmp25-dvk_e55rb-i-mw346-c-mipi-dsi.dtbo \
ccmp25-dvk_g101evn010-lvds.dtbo \
ccmp25-dvk_imx335-mipi-csi.dtbo \
ccmp25-dvk_ov5640-mipi-csi.dtbo \
ccmp25-dvk_mikroe-accel2-click.dtbo \
ccmp25-dvk_mikroe-gyro-click.dtbo \
ccmp25-dvk_mikroe-i2c-to-spi-click.dtbo \
@ -55,8 +62,8 @@ STM32MP_KERNEL_DEVICETREE:ccmp25-dvk += " \
ccmp25-dvk_n25q256a-spi-nor-flash.dtbo \
ccmp25-dvk_nhd-3-5-640480ef-msxp-mipi-dsi.dtbo \
ccmp25-dvk_usb-3-0-typec.dtbo \
ccmp25-dvk.dtb \
"
FIT_CONF_DEFAULT_DTB = "ccmp25-dvk.dtb"
# =========================================================================
# optee
@ -102,16 +109,6 @@ MACHINE_EXTRA_RRECOMMENDS += " \
${MACHINE_FIRMWARE} \
"
# =========================================================================
# Image
# =========================================================================
# Image FS types
# tar.xz is omitted here because it's already being added via
# st-machine-common-stm32mp.inc in the meta-st-stm32mp layer
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat recovery.vfat squashfs", \
"boot.vfat recovery.vfat ext4.gz", d)}'
# Default image for install scripts
DEFAULT_IMAGE_NAME ?= "dey-image-webkit"
@ -131,20 +128,17 @@ XBEE_RESET_N_GPIO ?= "GPIOD@6"
XBEE_SLEEP_RQ_GPIO ?= ""
XBEE_TTY ?= "ttySTM2"
# =========================================================================
# alsa
# =========================================================================
ALSA_LIST = ""
# Disable use of vendorfs and userfs partitions
ST_VENDORFS = "0"
ST_USERFS = "0"
# Boot artifacts to be copied from the deploy dir to the installer ZIP
BOOTABLE_ARTIFACTS = " \
tf-a-ccmp25-dvk-optee-emmc.stm32 \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'tf-a-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.stm32', \
'tf-a-ccmp25-dvk-optee-emmc.stm32')} \
metadata-ccmp25-dvk.bin \
fip-ccmp25-dvk-optee-emmc.bin \
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', 'fip-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.bin', \
'fip-ccmp25-dvk-optee-emmc.bin')} \
"
# Per-machine DISTRO_FEATURES customization

View File

@ -54,6 +54,10 @@ MACHINE_EXTRA_RRECOMMENDS += "${WIRELESS_MODULE}"
MACHINE_FEATURES += "accel-graphics wifi bluetooth cryptochip mca optee"
# For nativesdk packages that need to go to the toolchain depending on an
# specific machine feature.
SDK_MACHINE_FEATURES:append = " optee"
# TrustFence
TRUSTFENCE_SIGN_MODE = "HAB"

View File

@ -40,6 +40,10 @@ DDR_FIRMWARE_NAME = " \
MACHINE_FEATURES += "pci wifi bluetooth"
MACHINE_FEATURES:append:use-nxp-bsp = " optee jailhouse"
# For nativesdk packages that need to go to the toolchain depending on an
# specific machine feature.
SDK_MACHINE_FEATURES:append = " optee"
STORAGE_MEDIA = "mmc"
WLAN_P2P_INTERFACE = "wfd0"
@ -93,11 +97,6 @@ XBEE_RESET_N_GPIO ?= "gpio2@19"
XBEE_SLEEP_RQ_GPIO ?= ""
XBEE_TTY ?= "ttyLP3"
# Image FS types
IMAGE_FSTYPES ?= '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat recovery.vfat squashfs tar.xz", \
"boot.vfat recovery.vfat ext4.gz tar.xz sdcard.gz", d)}'
# Default overlayfs_etc mount point and type
OVERLAYFS_ETC_MOUNT_POINT ?= "/mnt/data"
OVERLAYFS_ETC_DEVICE ?= "/dev/mmcblk0p7"

View File

@ -11,13 +11,42 @@ DIGI_FAMILY = "ccmp1"
# Platform T-FA settings
TFA_SIGN_SUFFIX ?= "${@bb.utils.contains('TRUSTFENCE_SIGN', '1', '_signed', '', d)}"
# =========================================================================
# U-Boot
# =========================================================================
# Platform u-boot settings
UBOOT_PREFIX = "fip"
UBOOT_SUFFIX = "bin"
# Set U-Boot FIP settings
FIP_UBOOT_DTB = "u-boot"
# Include boot script into the FIT image
UBOOT_ENV = "boot"
# For FIT image usage
UBOOT_ENTRYPOINT = "0xc2000000"
UBOOT_DTB_LOADADDRESS = "0xc4000000"
UBOOT_DTBO_LOADADDRESS = "0xc4000000"
# Set InitRAMDisk load address to U-boot initrd_addr
UBOOT_RD_LOADADDRESS = "0xc4400000"
# U-Boot environment offset (within partition)
UBOOT_ENV_OFFSET ?= "0x0"
UBOOT_ENV_REDUND_OFFSET ?= "0x0"
# U-Boot environment size
UBOOT_ENV_SIZE ?= "0x20000"
# U-Boot environment range: size (in hex) in the environment partition that
# the U-Boot environment can take up (if undefined, it will take up all the
# available space in the environment partition)
UBOOT_ENV_RANGE ?= ""
FIP_SIGN_SUFFIX ?= "${@bb.utils.contains('TRUSTFENCE_SIGN', '1', '_Signed', '', d)}"
# =========================================================================
# Kernel
# =========================================================================
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_SIGN_FIT_STM', '1', 'fitImage', 'zImage', d)}"
KERNEL_CLASSES = "kernel-fitimage"
KERNEL_ALT_IMAGETYPE = "Image vmlinux"
KERNEL_DEFCONFIG ?= "arch/arm/configs/ccmp1_defconfig"
STORAGE_MEDIA = "mtd"
# Enable STM specific features
@ -32,18 +61,8 @@ ROOTFS_DEV_NAME ?= "rootfs"
ROOTFS_ENC_DEV = "${ROOTFS_DEV_NAME}"
ROOTFS_DEV_NAME_FINAL = "${@oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT_ROOTFS') == '1', '${ROOTFS_ENC_DEV}', '${ROOTFS_DEV_NAME}')}"
# U-Boot environment offset (within partition)
UBOOT_ENV_OFFSET ?= "0x0"
UBOOT_ENV_REDUND_OFFSET ?= "0x0"
# U-Boot environment size
UBOOT_ENV_SIZE ?= "0x20000"
# U-Boot environment range: size (in hex) in the environment partition that
# the U-Boot environment can take up (if undefined, it will take up all the
# available space in the environment partition)
UBOOT_ENV_RANGE ?= ""
# Set InitRAMDisk load address to U-boot initrd_addr
UBOOT_RD_LOADADDRESS = "0xc4400000"
# Disable by default programmer support:
STM32MP_DEVICETREE_PROGRAMMER_ENABLE ?= "0"
# OPTEE runtime packages to install
OPTEE_PKGS ??= "optee-client"
@ -53,19 +72,26 @@ MACHINE_EXTRA_RDEPENDS += " \
"
MACHINE_EXTRA_RRECOMMENDS:remove = "kernel-imagebootfs"
# Image FS types
# =========================================================================
# alsa
# =========================================================================
ALSA_LIST:stm32mp1common = ""
# Image FS types (set by meta-st-stm32mp layer)
# tar.xz is omitted here because it's already added by ST layer
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.ubifs recovery.ubifs squashfs", \
"boot.ubifs recovery.ubifs ubifs", d)}'
IMAGE_FSTYPES:remove = "ext4"
IMAGE_FSTYPES:append = " ${@bb.utils.contains('BOOTDEVICE_LABELS', 'sdcard', 'boot.vfat ext4.gz', '', d)}"
# List of supported boot devices
BOOTDEVICE_LABELS ?= "nand-4-256"
# Supported boot schemes
BOOTSCHEME_LABELS ?= "optee"
BOOTDEVICE_LABELS ?= "nand-4-256-1024 usb"
# Remove NAND-based ubi/ubifs images added by st-machine-common-stm32mp.inc
# because image_types_digi.bbclass already builds their own.
MULTIUBI_BUILD:remove = "nand_4_256"
IMAGE_FSTYPES:remove = "stmultiubi"
MULTIUBI_BUILD:remove = "nand_4_256_1024"
IMAGE_FSTYPES:remove = "multiubi"
# Wic files
WKS_FILE_DEPENDS ?= " \
@ -77,9 +103,15 @@ WKS_FILE_DEPENDS ?= " \
# Disable the generation of flashlayout files
ENABLE_FLASHLAYOUT_CONFIG = "0"
# Include boot script into the FIT image
UBOOT_ENV = "boot"
# Partitions to blacklist for swupdate:
# fsbl1, fsbl2, metadata1, metadata2, fip-a, fip-b
SWUPDATE_MTD_BLACKLIST = "0 1 2 3 4 5"
# Remove custom kernel headers from toolchain
ST_TOOLS_FOR_TARGET_SDK:remove = "kernel-headers"
# Skip warnings for packages using 32-bit APIs
INSANE_SKIP:append:pn-alsa-lib = " 32bit-time"
INSANE_SKIP:append:pn-ir-keytable = " 32bit-time"
INSANE_SKIP:append:pn-kbd = " 32bit-time"
INSANE_SKIP:append:pn-v4l-utils = " 32bit-time"

View File

@ -21,6 +21,12 @@ UBOOT_PREFIX = "fip"
UBOOT_SUFFIX = "bin"
# Set U-Boot FIP settings
FIP_UBOOT_DTB = "u-boot"
# Include boot script into the FIT image
UBOOT_ENV = "boot"
# For FIT image usage
UBOOT_ENTRYPOINT = "0x88000000"
UBOOT_DTB_LOADADDRESS = "0x8a000000"
UBOOT_DTBO_LOADADDRESS = "0x8a000000"
# =========================================================================
# trusted-firmware-a
@ -36,12 +42,14 @@ TF_A_METADATA_TOOL_ARGS ?= "-g -i 1 -b 2 -v ${TF_A_METADATA_TOOL_VERSION} ${DEVI
# optee-os
# =========================================================================
PREFERRED_PROVIDER_virtual/optee-os = "optee-os-stm32mp"
# OPTEE runtime packages to install
OPTEE_PKGS ??= "optee-client"
# =========================================================================
# Kernel
# =========================================================================
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', 'fitImage', 'Image.gz', d)}"
KERNEL_CLASSES = "${@bb.utils.contains('TRUSTFENCE_FIT_IMG', '1', 'kernel-fitimage', 'kernel-uimage', d)}"
KERNEL_IMAGETYPE = "${@bb.utils.contains('TRUSTFENCE_SIGN_FIT_STM', '1', 'fitImage', 'Image.gz', d)}"
KERNEL_CLASSES = "kernel-fitimage"
KERNEL_ALT_IMAGETYPE = "vmlinux"
KERNEL_DEFCONFIG ?= "arch/arm64/configs/ccmp2_defconfig"
@ -63,7 +71,7 @@ ROOTFS_DEV_NAME_FINAL = "${@oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT_ROOTFS'
STM32MP_DEVICETREE_PROGRAMMER_ENABLE ?= "0"
# List of supported boot devices
BOOTDEVICE_LABELS ?= "emmc"
BOOTDEVICE_LABELS ?= "emmc usb"
# Supported boot schemes
BOOTSCHEME_LABELS ?= "optee"
@ -77,7 +85,16 @@ MACHINE_EXTRA_RDEPENDS += " \
xbee-init \
"
# Image FS types
# =========================================================================
# alsa
# =========================================================================
ALSA_LIST:stm32mp2common = ""
# Image FS types (set by meta-st-stm32mp layer)
# tar.xz is omitted here because it's already added by ST layer
IMAGE_FSTYPES += '${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", \
"boot.vfat recovery.vfat squashfs", \
"boot.vfat recovery.vfat ext4.gz", d)}'
IMAGE_FSTYPES:remove = "ext4"
# =========================================================================

View File

@ -14,12 +14,12 @@ PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
# ccimx6qp 5.15 2017.03
# ccimx6ul 6.6 2024.04
# ccimx8x 6.6 2024.04 (packaged in imx-boot)
# ccimx8mn 5.15 2020.04 (packaged in imx-boot)
# ccimx8mm 5.15 2020.04 (packaged in imx-boot)
# ccimx8mn 6.6 2024.04 (packaged in imx-boot)
# ccimx8mm 6.6 2024.04 (packaged in imx-boot)
# ccimx91 6.6 2024.04 (packaged in imx-boot)
# ccimx93 6.6 2024.04 (packaged in imx-boot)
# ccmp15 5.15 2021.10
# ccmp13 5.15 2021.10
# ccmp15 6.6 2023.10
# ccmp13 6.6 2023.10
# ccmp25 6.6 2023.10
#
@ -115,3 +115,17 @@ BOOTLOADER_SEEK_BOOTPART ?= "0"
# This is otherwise forced by systemd because of hard-coded paths
# in systemd source code.
ROOT_HOME ?= "/root"
# Default IMAGE_FSTYPES for eMMC/NAND
IMAGE_FSTYPES ?= "${@ \
oe.utils.conditional('STORAGE_MEDIA', 'mmc', \
bb.utils.contains('IMAGE_FEATURES', 'read-only-rootfs', \
'boot.vfat recovery.vfat squashfs tar.xz', \
'boot.vfat recovery.vfat ext4.gz tar.xz', d), \
oe.utils.conditional('STORAGE_MEDIA', 'mtd', \
bb.utils.contains('IMAGE_FEATURES', 'read-only-rootfs', \
'boot.ubifs recovery.ubifs squashfs tar.xz', \
'boot.ubifs recovery.ubifs ubifs tar.xz', d), \
'' , d), \
d) \
}"

View File

@ -244,10 +244,10 @@ MACHINE_GSTREAMER_1_0_PLUGIN:mx9-nxp-bsp ?= "imx-gst1.0-plugin"
# to 'imx-nxp-bsp'
#
# GStreamer forked recipes
PREFERRED_VERSION_gstreamer1.0:imx-nxp-bsp ??= "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-bad:imx-nxp-bsp ??= "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-base:imx-nxp-bsp ??= "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-good:imx-nxp-bsp ??= "1.24.0.imx"
PREFERRED_VERSION_gstreamer1.0:imx-nxp-bsp ??= "1.24.7.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-bad:imx-nxp-bsp ??= "1.24.7.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-base:imx-nxp-bsp ??= "1.24.7.imx"
PREFERRED_VERSION_gstreamer1.0-plugins-good:imx-nxp-bsp ??= "1.24.7.imx"
# GStreamer copied recipes
PREFERRED_VERSION_gst-devtools:imx-nxp-bsp ??= "1.22.5.imx"
@ -297,8 +297,6 @@ PREFERRED_VERSION_weston:imx-mainline-bsp = ""
PREFERRED_VERSION_wayland-protocols:imx-nxp-bsp ??= "1.32.imx"
PREFERRED_VERSION_xwayland:imx-nxp-bsp ??= "23.2.5.imx"
# Use i.MX libdrm Version
PREFERRED_VERSION_libdrm:imx-nxp-bsp ??= "2.4.116.imx"

View File

@ -22,6 +22,9 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-imx/meta-imx-ml \
##DIGIBASE##/meta-selinux \
##DIGIBASE##/meta-timesys \
##DIGIBASE##/meta-flutter \
##DIGIBASE##/meta-flutter/meta-flutter-apps \
##DIGIBASE##/meta-clang \
##DIGIBASE##/meta-digi/meta-digi-arm \
##DIGIBASE##/meta-digi/meta-digi-dey \
"

View File

@ -14,3 +14,8 @@ Digi Embedded Yocto provides the following image recipes:
By default the image is XWayland-based so it provides a full Weston
desktop environment.
* dey-image-flutter: graphical Flutter image
Expansion of custom Digi core-image-base including full Flutter
framework support.

View File

@ -22,6 +22,9 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-imx/meta-imx-ml \
##DIGIBASE##/meta-selinux \
##DIGIBASE##/meta-timesys \
##DIGIBASE##/meta-flutter \
##DIGIBASE##/meta-flutter/meta-flutter-apps \
##DIGIBASE##/meta-clang \
##DIGIBASE##/meta-digi/meta-digi-arm \
##DIGIBASE##/meta-digi/meta-digi-dey \
"

View File

@ -14,3 +14,8 @@ Digi Embedded Yocto provides the following image recipes:
By default the image is XWayland-based so it provides a full Weston
desktop environment.
* dey-image-flutter: graphical Flutter image
Expansion of custom Digi core-image-base including full Flutter
framework support.

View File

@ -20,6 +20,9 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-webkit \
##DIGIBASE##/meta-selinux \
##DIGIBASE##/meta-timesys \
##DIGIBASE##/meta-flutter \
##DIGIBASE##/meta-flutter/meta-flutter-apps \
##DIGIBASE##/meta-clang \
##DIGIBASE##/meta-digi/meta-digi-arm \
##DIGIBASE##/meta-digi/meta-digi-dey \
"

View File

@ -14,3 +14,8 @@ Digi Embedded Yocto provides the following image recipes:
By default the image is XWayland-based so it provides a full Weston
desktop environment.
* dey-image-flutter: graphical Flutter image
Expansion of custom Digi core-image-base including full Flutter
framework support.

View File

@ -22,6 +22,9 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-imx/meta-imx-ml \
##DIGIBASE##/meta-selinux \
##DIGIBASE##/meta-timesys \
##DIGIBASE##/meta-flutter \
##DIGIBASE##/meta-flutter/meta-flutter-apps \
##DIGIBASE##/meta-clang \
##DIGIBASE##/meta-digi/meta-digi-arm \
##DIGIBASE##/meta-digi/meta-digi-dey \
"

View File

@ -14,3 +14,8 @@ Digi Embedded Yocto provides the following image recipes:
By default the image is XWayland-based so it provides a full Weston
desktop environment.
* dey-image-flutter: graphical Flutter image
Expansion of custom Digi core-image-base including full Flutter
framework support.

View File

@ -14,7 +14,7 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-openembedded/meta-multimedia \
##DIGIBASE##/meta-openembedded/meta-networking \
##DIGIBASE##/meta-openembedded/meta-webserver \
##DIGIBASE##/meta-qt5 \
##DIGIBASE##/meta-qt6 \
##DIGIBASE##/meta-swupdate \
##DIGIBASE##/meta-webkit \
##DIGIBASE##/meta-timesys \

View File

@ -20,6 +20,9 @@ BBLAYERS ?= " \
##DIGIBASE##/meta-timesys \
##DIGIBASE##/meta-st-stm32mp \
##DIGIBASE##/meta-st-x-linux-ai \
##DIGIBASE##/meta-flutter \
##DIGIBASE##/meta-flutter/meta-flutter-apps \
##DIGIBASE##/meta-clang \
##DIGIBASE##/meta-digi/meta-digi-arm \
##DIGIBASE##/meta-digi/meta-digi-dey \
"

View File

@ -15,6 +15,11 @@ Digi Embedded Yocto provides the following image recipes:
By default the image is Wayland-based so it provides a full Weston
desktop environment.
* dey-image-flutter: graphical Flutter image
Expansion of custom Digi core-image-base including full Flutter
framework support.
* core-image-base: a console-only image
Expansion of native core-image-base by including all the support for the

View File

@ -3,6 +3,10 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
# Forward-port the i.MX93 A0 fw from v0.1.0
SRC_URI:append:ccimx93 = " file://mx93a0-ahab-container.img"
IMX_SRCREV_ABBREV = "7b1e150"
SRC_URI[sha256sum] = "09165fe5df75ad665df304e89d494a02c5f379624604d230e1b595cb5ae3b5b8"
UNPACK_POSTFUNC = ""
UNPACK_POSTFUNC:ccimx93 = "copy_ele_a0_fw"
copy_ele_a0_fw() {

View File

@ -13,10 +13,10 @@ Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
index 0a8f12a26..55f83f462 100644
index 41fc3507f..1de30f40f 100644
--- a/plat/imx/imx8m/imx8mm/platform.mk
+++ b/plat/imx/imx8m/imx8mm/platform.mk
@@ -159,7 +159,7 @@ $(eval $(call add_define,BL32_BASE))
@@ -172,7 +172,7 @@ $(eval $(call add_define,BL32_BASE))
BL32_SIZE ?= 0x2000000
$(eval $(call add_define,BL32_SIZE))

View File

@ -27,10 +27,10 @@ index 312eb32d1..9a82be010 100644
/* memory region */
diff --git a/plat/imx/imx8m/imx8mn/platform.mk b/plat/imx/imx8m/imx8mn/platform.mk
index da4e40aa3..0e38cfa0b 100644
index 84519426c..964ed9e5c 100644
--- a/plat/imx/imx8m/imx8mn/platform.mk
+++ b/plat/imx/imx8m/imx8mn/platform.mk
@@ -65,7 +65,7 @@ $(eval $(call add_define,BL32_BASE))
@@ -77,7 +77,7 @@ $(eval $(call add_define,BL32_BASE))
BL32_SIZE ?= 0x2000000
$(eval $(call add_define,BL32_SIZE))

View File

@ -0,0 +1,67 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Fri, 11 Apr 2025 15:01:33 +0200
Subject: [PATCH] imx8mm: set BL32_BASE and map high DRAM for ccimx8mm support
Set BL32_BASE to 0x7e000000 (32MiB below the first gigabyte of DDR) to
align with the OP-TEE layout used across ccimx8mm variants. Add support
for high-memory DDR by defining and mapping an extra 1GB mem at 0x100000000
to support the 4GB variant.
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c | 1 +
plat/imx/imx8m/imx8mm/include/platform_def.h | 6 ++++--
plat/imx/imx8m/imx8mm/platform.mk | 2 +-
3 files changed, 6 insertions(+), 3 deletions(-)
diff --git a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
index 388deae2b0e8..76f8a34d12fb 100644
--- a/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
+++ b/plat/imx/imx8m/imx8mm/imx8mm_bl31_setup.c
@@ -51,6 +51,7 @@ static const mmap_region_t imx_mmap[] = {
MAP_REGION_FLAT(IMX_ROM_BASE, IMX_ROM_SIZE, MT_MEMORY | MT_RO), /* ROM code */
#ifndef PLAT_XLAT_TABLES_DYNAMIC
MAP_REGION_FLAT(IMX_DRAM_BASE, IMX_DRAM_SIZE, MT_MEMORY | MT_RW | MT_NS), /* DRAM */
+ MAP_REGION_FLAT(IMX_DRAM2_BASE, IMX_DRAM2_SIZE, MT_MEMORY | MT_RW | MT_NS), /* DRAM */
#endif
MAP_REGION_FLAT(IMX_TCM_BASE, IMX_TCM_SIZE, MT_MEMORY | MT_RW | MT_NS), /* TCM */
{0},
diff --git a/plat/imx/imx8m/imx8mm/include/platform_def.h b/plat/imx/imx8m/imx8mm/include/platform_def.h
index e721664087f8..44926451b2a2 100644
--- a/plat/imx/imx8m/imx8mm/include/platform_def.h
+++ b/plat/imx/imx8m/imx8mm/include/platform_def.h
@@ -69,8 +69,8 @@
#define PLAT_GICD_BASE U(0x38800000)
#define PLAT_GICR_BASE U(0x38880000)
-#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 32)
-#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 32)
+#define PLAT_VIRT_ADDR_SPACE_SIZE (1ull << 34)
+#define PLAT_PHY_ADDR_SPACE_SIZE (1ull << 34)
#ifdef SPD_trusty
#define MAX_XLAT_TABLES 10
@@ -125,6 +125,8 @@
#define IMX_CAAM_RAM_SIZE U(0x10000)
#define IMX_DRAM_BASE U(0x40000000)
#define IMX_DRAM_SIZE U(0xc0000000)
+#define IMX_DRAM2_BASE U(0x100000000)
+#define IMX_DRAM2_SIZE U(0x40000000)
#define IMX_TCM_BASE U(0x7E0000)
#define IMX_TCM_SIZE U(0x40000)
diff --git a/plat/imx/imx8m/imx8mm/platform.mk b/plat/imx/imx8m/imx8mm/platform.mk
index 1de30f40f397..4fe3cca34065 100644
--- a/plat/imx/imx8m/imx8mm/platform.mk
+++ b/plat/imx/imx8m/imx8mm/platform.mk
@@ -166,7 +166,7 @@ ERRATA_A53_835769 := 1
ERRATA_A53_843419 := 1
ERRATA_A53_855873 := 1
-BL32_BASE ?= 0xbe000000
+BL32_BASE ?= 0x7e000000
$(eval $(call add_define,BL32_BASE))
BL32_SIZE ?= 0x2000000

View File

@ -7,6 +7,7 @@ SRC_URI:append:ccimx8m = " \
file://0002-imx8mm-Disable-M4-debug-console.patch \
file://0003-imx8mn-Define-UART1-as-console-for-boot-stage.patch \
file://0004-imx8mn-Disable-M7-debug-console.patch \
file://0005-imx8mm-set-BL32_BASE-and-map-high-DRAM-for-ccimx8mm-.patch \
"
SRC_URI:append:ccimx91 = " \
file://0001-ccimx91-use-UART6-for-the-default-console.patch \

View File

@ -1,48 +0,0 @@
From: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
Date: Wed, 23 Sep 2020 10:15:08 +0200
Subject: [PATCH] imx8m: soc.mak: preserve dtbs after build
On commit ab433440269bbd5383b47ee60957e9906cda0b3b a dtb preprocess
was introduced to have compatibility with old U-Boots.
As part of those changes, the content of variable $(dtbs) was deleted
at the end of the build.
Since we added the dtbs variable as an argument, building is causing the
original dtb file to be removed, and a second build is failing since the
file pointed at by the dtbs variable does no longer exist.
Remove the file removal to avoid this.
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Gonzalo Ruiz <Gonzalo.Ruiz@digi.com>
Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
iMX8M/soc.mak | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak
index 6751759..5a96614 100644
--- a/iMX8M/soc.mak
+++ b/iMX8M/soc.mak
@@ -161,7 +161,7 @@ u-boot.itb: $(dtb) $(supp_dtbs)
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb) $(supp_dtbs)
BL32=$(TEE) DEK_BLOB_LOAD_ADDR=$(DEK_BLOB_LOAD_ADDR) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) ../$(SOC_DIR)/mkimage_fit_atf.sh $(dtb) $(supp_dtbs) > u-boot.its
mkimage -E -p $(FIT_EXTERNAL_POSITION) -f u-boot.its u-boot.itb
- @rm -f u-boot.its $(dtb)
+ @rm -f u-boot.its
dtb_ddr3l = valddr3l.dtb
$(dtb_ddr3l):
@@ -329,7 +329,8 @@ print_fit_hab: u-boot-nodtb.bin bl31.bin $(dtb) $(supp_dtbs)
./$(PAD_IMAGE) bl31.bin
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb) $(supp_dtbs)
FIT_DATA_POS=$(FIT_EXTERNAL_POSITION) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb) $(supp_dtbs)
- @rm -f $(dtb)
+ ./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb)
+ TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb)
print_fit_hab_ddr4: u-boot-nodtb.bin bl31.bin $(dtb_ddr4_evk) $(supp_dtbs)
./$(PAD_IMAGE) $(TEE)

View File

@ -13,7 +13,7 @@ Signed-off-by: Javier Viguera <javier.viguera@digi.com>
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak
index 5a96614..5901d5e 100644
index f1b37a4f425a..ffd70af8ac7d 100644
--- a/iMX8M/soc.mak
+++ b/iMX8M/soc.mak
@@ -1,5 +1,6 @@
@ -32,7 +32,7 @@ index 5a96614..5901d5e 100644
flash_evk_no_hdmi_dual_bootloader: $(MKIMG) u-boot-spl-ddr.bin u-boot.itb
./mkimage_imx8 -version $(VERSION) -fit -loader u-boot-spl-ddr.bin $(SPL_LOAD_ADDR) -out $(OUTIMG)
@@ -325,12 +326,12 @@ flash_dp_spl_uboot: flash_dp_evk
@@ -325,10 +326,10 @@ flash_dp_spl_uboot: flash_dp_evk
flash_spl_uboot: flash_evk_no_hdmi
print_fit_hab: u-boot-nodtb.bin bl31.bin $(dtb) $(supp_dtbs)
@ -40,10 +40,8 @@ index 5a96614..5901d5e 100644
+ ./$(PAD_IMAGE) $(TEE) 2>&1 | tee $(MKIMAGE_LOG)
./$(PAD_IMAGE) bl31.bin
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb) $(supp_dtbs)
FIT_DATA_POS=$(FIT_EXTERNAL_POSITION) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb) $(supp_dtbs)
./$(PAD_IMAGE) u-boot-nodtb.bin $(dtb)
- TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb)
+ { echo $@; TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb) 2>&1; } | tee -a $(MKIMAGE_LOG)
- FIT_DATA_POS=$(FIT_EXTERNAL_POSITION) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb) $(supp_dtbs)
+ { echo $@; FIT_DATA_POS=$(FIT_EXTERNAL_POSITION) TEE_LOAD_ADDR=$(TEE_LOAD_ADDR) ATF_LOAD_ADDR=$(ATF_LOAD_ADDR) VERSION=$(VERSION) ../$(SOC_DIR)/print_fit_hab.sh $(PRINT_FIT_HAB_OFFSET) $(dtb) $(supp_dtbs) 2>&1; } | tee -a $(MKIMAGE_LOG)
@rm -f $(dtb)
print_fit_hab_ddr4: u-boot-nodtb.bin bl31.bin $(dtb_ddr4_evk) $(supp_dtbs)
./$(PAD_IMAGE) $(TEE)

View File

@ -0,0 +1,49 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Tue, 5 Dec 2023 18:10:43 +0100
Subject: [PATCH] imx8m: print_fit_hab: follow symlinks
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
iMX8M/print_fit_hab.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/iMX8M/print_fit_hab.sh b/iMX8M/print_fit_hab.sh
index 06fca5f88554..a65f78c07a0f 100755
--- a/iMX8M/print_fit_hab.sh
+++ b/iMX8M/print_fit_hab.sh
@@ -33,7 +33,7 @@ else
let uboot_sign_off=$((fit_off - 0x8000 - ivt_off + $FIT_DATA_POS))
fi
-let uboot_size=$(stat --printf="%s" $BL33)
+let uboot_size=$(stat -L --printf="%s" $BL33)
let uboot_load_addr=0x40200000
let last_sign_off=$(((uboot_sign_off + uboot_size + 3) & ~3))
@@ -50,7 +50,7 @@ for dtname in $*
do
if [ ${cnt} != 0 ]
then
- let fdt${cnt}_size=$(stat --printf="%s" $dtname)
+ let fdt${cnt}_size=$(stat -L --printf="%s" $dtname)
let fdt${cnt}_sign_off=$((last_sign_off))
let fdt${cnt}_load_addr=$((last_load_addr))
@@ -71,13 +71,13 @@ done
let atf_sign_off=$((last_sign_off))
let atf_load_addr=$ATF_LOAD_ADDR
-let atf_size=$(stat --printf="%s" $BL31)
+let atf_size=$(stat -L --printf="%s" $BL31)
if [ ! -f $BL32 ]; then
let tee_size=0x0
let tee_sign_off=$((atf_sign_off + atf_size))
else
- let tee_size=$(stat --printf="%s" $BL32)
+ let tee_size=$(stat -L --printf="%s" $BL32)
let tee_sign_off=$(((atf_sign_off + atf_size + 3) & ~3))
let tee_load_addr=$TEE_LOAD_ADDR

View File

@ -0,0 +1,26 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Mon, 7 Apr 2025 16:57:39 +0200
Subject: [PATCH] imx8mm: adjust TEE_LOAD_ADDR for ccimx8mm
This change aligns with equivalent changes in the Optee and ATF.
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
iMX8M/soc.mak | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/iMX8M/soc.mak b/iMX8M/soc.mak
index ffd70af8ac7d..7ab1ea099894 100644
--- a/iMX8M/soc.mak
+++ b/iMX8M/soc.mak
@@ -35,7 +35,7 @@ PLAT = imx8mm
HDMI = no
SPL_LOAD_ADDR = 0x7E1000
SPL_FSPI_LOAD_ADDR = 0x7E2000
-TEE_LOAD_ADDR ?= 0xbe000000
+TEE_LOAD_ADDR ?= 0x7e000000
ATF_LOAD_ADDR = 0x00920000
VAL_BOARD = val
#define the F(Q)SPI header file

View File

@ -3,8 +3,9 @@
FILESEXTRAPATHS:prepend := "${THISDIR}/files:"
SRC_URI:append:ccimx8m = " \
file://0001-imx8m-soc.mak-preserve-dtbs-after-build.patch \
file://0002-imx8m-soc.mak-capture-commands-output-into-a-log-fil.patch \
file://0003-imx8m-print_fit_hab-follow-symlinks.patch \
file://0004-imx8mm-adjust-TEE_LOAD_ADDR-for-ccimx8mm.patch \
"
SRC_URI:append:ccimx8x = " \
file://0001-iMX8QX-soc.mak-capture-commands-output-into-a-log-fi.patch \

View File

@ -1,38 +0,0 @@
# Copyright 2021-2024 NXP
DESCRIPTION = "i.MX Hantro V4L2 Daemon"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=cd8bc2a79509c22fc9c1782a151210b1"
DEPENDS = "imx-vpu-hantro"
DEPENDS:append:mx8mp-nxp-bsp = " imx-vpu-hantro-vc"
SRC_URI = "${FSL_MIRROR}/${BP}-${IMX_SRCREV_ABBREV}.tar.gz"
IMX_SRCREV_ABBREV = "67fa7a7"
SRC_URI[md5sum] = "f9f3b18b33afdc1ef4d6cbef7edc8a54"
SRC_URI[sha256sum] = "79aecdf7fbeb90ca7322a6dbc61465d1d2996f6fa5d880019066cc873621238f"
S = "${WORKDIR}/${BP}-${IMX_SRCREV_ABBREV}"
PLATFORM:mx8mm-nxp-bsp = "IMX8MM"
PLATFORM:mx8mq-nxp-bsp = "IMX8MQ"
PLATFORM:mx8mp-nxp-bsp = "IMX8MP"
EXTRA_OEMAKE = " \
CROSS_COMPILE="${HOST_PREFIX}" \
SDKTARGETSYSROOT="${STAGING_DIR_TARGET}" \
CTRLSW_HDRPATH="${STAGING_INCDIR}" \
PLATFORM="${PLATFORM}" \
"
do_compile () {
oe_runmake clean
oe_runmake PLATFORM="${PLATFORM}" all
}
do_install () {
oe_runmake install DEST_DIR="${D}"
}
PACKAGE_ARCH = "${MACHINE_SOCARCH}"
COMPATIBLE_MACHINE = "(mx8mq-nxp-bsp|mx8mm-nxp-bsp|mx8mp-nxp-bsp)"

View File

@ -1,40 +0,0 @@
# Copyright 2017-2020,2023-2024 NXP
DESCRIPTION = "i.MX Hantro VPU library"
LICENSE = "Proprietary"
LIC_FILES_CHKSUM = "file://COPYING;md5=10c0fda810c63b052409b15a5445671a"
PROVIDES = "virtual/imxvpu"
SRC_URI = "${FSL_MIRROR}/${BP}-${IMX_SRCREV_ABBREV}.bin;fsl-eula=true"
IMX_SRCREV_ABBREV = "7a434fc"
SRC_URI[md5sum] = "ed9d128727327e3a1a227fab9760ceff"
SRC_URI[sha256sum] = "1c2f78444051ef0c7e6107e1ddb082791d987d203f94f20f08a84a289a8eb984"
S = "${WORKDIR}/${BP}-${IMX_SRCREV_ABBREV}"
inherit fsl-eula-unpack use-imx-headers
PARALLEL_MAKE="-j 1"
PLATFORM:mx8mm-nxp-bsp = "IMX8MM"
PLATFORM:mx8mq-nxp-bsp = "IMX8MQ"
PLATFORM:mx8mp-nxp-bsp = "IMX8MP"
EXTRA_OEMAKE = " \
CROSS_COMPILE="${HOST_PREFIX}" \
SDKTARGETSYSROOT="${STAGING_DIR_TARGET}" \
PLATFORM="${PLATFORM}" \
"
do_install () {
oe_runmake install DEST_DIR="${D}"
}
FILES:${PN} += "/unit_tests"
RDEPENDS:${PN} += "imx-vpu-hantro-daemon"
PACKAGE_ARCH = "${MACHINE_SOCARCH}"
COMPATIBLE_MACHINE = "(mx8mq-nxp-bsp|mx8mm-nxp-bsp|mx8mp-nxp-bsp)"

View File

@ -1,37 +0,0 @@
SUMMARY = "Edge TPU runtime library for Coral devices"
HOMEPAGE = "https://coral.googlesource.com/edgetpu"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://libedgetpu/LICENSE.txt;md5=c0e85c67b919e863a1a7a3da109dc40d"
SRC_URI = "https://dl.google.com/coral/edgetpu_api/edgetpu_runtime_20210119.zip"
SRC_URI[md5sum] = "5c0b992d73683e395d6993761064d2df"
SRC_URI[sha256sum] = "b23b2c5a227d7f0e65dcc91585028d27c12e764f8ce4c4db3f114be4a49af3ae"
S = "${WORKDIR}/edgetpu_runtime"
RDEPENDS:${PN} = "libusb1"
# The library files in direct correspond to max frequency, those in throttled correspond to reduced frequency.
LIBEDGETPU_TYPE = "direct"
LIBEDGETPU_ARCH = "aarch64"
do_install() {
install -d ${D}${sysconfdir}/udev/rules.d
install -m 0644 ${S}/libedgetpu/edgetpu-accelerator.rules \
${D}${sysconfdir}/udev/rules.d/99-edgetpu-accelerator.rules
install -d ${D}/${libdir}
install -m 755 ${S}/libedgetpu/${LIBEDGETPU_TYPE}/${LIBEDGETPU_ARCH}/libedgetpu.so.1.0 \
${D}/${libdir}/libedgetpu.so.1.0
ln -sf ${libdir}/libedgetpu.so.1.0 ${D}/${libdir}/libedgetpu.so.1
ln -sf ${libdir}/libedgetpu.so.1.0 ${D}/${libdir}/libedgetpu.so
install -d ${D}/${includedir}
install -m 755 ${S}/libedgetpu/edgetpu.h ${D}/${includedir}/edgetpu.h
}
FILES:${PN} += "${libdir}/libedgetpu.so \
${includedir}/edgetpu.h \
"
INSANE_SKIP:${PN} += "already-stripped"

View File

@ -0,0 +1,55 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Fri, 11 Apr 2025 15:13:18 +0200
Subject: [PATCH] plat-imx: add support for ConnectCore 8M Mini
Add support for ccimx8mmdvk platform flavor:
* Define a DDR size that supports up to 4GB.
* Force TZDRAM base to 0x7e000000 for consistent OP-TEE base address
across all ccimx8mm variants, regardless of actual DDR size.
* Set UART base to UART1_BASE.
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
core/arch/arm/plat-imx/conf.mk | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/core/arch/arm/plat-imx/conf.mk b/core/arch/arm/plat-imx/conf.mk
index d1fc2882e598..62cc51b61063 100644
--- a/core/arch/arm/plat-imx/conf.mk
+++ b/core/arch/arm/plat-imx/conf.mk
@@ -63,6 +63,7 @@ mx8mq-flavorlist = \
mx8mqevk
mx8mm-flavorlist = \
+ ccimx8mmdvk \
mx8mmevk \
mx8mm_cl_iot_gate
@@ -412,6 +413,15 @@ CFG_DDR_SIZE ?= 0xc0000000
CFG_UART_BASE ?= UART1_BASE
endif
+ifneq (,$(filter $(PLATFORM_FLAVOR),ccimx8mmdvk))
+# Configure DDR size for the variant with maximum memory
+CFG_DDR_SIZE ?= 0x100000000
+CFG_UART_BASE ?= UART1_BASE
+$(call force,CFG_CCIMX8MM,y)
+$(call force,CFG_CORE_LARGE_PHYS_ADDR,y)
+$(call force,CFG_CORE_ARM64_PA_BITS,36)
+endif
+
ifneq (,$(filter $(PLATFORM_FLAVOR),mx8mmevk))
CFG_DDR_SIZE ?= 0x80000000
CFG_UART_BASE ?= UART2_BASE
@@ -587,6 +597,9 @@ else ifneq (,$(filter y, $(CFG_MX95)))
CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) + 0x0C000000)
# On i.MX95 we will have 32MB OP-TEE memory and 2MB Shared Memory after that.
CFG_TZDRAM_SIZE ?= 0x02000000
+else ifneq (,$(filter y, $(CFG_CCIMX8MM)))
+# Set the Optee base address at the end of the first GB (where 0x02000000 = CFG_TZDRAM_SIZE + CFG_SHMEM_SIZE).
+CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) - 0x02000000 + 0x40000000)
else ifneq (,$(filter y, $(CFG_MX8MM) $(CFG_MX8MQ) $(CFG_MX8QM) $(CFG_MX8QX)))
CFG_TZDRAM_START ?= ($(CFG_DRAM_BASE) - 0x02000000 + $(CFG_DDR_SIZE))
else

View File

@ -3,6 +3,10 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI += "file://environment.d-optee-sdk.sh"
SRC_URI:append:ccimx8mm = " \
file://0001-plat-imx-add-support-for-ConnectCore-8M-Mini.patch \
"
SRC_URI:append:ccimx91 = " \
file://0001-core-imx-support-ccimx91-dvk.patch \
"
@ -12,6 +16,7 @@ SRC_URI:append:ccimx93 = " \
file://0002-core-ccimx93-enable-AES_HUK-trusted-application.patch \
"
PLATFORM_FLAVOR:ccimx8mm = "ccimx8mmdvk"
PLATFORM_FLAVOR:ccimx91 = "ccimx91dvk"
PLATFORM_FLAVOR:ccimx93 = "ccimx93dvk"

View File

@ -1,10 +1,32 @@
#
# Copyright (C) 2024, Digi International Inc.
# Copyright (C) 2024,2025, Digi International Inc.
#
# Inherit custom DIGI sign class to skip signing tool and key parsing restrictions
inherit sign-stm32mp-digi
# Add optee-usb FIP configuration
STM32MP_DEVICETREE_USB = " ${@' '.join('%s' % dt_file for dt_file in list(dict.fromkeys((d.getVar('STM32MP_DT_FILES_USB') or '').split())))} "
FIP_CONFIG[optee-usb] ?= "optee,${STM32MP_DEVICETREE_USB},default:optee,usb"
FIP_CONFIG += "${@bb.utils.contains('BOOTSCHEME_LABELS', 'optee', bb.utils.contains('BOOTDEVICE_LABELS', 'usb', 'optee-usb', '', d), '', d)}"
# Obtain password to use in FIP generation
# Get password from file using the given key index
do_deploy[prefuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'set_fip_sign_key', '', d)}"
python set_fip_sign_key() {
passfile = d.getVar('TRUSTFENCE_PASSWORD_FILE')
if (os.path.isfile(passfile)):
with open(passfile, "r") as file:
p = file.read().strip()
if (p):
d.setVar('SIGN_KEY_PASS', p)
}
# Addons parameters for FIP_WRAPPER
FIP_SOC_SEARCH ?= ""
FIP_SOC_SEARCH:ccmp2 ?= " stm32mp25 "
FIP_SOC_SEARCH ?= " ${STM32MP_SOC_NAME} "
FIP_SOC_MATCH ?= " ${DIGI_SOM} "
FWDDR_SUFFIX ?= "bin"
# Deploy the fip binary for current target
do_deploy() {
@ -67,7 +89,9 @@ do_deploy() {
unset k
for soc in ${STM32MP_SOC_NAME}; do
k=$(expr $k + 1)
[ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] && sign_key=$(echo ${SIGN_KEY_PATH_LIST} | cut -d',' -f${k})
if [ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] || [ "$(echo ${dt} | grep -c ${FIP_SOC_MATCH})" -eq 1 ] ;then
sign_key=$(echo ${SIGN_KEY_PATH_LIST} | cut -d',' -f${k})
fi
done
fi
FIP_PARAM_SIGN="--sign --signature-key $sign_key --signature-key-pass $sign_single_key_pass"
@ -134,37 +158,30 @@ do_deploy() {
--output ${DEPLOYDIR}/${FIP_DIR_FIP}
done
done
# Create symlinks in DEPLOYDIR
# Remove trailing slash (/) from ST variables
FIP_BASEDIR="$(echo ${FIP_DIR_FIP} | cut -c2-)"
unset i
for config in ${FIP_CONFIG}; do
i="$(expr ${i} + 1)"
dt_config=$(echo ${FIP_DEVICETREE} | cut -d',' -f${i})
for dt in ${dt_config}; do
FIP_FILENAME="${FIP_BASENAME}-${dt}-${config}${FIP_ENCRYPT_SUFFIX}${FIP_SIGN_SUFFIX}.${FIP_SUFFIX}"
if [ -f "${DEPLOYDIR}/${FIP_BASEDIR}/${FIP_FILENAME}" ]; then
cd "${DEPLOYDIR}"
# symlink FIP
ln -sf "${FIP_BASEDIR}/${FIP_FILENAME}" "${DEPLOYDIR}/"
fi
FIP_DDR_FILENAME="${FIP_BASENAME}-${dt}-ddr-${config}${FIP_ENCRYPT_SUFFIX}${FIP_SIGN_SUFFIX}.${FWDDR_SUFFIX}"
if [ -f "${DEPLOYDIR}/${FIP_BASEDIR}/${FIP_DDR_FILENAME}" ]; then
cd "${DEPLOYDIR}"
# symlink DDR firmware (needed for USB recovery)
ln -sf "${FIP_BASEDIR}/${FIP_DDR_FILENAME}" "${DEPLOYDIR}/"
fi
done
done
}
addtask deploy before do_build after do_compile
FWDDR_SUFFIX ?= "bin"
# This runs after 'sysroot_populate()' which populates all
# FIP artifacts on the image deploy dir.
# The purpose of this function is to create symlinks to the files needed
# by the uuu installer that are located in subdirectories.
deploy_symlinks_fip() {
# Create symlinks in DEPLOY_DIR_IMAGE
# Remove trailing slash (/) from ST variables
FIP_BASEDIR="$(echo ${FIP_DIR_FIP} | cut -c2-)"
unset i
for config in ${FIP_CONFIG}; do
i="$(expr ${i} + 1)"
dt_config=$(echo ${FIP_DEVICETREE} | cut -d',' -f${i})
for dt in ${dt_config}; do
FIP_FILENAME="${FIP_BASENAME}-${dt}-${config}${FIP_SIGN_SUFFIX}.${FIP_SUFFIX}"
if [ -f "${DEPLOY_DIR_IMAGE}/${FIP_BASEDIR}/${FIP_FILENAME}" ]; then
cd "${DEPLOY_DIR_IMAGE}"
# symlink FIP
ln -sf "${FIP_BASEDIR}/${FIP_FILENAME}" "${DEPLOY_DIR_IMAGE}/"
fi
if [ -f "${DEPLOY_DIR_IMAGE}/${FIP_BASEDIR}/${FIP_BASENAME}-${dt}-ddr-${config}.${FWDDR_SUFFIX}" ]; then
cd "${DEPLOY_DIR_IMAGE}"
# symlink DDR firmware (needed for USB recovery)
ln -sf "${FIP_BASEDIR}/${FIP_BASENAME}-${dt}-ddr-${config}.${FWDDR_SUFFIX}" "${DEPLOY_DIR_IMAGE}/"
fi
done
done
}
SYSROOT_PREPROCESS_FUNCS += "deploy_symlinks_fip"

View File

@ -2,6 +2,9 @@
# Copyright (C) 2022-2025, Digi International Inc.
#
# Inherit custom DIGI sign class to skip signing tool and key parsing restrictions
inherit sign-stm32mp-digi
# Select internal or Github TF-A repo
TFA_URI_STASH = "${DIGI_MTK_GIT}/emp/arm-trusted-firmware.git;protocol=ssh"
TFA_URI_GITHUB = "${DIGI_GITHUB_GIT}/arm-trusted-firmware.git;protocol=https"
@ -14,7 +17,25 @@ SRC_URI = " \
${TFA_GIT_URI};branch=${SRCBRANCH} \
"
TF_A_CONFIG[nand] = "${DEVICE_BOARD_ENABLE:NAND},STM32MP_RAW_NAND=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_NAND}' if ${TF_A_MTD_START_OFFSET_NAND} else ''} STM32MP_USB_PROGRAMMER=1"
# stm32mp15 = header-version 1
SIGN_TOOL_EXTRA_soc:ccmp15 = " ${@bb.utils.contains('ENCRYPT_ENABLE', '1', '-of ${TF_A_ENCRYPT_OF}', '', d)}"
# stm32mp13 = header-version 2
SIGN_TOOL_EXTRA_soc:ccmp13 = " ${@bb.utils.contains('ENCRYPT_ENABLE', '1', '-of ${TF_A_ENCRYPT_OF}', '-of ${TF_A_SIGN_OF}', d)}"
# stm32mp2 = header-version 2.2
SIGN_TOOL_EXTRA_soc:stm32mp2common = " --header-version 2.2 ${@bb.utils.contains('ENCRYPT_ENABLE', '1', '-of ${TF_A_ENCRYPT_OF}', '-of ${TF_A_SIGN_OF}', d)}"
TF_A_CONFIG[optee-nand] = "\
${STM32MP_DT_FILES_NAND},\
${TF_A_CONFIG_OPTS_optee} ${TF_A_CONFIG_OPTS_features} ${TF_A_CONFIG_OPTS_fwupdate} STM32MP_RAW_NAND=1 STM32MP_USB_PROGRAMMER=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_NAND}' if ${TF_A_MTD_START_OFFSET_NAND} else ''},\
${TF_A_CONFIG_BASENAME_BIN},\
${TF_A_CONFIG_MAKE_TARGET},\
${TF_A_CONFIG_DEPLOY_FTYPE} ${TF_A_CONFIG_DEPLOY_EXTRA}"
TF_A_CONFIG[opteemin-nand] ?= "\
${STM32MP_DT_FILES_NAND},\
${TF_A_CONFIG_OPTS_optee} ${TF_A_CONFIG_OPTS_features} ${TF_A_CONFIG_OPTS_fwupdate} STM32MP_RAW_NAND=1 STM32MP_USB_PROGRAMMER=1 ${@'STM32MP_FORCE_MTD_START_OFFSET=${TF_A_MTD_START_OFFSET_NAND}' if ${TF_A_MTD_START_OFFSET_NAND} else ''},\
${TF_A_CONFIG_BASENAME_BIN},\
${TF_A_CONFIG_MAKE_TARGET},\
${TF_A_CONFIG_DEPLOY_FTYPE} ${TF_A_CONFIG_DEPLOY_EXTRA}"
# TF_A_CONFIG[uart] (same as 'optee-programmer-uart')
TF_A_CONFIG[uart] ?= "\
${STM32MP_DEVICETREE_PROGRAMMER},\
@ -43,28 +64,252 @@ do_install[depends] = " \
"
# Generate PKI tree if it doesn't exist.
# This is an append to do_compile because in this recipe, the do_deploy
# task comes right after do_compile, and the keys must be ready before that.
do_compile:append() {
# This is an prepend to do_compile because in this recipe, the keys
# must be ready before that.
do_generate_pki_tree() {
if ${@oe.utils.conditional('TRUSTFENCE_SIGN','1','true','false',d)}; then
check_gen_pki_tree
fi
}
addtask generate_pki_tree before do_compile after do_configure
# Obtain password to use in FIP generation
# Obtain password to use in TF-A generation
# Get password from file using the given key index
do_deploy[prefuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'set_fip_sign_key', '', d)}"
python set_fip_sign_key() {
do_compile[prefuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'set_tfa_sign_key', '', d)}"
python set_tfa_sign_key() {
passfile = d.getVar('TRUSTFENCE_PASSWORD_FILE')
if (os.path.isfile(passfile)):
with open(passfile, "r") as file:
p = file.read().strip()
if (p):
d.setVar('FIP_SIGN_KEY_PASS', p)
d.setVar('SIGN_KEY_PASS', p)
}
TF_A_SOC_MATCH ?= " ${DIGI_SOM} "
do_compile() {
unset LDFLAGS
unset CFLAGS
unset CPPFLAGS
unset i
for config in ${TF_A_CONFIG}; do
i=$(expr $i + 1)
# Initialize devicetree list, extra make options and tf-a basename
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
extra_opt=$(echo ${TF_A_EXTRA_OPTFLAGS} | cut -d',' -f${i})
tfa_basename=$(echo ${TF_A_BINARIES} | cut -d',' -f${i})
tf_a_make_target=$(echo ${TF_A_MAKE_TARGET} | cut -d',' -f${i})
for dt in ${dt_config}; do
# Init specific soc settings
soc_extra_opt=""
soc_suffix=""
soc_name=""
if [ -n "${STM32MP_SOC_NAME}" ]; then
for soc in ${STM32MP_SOC_NAME}; do
if [ "$(echo ${dt} | grep -c ${soc})" -eq 1 ]; then
soc_extra_opt="$(echo ${soc} | awk '{print toupper($0)}')=1"
soc_suffix="-${soc}"
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA}"
case ${soc} in
stm32mp13)
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA_stm32mp13}"
;;
stm32mp15)
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA_stm32mp15}"
if echo ${config} | grep -q 'optee-'; then
soc_extra_opt="${soc_extra_opt} STM32MP1_OPTEE_IN_SYSRAM=1"
fi
;;
stm32mp21)
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA_stm32mp21}"
;;
stm32mp23)
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA_stm32mp23}"
;;
stm32mp25)
SIGN_TOOL_EXTRA_soc="${SIGN_TOOL_EXTRA_stm32mp25}"
;;
esac
fi
done
fi
mkdir -p ${B}/${config}${soc_suffix}-${dt}
if [ "${TF_A_ENABLE_METADATA}" = "1" ]; then
rm -rf "${B}/${config}${soc_suffix}-${dt}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
${TF_A_METADATA_TOOL} ${TF_A_METADATA_TOOL_ARGS} "${B}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
fi
# generate dt to check the content
oe_runmake -C "${S}" BUILD_PLAT="${B}/${config}${soc_suffix}-${dt}" DTB_FILE_NAME="${dt}.dtb" ${extra_opt} ${soc_extra_opt} dtbs
# check which pmic1l is present on dtb
pcmi1_present=$(${STAGING_BINDIR_NATIVE}/fdtdump ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb 2>/dev/null | grep -c "st,stpmic1l" || ${HOSTTOOLS_DIR}/true)
if [ -f "${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb" ]; then
if [ $pcmi1_present -gt 0 ]; then
# st pmic1l is present, need to force to compilation with specific pcmi1l optionn
soc_extra_opt="${soc_extra_opt} STM32MP_STPMIC1L=1"
fi
fi
# Init specific ddr settings
ddr_extra_opt=""
if [ "${TF_A_FWDDR}" = "1" ]; then
# Detect ddr type if it's present
if [ -f "${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb" ]; then
ddr_dtb_node=$(${STAGING_BINDIR_NATIVE}/fdtget -l ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb /soc | grep ddr | head -n 1)
ddr_propertie=$(${STAGING_BINDIR_NATIVE}/fdtget ${B}/${config}${soc_suffix}-${dt}/fdts/${dt}-bl2.dtb /soc/${ddr_dtb_node} st,mem-name || echo "none")
ddr_target=""
# potentials value of ddr_propertie:
# DDR3 16bits
# DDR4 32bits
# DDR4 8Gbits
# LPDDR4 32bits
case ${ddr_propertie} in
DDR3*)
ddr_extra_opt=" STM32MP_DDR3_TYPE=1 "
ddr_target="ddr3"
;;
DDR4*)
ddr_extra_opt=" STM32MP_DDR4_TYPE=1 "
ddr_target="ddr4"
;;
LPDDR4*)
ddr_extra_opt=" STM32MP_LPDDR4_TYPE=1 "
ddr_target="lpddr4"
;;
*)
bbfatal "Missing st,mem-name information for ${dt}"
;;
esac
bbnote "${dt}: ${tf_a_make_target} -> ${ddr_extra_opt}"
# Copy TF-A ddr binary with explicit devicetree filename
if [ -s "${FWDDR_DIR}/${ddr_target}_pmu_train.bin" ]; then
install -m 644 "${FWDDR_DIR}/${ddr_target}_pmu_train.bin" "${B}/${config}${soc_suffix}-${dt}/${FWDDR_NAME}-${dt}-${config}.${FWDDR_SUFFIX}"
else
bbfatal "Missing ddr firmware file ${ddr_target}_pmu_train.bin for ${dt}"
fi
fi
fi
encrypt_extra_opt=""
if [ "${ENCRYPT_ENABLE}" = "1" ]; then
encrypt_key="${ENCRYPT_FIP_KEY_PATH_LIST}"
if [ -n "${STM32MP_ENCRYPT_SOC_NAME}" ]; then
unset k
for soc in ${STM32MP_ENCRYPT_SOC_NAME}; do
k=$(expr $k + 1)
[ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] && encrypt_key=$(echo ${ENCRYPT_FIP_KEY_PATH_LIST} | cut -d',' -f${k})
done
fi
if [ "$(file "${encrypt_key}" | sed 's#.*: \(.*\)$#\1#')" = "ASCII text" ]; then
# The encryption key is already available in hexadecimal format, so just extract it from file
encrypt_key="$(cat ${encrypt_key})"
else
encrypt_key="$(hexdump -e '/1 "%02x"' ${encrypt_key})"
fi
encrypt_extra_opt="ENC_KEY=${encrypt_key}"
fi
oe_runmake -C "${S}" BUILD_PLAT="${B}/${config}${soc_suffix}-${dt}" DTB_FILE_NAME="${dt}.dtb" ${extra_opt} ${soc_extra_opt} ${ddr_extra_opt} ${encrypt_extra_opt} ${tf_a_make_target}
if [ -f "${B}/${config}${soc_suffix}-${dt}/bl2.bin" ]; then
cp "${B}/${config}${soc_suffix}-${dt}/bl2.bin" "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.bin"
fi
# Copy TF-A binary with explicit devicetree filename
if [ -f "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" ]; then
cp "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
stm32wrapper4dbg -s "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}.${TF_A_SUFFIX}" -d "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
fi
if [ "${SIGN_ENABLE}" = "1" ]; then
# Init sign key for signing tools
sign_key="${SIGN_KEY_PATH_LIST}"
if [ -n "${STM32MP_SOC_NAME}" ]; then
unset k
for soc in ${STM32MP_SOC_NAME}; do
k=$(expr $k + 1)
if [ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] || [ "$(echo ${dt} | grep -c ${TF_A_SOC_MATCH})" -eq 1 ] ;then
sign_key=$(echo ${SIGN_KEY_PATH_LIST} | cut -d',' -f${k})
fi
done
fi
# Init default encryption options for signing tool
tf_a_encrypt_opts=""
if [ "${ENCRYPT_ENABLE}" = "1" ]; then
# Init encrypt key for signing tools
encrypt_key="${ENCRYPT_FSBL_KEY_PATH_LIST}"
if [ -n "${STM32MP_ENCRYPT_SOC_NAME}" ]; then
unset k
for soc in ${STM32MP_ENCRYPT_SOC_NAME}; do
k=$(expr $k + 1)
[ "$(echo ${dt} | grep -c ${soc})" -eq 1 ] && encrypt_key=$(echo ${ENCRYPT_FSBL_KEY_PATH_LIST} | cut -d',' -f${k})
done
fi
# Set encryption options for signing tools
tf_a_encrypt_opts="\
--enc-key ${encrypt_key} \
--enc-dc ${TF_A_ENCRYPT_DC} \
--image-version ${TF_A_ENCRYPT_IMGVER} \
"
fi
# Sign tf-a binary
bbnote "${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key ${sign_key} \
--type fsbl \
--silent \
${SIGN_TOOL_EXTRA_soc} \
${tf_a_encrypt_opts} "
${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key ${sign_key} \
--type fsbl \
--silent \
${SIGN_TOOL_EXTRA_soc} \
${tf_a_encrypt_opts}
if [ "${TF_A_ENABLE_DEBUG_WRAPPER}" = "1" ]; then
bbnote "${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key "${sign_key}" \
--type fsbl \
--silent \
${SIGN_TOOL_EXTRA_soc} \
${tf_a_encrypt_opts}"
${SIGN_TOOL} \
-bin "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}" \
-o "${B}/${config}${soc_suffix}-${dt}/debug-${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}" \
--password ${SIGN_KEY_PASS} \
--public-key $(ls -1 $(dirname ${sign_key})/publicKey*.pem | tr '\n' '\t') \
--private-key "${sign_key}" \
--type fsbl \
--silent \
${SIGN_TOOL_EXTRA_soc} \
${tf_a_encrypt_opts}
fi
fi
fi
done
done
if [ "${TF_A_ENABLE_METADATA}" = "1" ]; then
rm -rf "${B}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
${TF_A_METADATA_TOOL} ${TF_A_METADATA_TOOL_ARGS} "${B}/${TF_A_METADATA_NAME}.${TF_A_METADATA_SUFFIX}"
fi
}
# This runs after 'tf_a_sysroot_populate()' which populates all
# TF-A artifacts on the image deploy dir.
# The purpose of this function is to create symlinks to the files needed
# by the uuu installer that are located in subdirectories.
deploy_symlinks_atf() {
@ -77,53 +322,25 @@ deploy_symlinks_atf() {
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
tfa_basename=$(echo ${TF_A_BINARIES} | cut -d',' -f${i})
for dt in ${dt_config}; do
TF_A_FILENAME="${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
if [ -f "${DEPLOY_DIR_IMAGE}/${TF_A_BASEDIR}/${TF_A_FILENAME}" ]; then
cd "${DEPLOY_DIR_IMAGE}"
TF_A_FILENAME="${tfa_basename}-${dt}-${config}${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}.${TF_A_SUFFIX}"
if [ -f "${DEPLOYDIR}/${TF_A_BASEDIR}/${TF_A_FILENAME}" ]; then
# symlink TF-A
ln -sf "${TF_A_BASEDIR}/${TF_A_FILENAME}" "${DEPLOY_DIR_IMAGE}/"
ln -sf "${TF_A_BASEDIR}/${TF_A_FILENAME}" "${DEPLOYDIR}"
fi
done
done
# Last value of 'dt' is good for metadata binary, so use that.
if [ "${TF_A_ENABLE_METADATA}" = "1" ]; then
if [ -f "${DEPLOY_DIR_IMAGE}/${TF_A_BASEDIR}/${TF_A_METADATA_BINARY}" ]; then
cd "${DEPLOY_DIR_IMAGE}"
if [ -f "${DEPLOYDIR}/${TF_A_BASEDIR}/${TF_A_METADATA_BINARY}" ]; then
# symlink metadata
ln -sf "${TF_A_BASEDIR}/${TF_A_METADATA_BINARY}" "${DEPLOY_DIR_IMAGE}/${TF_A_METADATA_NAME}-${dt}.${TF_A_METADATA_SUFFIX}"
ln -sf "${TF_A_BASEDIR}/${TF_A_METADATA_BINARY}" "${DEPLOYDIR}/${TF_A_METADATA_NAME}-${MACHINE}.${TF_A_METADATA_SUFFIX}"
fi
fi
}
SYSROOT_PREPROCESS_FUNCS += "deploy_symlinks_atf"
# Sign TF-A image
do_deploy[postfuncs] += "${@oe.utils.conditional('TRUSTFENCE_SIGN', '1', 'tfa_sign', '', d)}"
tfa_sign() {
export CONFIG_SIGN_KEYS_PATH="${TRUSTFENCE_SIGN_KEYS_PATH}"
export CONFIG_KEY_INDEX="${TRUSTFENCE_KEY_INDEX}"
unset i
for config in ${TF_A_CONFIG}; do
i=$(expr $i + 1)
# Initialize devicetree list and tf-a basename
dt_config=$(echo ${TF_A_DEVICETREE} | cut -d',' -f${i})
tfa_basename=$(echo ${TF_A_BINARIES} | cut -d',' -f${i})
tfa_file_type=$(echo ${TF_A_FILES} | cut -d',' -f${i})
for dt in ${dt_config}; do
for file_type in ${tfa_file_type}; do
case "${file_type}" in
bl2)
TF_A_FILENAME="${tfa_basename}-${dt}-${config}.${TF_A_SUFFIX}"
if [ -f "${DEPLOYDIR}/arm-trusted-firmware/${TF_A_FILENAME}" ]; then
trustfence-sign-artifact.sh -p "${DIGI_SOM}" -t "${DEPLOYDIR}/arm-trusted-firmware/${TF_A_FILENAME}" "${DEPLOYDIR}/arm-trusted-firmware/${TF_A_FILENAME}${TFA_SIGN_SUFFIX}"
# the generated artifact lacks 'w' permission which prevents deletion by the build system
chmod u+w "${DEPLOYDIR}/arm-trusted-firmware/${TF_A_FILENAME}${TFA_SIGN_SUFFIX}"
# symlink TF-A
ln -s "arm-trusted-firmware/${TF_A_FILENAME}${TFA_SIGN_SUFFIX}" "${DEPLOYDIR}/"
fi
esac
done # for file_type in ${tfa_file_type}
done # for dt in ${dt_config}
done # for config in ${TF_A_CONFIG}
do_deploy[sstate-outputdirs] = "${DEPLOY_DIR_IMAGE}"
do_deploy() {
export_binaries ${DEPLOYDIR}${FIP_DIR_TFA_BASE}
deploy_symlinks_atf
}

View File

@ -8,11 +8,20 @@ if [ "$USER" == "root" ]; then
export PULSE_RUNTIME_PATH=/run/user/`id -u root`/pulse
export USE_PLAYBIN3=1
if [ -e $XDG_RUNTIME_DIR/wayland-0 ]; then
export WAYLAND_DISPLAY=wayland-0
else
if [ -e $XDG_RUNTIME_DIR/wayland-1 ]; then
export WAYLAND_DISPLAY=wayland-1
fi
# Wait for 10 seconds until a Wayland socket is available
for i in {1..10}; do
if [ -e $XDG_RUNTIME_DIR/wayland-0 ]; then
export WAYLAND_DISPLAY=wayland-0
break
elif [ -e $XDG_RUNTIME_DIR/wayland-1 ]; then
export WAYLAND_DISPLAY=wayland-1
break
else
sleep 1
fi
done
if [ -z "$WAYLAND_DISPLAY" ]; then
echo "WARNING: No Wayland socket found"
fi
fi

View File

@ -0,0 +1,48 @@
From b8fd1214cd9e9651ea076fdeabb98dcee5b3354f Mon Sep 17 00:00:00 2001
From: Hugues Fruchet <hugues.fruchet@foss.st.com>
Date: Wed, 30 Oct 2024 16:22:00 +0100
Subject: [PATCH] v4l2codecs: add support of encoding from RGBA
Add support of encoding from RGBA, BGRA, ARGB, ABGR
Upstream-Status: Pending
---
sys/v4l2codecs/gstv4l2format.c | 4 ++++
sys/v4l2codecs/gstv4l2format.h | 2 +-
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/sys/v4l2codecs/gstv4l2format.c b/sys/v4l2codecs/gstv4l2format.c
index 33cef56..2d930d1 100644
--- a/sys/v4l2codecs/gstv4l2format.c
+++ b/sys/v4l2codecs/gstv4l2format.c
@@ -42,10 +42,14 @@ static struct FormatEntry format_map[] = {
{V4L2_PIX_FMT_P010, 1, GST_VIDEO_FORMAT_P010_10LE, 16, 420},
{V4L2_PIX_FMT_RGB565, 1, GST_VIDEO_FORMAT_RGB16, 16, 0},
{V4L2_PIX_FMT_XBGR32, 1, GST_VIDEO_FORMAT_BGRx, 32, 0},
+ {V4L2_PIX_FMT_ABGR32, 1, GST_VIDEO_FORMAT_BGRA, 32, 0},
{V4L2_PIX_FMT_BGR32, 1, GST_VIDEO_FORMAT_BGRx, 32, 0},
{V4L2_PIX_FMT_RGBX32, 1, GST_VIDEO_FORMAT_RGBx, 32, 0},
+ {V4L2_PIX_FMT_RGBA32, 1, GST_VIDEO_FORMAT_RGBA, 32, 0},
{V4L2_PIX_FMT_BGRX32, 1, GST_VIDEO_FORMAT_xBGR, 32, 0},
+ {V4L2_PIX_FMT_BGRA32, 1, GST_VIDEO_FORMAT_ABGR, 32, 0},
{V4L2_PIX_FMT_XRGB32, 1, GST_VIDEO_FORMAT_xRGB, 32, 0},
+ {V4L2_PIX_FMT_ARGB32, 1, GST_VIDEO_FORMAT_ARGB, 32, 0},
{V4L2_PIX_FMT_RGB32, 1, GST_VIDEO_FORMAT_xRGB, 32, 0},
{0,}
};
diff --git a/sys/v4l2codecs/gstv4l2format.h b/sys/v4l2codecs/gstv4l2format.h
index 1f634ee..2bf675f 100644
--- a/sys/v4l2codecs/gstv4l2format.h
+++ b/sys/v4l2codecs/gstv4l2format.h
@@ -24,7 +24,7 @@
#include <gst/video/video.h>
#include "linux/videodev2.h"
-#define GST_V4L2_DEFAULT_VIDEO_FORMATS "{ NV12, YUY2, NV12_4L4, NV12_32L32, NV12_16L32S, I420, P010_10LE, RGB16, BGRx, RGBx, xBGR, xRGB}"
+#define GST_V4L2_DEFAULT_VIDEO_FORMATS "{ NV12, YUY2, NV12_4L4, NV12_32L32, NV12_16L32S, I420, P010_10LE, RGB16, BGRx, BGRA, RGBx, RGBA, xBGR, ABGR, xRGB, ARGB}"
gboolean gst_v4l2_format_to_video_info (struct v4l2_format * fmt,
GstVideoInfo * out_info);
--
2.25.1

View File

@ -0,0 +1,45 @@
From be6728ba8e66dfc2f50d1af21eb0579e785765bb Mon Sep 17 00:00:00 2001
From: Hugues Fruchet <hugues.fruchet@foss.st.com>
Date: Tue, 3 Dec 2024 14:37:29 +0100
Subject: [PATCH 1/2] Revert "waylandsink: match drm kernel driver alignment"
This reverts commit 9468d8cb21818d7fcdbc569119f6056806673cc3.
Upstream-Status: Pending
---
ext/wayland/gstwaylandsink.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index 066f05e..c93fec9 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -692,8 +692,6 @@ gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
GstWaylandSink *self = GST_WAYLAND_SINK (bsink);;
gboolean use_dmabuf;
GstVideoFormat format;
- GstVideoAlignment alignment;
- guint width;
GST_DEBUG_OBJECT (self, "set caps %" GST_PTR_FORMAT, caps);
@@ -701,16 +699,6 @@ gst_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
if (!gst_video_info_from_caps (&self->video_info, caps))
goto invalid_format;
- /*
- * stick to DRM kernel driver alignment (128 bytes) to avoid
- * any board effects due to size mismatch when switching
- * later-on with DRM dumb allocated buffers
- */
- gst_video_alignment_reset (&alignment);
- width = GST_VIDEO_INFO_WIDTH (&self->video_info);
- alignment.padding_right = GST_ROUND_UP_128 (width) - width;
- gst_video_info_align (&self->video_info, &alignment);
-
format = GST_VIDEO_INFO_FORMAT (&self->video_info);
self->video_info_changed = TRUE;
self->skip_dumb_buffer_copy = FALSE;
--
2.25.1

View File

@ -0,0 +1,46 @@
From 658760663e957a688b9e4a7791438556e464dcdc Mon Sep 17 00:00:00 2001
From: Hugues Fruchet <hugues.fruchet@foss.st.com>
Date: Wed, 4 Dec 2024 09:15:11 +0100
Subject: [PATCH 2/2] Revert "gtkwaylandsink: match drm kernel driver
alignment"
This reverts commit cc4d700ec4e9737974cd2945119b100dd075b8e3.
Upstream-Status: Pending
---
ext/gtk/gstgtkwaylandsink.c | 12 ------------
1 file changed, 12 deletions(-)
diff --git a/ext/gtk/gstgtkwaylandsink.c b/ext/gtk/gstgtkwaylandsink.c
index fbe05be..658effd 100644
--- a/ext/gtk/gstgtkwaylandsink.c
+++ b/ext/gtk/gstgtkwaylandsink.c
@@ -949,8 +949,6 @@ gst_gtk_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
gst_gtk_wayland_sink_get_instance_private (self);
gboolean use_dmabuf;
GstVideoFormat format;
- GstVideoAlignment alignment;
- guint width;
GST_DEBUG_OBJECT (self, "set caps %" GST_PTR_FORMAT, caps);
@@ -958,16 +956,6 @@ gst_gtk_wayland_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
if (!gst_video_info_from_caps (&priv->video_info, caps))
goto invalid_format;
- /*
- * stick to DRM kernel driver alignment (128 bytes) to avoid
- * any board effects due to size mismatch when switching
- * later-on with DRM dumb allocated buffers
- */
- gst_video_alignment_reset (&alignment);
- width = GST_VIDEO_INFO_WIDTH (&priv->video_info);
- alignment.padding_right = GST_ROUND_UP_128 (width) - width;
- gst_video_info_align (&priv->video_info, &alignment);
-
format = GST_VIDEO_INFO_FORMAT (&priv->video_info);
priv->video_info_changed = TRUE;
priv->skip_dumb_buffer_copy = FALSE;
--
2.25.1

View File

@ -0,0 +1,147 @@
From a379e9e5b378c75b5d22302266729830b8095bd3 Mon Sep 17 00:00:00 2001
From: Hugues Fruchet <hugues.fruchet@foss.st.com>
Date: Thu, 12 Dec 2024 15:21:45 +0100
Subject: [PATCH] v4l2codecs: h264enc: add support of DCT 8x8
Add support of DCT 8x8, this tool is part of high profile.
gst-launch-1.0 videotestsrc num-buffers=100 ! videoconvert ! v4l2slh264enc dct8x8=true ! "video/x-h264, profile=(string)high" ! h264parse ! qtmux ! filesink location=qvga_high_dct8x8.mp4
gst-play-1.0 qvga_high_dct8x8.mp4
gst-launch-1.0 videotestsrc num-buffers=100 ! videoconvert ! v4l2slh264enc dct8x8=true ! "video/x-h264, profile=(string)high" ! filesink location=qvga_high_dct8x8.bits
gst-play-1.0 qvga_high_dct8x8.bits
Upstream-Status: Pending
---
gst-libs/gst/codecs/gsth264encoder.c | 18 ++++++++++++++++++
sys/v4l2codecs/gstv4l2codech264enc.c | 22 +++++++++++++++++++++-
2 files changed, 39 insertions(+), 1 deletion(-)
diff --git a/gst-libs/gst/codecs/gsth264encoder.c b/gst-libs/gst/codecs/gsth264encoder.c
index f1b0200..7dc4fb8 100644
--- a/gst-libs/gst/codecs/gsth264encoder.c
+++ b/gst-libs/gst/codecs/gsth264encoder.c
@@ -51,6 +51,7 @@ enum
PROP_BITRATE,
PROP_CABAC,
PROP_CABAC_INIT_IDC,
+ PROP_DCT8X8,
PROP_RATE_CONTROL,
};
@@ -63,6 +64,7 @@ struct _GstH264EncoderPrivate
gint keyframe_interval;
gboolean cabac;
guint cabac_init_idc;
+ gboolean dct8x8;
};
#define parent_class gst_h264_encoder_parent_class
@@ -224,6 +226,9 @@ gst_h264_encoder_get_property (GObject * object, guint property_id,
case PROP_CABAC_INIT_IDC:
g_value_set_uint (value, priv->cabac_init_idc);
break;
+ case PROP_DCT8X8:
+ g_value_set_boolean (value, priv->dct8x8);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -269,6 +274,9 @@ gst_h264_encoder_set_property (GObject * object, guint property_id,
case PROP_CABAC_INIT_IDC:
priv->cabac_init_idc = g_value_get_uint (value);
break;
+ case PROP_DCT8X8:
+ priv->dct8x8 = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -381,6 +389,16 @@ gst_h264_encoder_class_init (GstH264EncoderClass * klass)
0, 2, 0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT));
+ /**
+ * GstH264Encoder:dct8x8:
+ * Note: Supported only on high profile
+ *
+ * Since: 1.2x
+ */
+ g_object_class_install_property (object_class, PROP_DCT8X8,
+ g_param_spec_boolean ("dct8x8", "DCT8X8",
+ "Adaptive spatial transform size", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/**
* GstH264Encoder:rate-control:
*
diff --git a/sys/v4l2codecs/gstv4l2codech264enc.c b/sys/v4l2codecs/gstv4l2codech264enc.c
index 921302a..eac5300 100644
--- a/sys/v4l2codecs/gstv4l2codech264enc.c
+++ b/sys/v4l2codecs/gstv4l2codech264enc.c
@@ -56,7 +56,7 @@ static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
"width = (int) [ 1, MAX ], " "height = (int) [ 1, MAX ], "
"stream-format = (string) byte-stream, "
"alignment = (string) au, "
- "profile = (string) { main, constrained-baseline, baseline}")
+ "profile = (string) { high, main, constrained-baseline, baseline}")
);
/* Maximum sizes for common headers (in bits) */
@@ -84,6 +84,7 @@ struct _GstV4l2CodecH264Enc
gint qp_init, qp_max, qp_min;
gboolean cabac;
guint cabac_init_idc;
+ gboolean dct8x8;
gchar *profile_name;
guint level_idc;
@@ -543,6 +544,7 @@ gst_v4l2_codec_h264_enc_init_sps_pps (GstV4l2CodecH264Enc * self,
self->pps.second_chroma_qp_index_offset = self->pps.chroma_qp_index_offset;
self->pps.deblocking_filter_control_present_flag = 1;
self->pps.entropy_coding_mode_flag = self->cabac;
+ self->pps.transform_8x8_mode_flag = self->dct8x8;
}
/* Begin of code taken from VA plugin */
@@ -600,6 +602,9 @@ gst_v4l2_codec_h264_enc_decide_profile_and_level (GstV4l2CodecH264Enc * self,
g_object_get (self, "cabac", &self->cabac, "cabac-init-idc",
&self->cabac_init_idc, NULL);
+ g_object_get (self, "dct8x8", &self->dct8x8, "dct8x8",
+ &self->dct8x8, NULL);
+
/* First, check whether the downstream requires a specified profile. */
allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (self));
if (!allowed_caps)
@@ -620,6 +625,15 @@ gst_v4l2_codec_h264_enc_decide_profile_and_level (GstV4l2CodecH264Enc * self,
}
}
+ if (self->dct8x8) {
+ if (!g_strstr_len (profile_name, -1, "high")) {
+ GST_WARNING_OBJECT (self,
+ "DCT 8x8 is not supported by user selected profile '%s'"
+ ", disabling this features", profile_name);
+ self->dct8x8 = FALSE;
+ }
+ }
+
g_free (self->profile_name);
self->profile_name = g_strdup (profile_name);
@@ -975,6 +989,12 @@ gst_v4l2_codec_h264_enc_fill_encode_params (GstH264Encoder * encoder,
self->encode_params.flags &= ~V4L2_H264_ENCODE_FLAG_ENTROPY_CABAC;
}
+ if (self->dct8x8) {
+ self->encode_params.flags |= V4L2_H264_ENCODE_FLAG_TRANSFORM_8X8_MODE;
+ } else {
+ self->encode_params.flags &= ~V4L2_H264_ENCODE_FLAG_TRANSFORM_8X8_MODE;
+ }
+
self->encode_params.pic_parameter_set_id = 0;
self->encode_params.cabac_init_idc = self->cabac_init_idc;
--
2.25.1

View File

@ -0,0 +1,41 @@
From 0a93b2551d40fd6d4b4d222f552d329ea17524db Mon Sep 17 00:00:00 2001
From: Hugues Fruchet <hugues.fruchet@foss.st.com>
Date: Wed, 29 Jan 2025 15:43:14 +0100
Subject: [PATCH] v4l2codecs: add support of encoding from UYVY
Add support of encoding from UYVY
Upstream-Status: Pending
---
sys/v4l2codecs/gstv4l2format.c | 1 +
sys/v4l2codecs/gstv4l2format.h | 2 +-
2 files changed, 2 insertions(+), 1 deletion(-)
diff --git a/sys/v4l2codecs/gstv4l2format.c b/sys/v4l2codecs/gstv4l2format.c
index 2d930d1..57b3e9a 100644
--- a/sys/v4l2codecs/gstv4l2format.c
+++ b/sys/v4l2codecs/gstv4l2format.c
@@ -35,6 +35,7 @@ static struct FormatEntry format_map[] = {
{V4L2_PIX_FMT_NV12M, 2, GST_VIDEO_FORMAT_NV12, 8, 420},
{V4L2_PIX_FMT_NV12, 1, GST_VIDEO_FORMAT_NV12, 8, 420},
{V4L2_PIX_FMT_YUYV, 1, GST_VIDEO_FORMAT_YUY2, 8, 422},
+ {V4L2_PIX_FMT_UYVY, 1, GST_VIDEO_FORMAT_UYVY, 8, 422},
{V4L2_PIX_FMT_SUNXI_TILED_NV12, 1, GST_VIDEO_FORMAT_NV12_32L32, 8, 422},
{V4L2_PIX_FMT_NV12_4L4, 1, GST_VIDEO_FORMAT_NV12_4L4, 8, 420},
{V4L2_PIX_FMT_MM21, 2, GST_VIDEO_FORMAT_NV12_16L32S, 8, 420},
diff --git a/sys/v4l2codecs/gstv4l2format.h b/sys/v4l2codecs/gstv4l2format.h
index 2bf675f..c0c2ccd 100644
--- a/sys/v4l2codecs/gstv4l2format.h
+++ b/sys/v4l2codecs/gstv4l2format.h
@@ -24,7 +24,7 @@
#include <gst/video/video.h>
#include "linux/videodev2.h"
-#define GST_V4L2_DEFAULT_VIDEO_FORMATS "{ NV12, YUY2, NV12_4L4, NV12_32L32, NV12_16L32S, I420, P010_10LE, RGB16, BGRx, BGRA, RGBx, RGBA, xBGR, ABGR, xRGB, ARGB}"
+#define GST_V4L2_DEFAULT_VIDEO_FORMATS "{ NV12, YUY2, UYVY, NV12_4L4, NV12_32L32, NV12_16L32S, I420, P010_10LE, RGB16, BGRx, BGRA, RGBx, RGBA, xBGR, ABGR, xRGB, ARGB}"
gboolean gst_v4l2_format_to_video_info (struct v4l2_format * fmt,
GstVideoInfo * out_info);
--
2.25.1

View File

@ -75,6 +75,11 @@ SRC_URI:append = " \
file://0078-gtkwaylandsink-Add-gst_buffer_pool_config_set_params.patch \
file://0079-waylandsink-config-buffer-pool-with-query-size-when-.patch \
file://0080-gtkwaylandsink-config-buffer-pool-with-query-size-wh.patch \
file://0081-v4l2codecs-add-support-of-encoding-from-RGBA.patch \
file://0082-Revert-waylandsink-match-drm-kernel-driver-alignment.patch \
file://0083-Revert-gtkwaylandsink-match-drm-kernel-driver-alignm.patch \
file://0084-v4l2codecs-h264enc-add-support-of-DCT-8x8.patch \
file://0085-v4l2codecs-add-support-of-encoding-from-UYVY.patch \
"
PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gles2 egl', '', d)}"

View File

@ -0,0 +1,21 @@
#!/bin/sh
#
# Create a systemd environment file for tee-supplicant
# $1 is the path to the file to be generated.
# At the moment this figures out the --rpmb-cid parameter to be given to
# tee-supplicant, indicating which eMMC device OP-TEE should use for RPMB
# storage.
# No file is generated if no device is found (not an error) or if multiple
# eMMCs are found (which is an error).
[ "$1" ] || { echo Usage: $0 FILE >&2; exit 1; }
touch $1
for f in /sys/class/mmc_host/mmc*/mmc*\:*/mmcblk?rmpb; do
[ "$CID" ] && { echo $0: Multiple eMMC devices found, not chosing one automatically >&2; exit 2; }
# POSIX shells don't expand globbing patterns that match no file
[ -e $f ] || exit 0
CID=$(cat $(dirname $f)/cid)
done
[ "$CID" ] && echo RPMB_CID="--rpmb-cid $CID" >$1

View File

@ -0,0 +1,2 @@
KERNEL=="tee[0-9]*", MODE="0660", OWNER="root", GROUP="teeclnt", TAG+="systemd", ENV{SYSTEMD_WANTS}+="tee.device"
KERNEL=="teepriv[0-9]*", MODE="0660", OWNER="root", GROUP="tee", TAG+="systemd", ENV{SYSTEMD_WANTS}+="teepriv.device"

View File

@ -0,0 +1,16 @@
[Unit]
Description=TEE Supplicant
Wants=dev-tee0.device
After=dev-tee0.device
After=systemd-udevd.service
[Service]
User=tee
Group=tee
EnvironmentFile=-/etc/default/tee-supplicant
ExecStartPre=/usr/sbin/create-tee-supplicant-env /tmp/tee-supplicant.env
EnvironmentFile=-/tmp/tee-supplicant.env
ExecStart=/usr/sbin/tee-supplicant $RPMB_CID $OPTARGS
[Install]
WantedBy=basic.target

View File

@ -0,0 +1,62 @@
SUMMARY = "OPTEE Client"
HOMEPAGE = "https://github.com/OP-TEE/optee_client"
LICENSE = "BSD-2-Clause"
LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=69663ab153298557a59c67a60a743e5b"
inherit python3native systemd cmake pkgconfig
SRC_URI = "git://github.com/OP-TEE/optee_client.git;protocol=https;branch=master \
file://tee-supplicant.service \
file://create-tee-supplicant-env \
file://optee-udev.rules \
"
SRCREV = "acb0885c117e73cb6c5c9b1dd9054cb3f93507ee"
PV = "4.0.0+git${SRCPV}"
S = "${WORKDIR}/git"
DEPENDS += "util-linux-libuuid"
SYSTEMD_SERVICE:${PN} = "tee-supplicant.service"
SECURE_STORAGE_PATH ?= "${@oe.utils.vartrue('TRUSTFENCE_FILE_BASED_ENCRYPT', \
'-DCFG_TEE_FS_PARENT_PATH=/mnt/data/tee', \
'${localstatedir}/lib/tee', d)}"
EXTRA_OECMAKE = " \
-DCFG_TEE_FS_PARENT_PATH='${SECURE_STORAGE_PATH}' \
-DCFG_WERROR=OFF \
-DCFG_TEE_CLIENT_LOG_LEVEL=2 \
-DCFG_TEE_CLIENT_LOG_FILE='${localstatedir}/log/tee/teec.log' \
-DBUILD_SHARED_LIBS=ON \
-DRPMB_EMU=0 \
"
do_install:append() {
if ${@bb.utils.contains('DISTRO_FEATURES','systemd','true','false',d)}; then
sed -i -e s:/etc:${sysconfdir}:g \
-e s:/usr/bin:${bindir}:g \
${WORKDIR}/tee-supplicant.service
install -D -p -m0644 ${WORKDIR}/tee-supplicant.service ${D}${systemd_system_unitdir}/tee-supplicant.service
install -D -p -m0755 ${WORKDIR}/create-tee-supplicant-env ${D}${sbindir}/
fi
install -d ${D}${sysconfdir}/udev/rules.d
install -m 0644 ${WORKDIR}/optee-udev.rules ${D}${sysconfdir}/udev/rules.d/optee.rules
install -d -m770 -o root -g tee ${D}${SECURE_STORAGE_PATH}
}
FILES:${PN} += "${sysconfdir} ${localstatedir}"
inherit useradd
USERADD_PACKAGES = "${PN}"
# Create groups 'tee' and 'teeclnt'. Permissions are set elsewhere on
# /dev/teepriv0 and /dev/tee0 so that tee-supplicant should run as a user that
# is a member of the 'tee' group, and TEE client applications should runs as a
# user that is a member of the 'teeclnt' group.
GROUPADD_PARAM:${PN} = "--system tee; --system teeclnt"
# Create user 'tee' member of group 'tee' to run tee-supplicant
USERADD_PARAM:${PN} = "--system -d / -M -s /bin/nologin -c 'User for tee-supplicant' -g tee tee"

View File

@ -2,6 +2,9 @@
# Copyright (C) 2022-2025, Digi International Inc.
#
# Inherit custom DIGI sign class to skip signing tool and key parsing restrictions
inherit sign-stm32mp-digi
# Select internal or Github OPTEE repo
OPTEE_URI_STASH = "${DIGI_MTK_GIT}/emp/optee_os.git;protocol=ssh"
OPTEE_URI_GITHUB = "${DIGI_GITHUB_GIT}/optee_os.git;protocol=https"
@ -14,6 +17,3 @@ SRC_URI = " \
${OPTEE_GIT_URI};branch=${SRCBRANCH};name=os \
file://fonts.tar.gz;subdir=git;name=fonts \
"
# If TF enabled, force use of HUK in OTP bits
EXTRA_OEMAKE += "${@oe.utils.conditional('TRUSTFENCE_ENABLED', '1', 'CFG_OTP_HUK=1', '', d)}"

View File

@ -1,8 +0,0 @@
# Copyright (C) 2022, Digi International Inc.
FILESEXTRAPATHS:prepend := "${THISDIR}/${BPN}:"
SRC_URI:append = " file://0001-wolfcrypttest-fix-for-FIPS-enabled-wolfSSL-library.patch"
CFLAGS:append:arm = " -DSIZEOF_LONG=4 -DSIZEOF_LONG_LONG=8"
CFLAGS:append:aarch64 = " -DSIZEOF_LONG=8 -DSIZEOF_LONG_LONG=8"

View File

@ -1,33 +0,0 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Thu, 1 Sep 2022 18:58:13 +0200
Subject: [PATCH] wolfcrypttest: fix for FIPS enabled wolfSSL library
FIPS does not support MD5
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
test.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/test.c b/test.c
index 8ad937a8bacb..00d8ba0d2503 100644
--- a/test.c
+++ b/test.c
@@ -18370,9 +18370,15 @@ WOLFSSL_TEST_SUBROUTINE int openssl_test(void)
c.inLen = XSTRLEN(c.input);
c.outLen = WC_MD5_DIGEST_SIZE;
+#if defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION > 2)
+ /* Expect failure with MD5 + HMAC when using FIPS 140-3. */
+ if (HMAC(EVP_md5(), "JefeJefeJefeJefe", 16, (byte*)c.input, (int)c.inLen,
+ hash, 0) != NULL)
+#else
if (HMAC(EVP_md5(), "JefeJefeJefeJefe", 16, (byte*)c.input, (int)c.inLen,
hash, 0) == NULL ||
XMEMCMP(hash, c.output, WC_MD5_DIGEST_SIZE) != 0)
+#endif
{
return -8612;
}

View File

@ -1,139 +0,0 @@
Digi Embedded Yocto FIPS-certified WolfSSL support
==================================================
WolfSSL is a lightweight SSL/TLS library written in C and targeted for
embedded and resource-constrained environments.
WolfSSL is powered by the wolfCrypt library. A version of the wolfCrypt
library has been FIPS 140-2 validated, with FIPS 140-3 validation currently
in progress.
For more information, visit:
https://www.wolfssl.com/license/fips/
DEY support
-----------
Digi Embedded Yocto (DEY) supports building the FIPS validated version of
WolfSSL. The source package is usually provided under a commercial license
agreement by WolfSSL. DEY provides the recipes and configurations to build
the recipe into your final image.
Instructions
------------
These instructions assume that DEY is properly installed and a project
has already been created. For more info on those tasks, see the online
documentation on the Digi Embedded Documentation portal:
https://www.digi.com/resources/documentation/digidocs/embedded/index.html
1. Add 'meta-wolfssl' layer to the project.
# cd <project-dir>
# bitbake-layers add-layer <DEY-installdir>/sources/meta-wolfssl
2. Configure the project for building wolfssl FIPS bundle (1st build).
DEY added support for building the library from a password-protected
7z-compressed package, but any other package format supported by Yocto may
be used.
The build is controlled by variables configured in the project's
configuration file (<project-dir>/conf/local.conf).
* PREFERRED_VERSION_wolfssl: the version of the wolfssl recipe to build
* WOLFSSL_FIPS_PKG_PATH: absolute local path to the package
* WOLFSSL_FIPS_PKG_PASSWORD: package's unpack password (only for 7z compression)
* WOLFSSL_FIPS_CORE_HASH: in-core integrity hash (not available until
after a first run)
An example follows:
PREFERRED_VERSION_wolfssl = "5.4.0-fips"
WOLFSSL_FIPS_PKG_PATH = "/PATH/TO/wolfssl-5.4.0-commercial-fips-linuxv5.7z"
WOLFSSL_FIPS_PKG_PASSWORD = "xxxx"
#WOLFSSL_FIPS_CORE_HASH = ""
Note: Leave the variable WOLFSSL_FIPS_CORE_HASH commented. The `wolfcrypttest`
application provides the WolfSSL FIPS integrity hash value after the first run.
3. Add the wolfCrypt test programs to the image.
In the project's configuration file:
IMAGE_INSTALL:append = " wolfssl wolfcrypttest wolfcryptbenchmark"
4. Build and program the images in the device.
If you need more information on this topic, refer to the DEY online
documentation (link above).
5. Compute the WolfSSL FIPS integrity hash.
In the device, run the `wolfcrypttest` test application. At this point,
it is expected that the application fails because the library has not been
built with the integrity hash.
root:~# wolfcrypttest
------------------------------------------------------------------------------
wolfSSL version 5.4.0
------------------------------------------------------------------------------
error test passed!
MEMORY test passed!
base64 test passed!
base16 test passed!
asn test passed!
in my Fips callback, ok = 0, err = -203
message = In Core Integrity check FIPS error
hash = 9490AAFD1786A11115256841AA71F9B5313BAA244ACF1A07DD8BB8A893CBC5BC
In core integrity hash check failure, copy above hash
into verifyCore[] in fips_test.c and rebuild
RANDOM test failed!
error = -7000
Exiting main with return code: -1
6. Reconfigure the project and build the images again (2nd build).
Feed the FIPS integrity hash back into the build process with the
WOLFSSL_FIPS_CORE_HASH variable.
For example, the final configuration would be:
PREFERRED_VERSION_wolfssl = "5.4.0-fips"
WOLFSSL_FIPS_PKG_PATH = "/PATH/TO/wolfssl-5.4.0-commercial-fips-linuxv5.7z"
WOLFSSL_FIPS_PKG_PASSWORD = "xxxx"
WOLFSSL_FIPS_CORE_HASH = "9490AAFD1786A11115256841AA71F9B5313BAA244ACF1A07DD8BB8A893CBC5BC"
IMAGE_INSTALL:append = " wolfssl wolfcrypttest wolfcryptbenchmark"
Make sure you get rid of the old build objects and rebuild the images:
# bitbake -c cleansstate wolfssl wolfcrypttest wolfcryptbenchmark
# bitbake -c cleanall <image-recipe>
7. Build and program the images in the device again.
Now the test application should complete just fine:
root:~# wolfcrypttest
------------------------------------------------------------------------------
wolfSSL version 5.4.0
------------------------------------------------------------------------------
error test passed!
MEMORY test passed!
base64 test passed!
base16 test passed!
asn test passed!
RANDOM test passed!
MD5 test passed!
SHA test passed!
SHA-224 test passed!
...
PKCS7authenveloped test passed!
prime test passed!
logging test passed!
time test passed!
mutex test passed!
memcb test passed!
crypto callback test passed!
Test complete
Exiting main with return code: 0

View File

@ -1,73 +0,0 @@
SUMMARY = "wolfSSL Lightweight Embedded SSL/TLS Library"
DESCRIPTION = "wolfSSL is a lightweight SSL/TLS library written in C and \
optimized for embedded and RTOS environments. It can be up \
to 20 times smaller than OpenSSL while still supporting \
a full TLS client and server, up to TLS 1.3"
HOMEPAGE = "https://www.wolfssl.com/products/wolfssl"
BUGTRACKER = "https://github.com/wolfssl/wolfssl/issues"
SECTION = "libs"
LICENSE = "WolfSSL-Commercial"
LICENSE_FLAGS = "commercial"
LIC_FILES_CHKSUM = "file://WolfSSL_LicenseAgmt_JAN-2022.pdf;md5=be28609dc681e98236c52428fadf04dd"
NO_GENERIC_LICENSE[WolfSSL-Commercial] = "WolfSSL_LicenseAgmt_JAN-2022.pdf"
PROVIDES += "cyassl"
RPROVIDES:${PN} = "cyassl"
PROVIDES += "wolfssl"
RPROVIDES:${PN} = "wolfssl"
# To be configured in project's config file
WOLFSSL_FIPS_PKG_NAME ?= "wolfssl-5.4.0-commercial-fips-linuxv5"
WOLFSSL_FIPS_PKG_PASSWORD ?= ""
WOLFSSL_FIPS_PKG_PATH ?= ""
python() {
# The package is not publicly available, so provide a PREMIRROR to a local directory
# that can be configured in the project's local.conf file using WOLFSSL_FIPS_PKG_PATH
# variable.
wolfssl_fips_local_path = d.getVar('WOLFSSL_FIPS_PKG_PATH')
if wolfssl_fips_local_path:
premirrors = d.getVar('PREMIRRORS')
d.setVar('PREMIRRORS', "http:///not/exist/${WOLFSSL_FIPS_PKG_NAME}.7z file://%s \\n %s" % (wolfssl_fips_local_path, premirrors))
# Yocto does not support unpacking password protected packages, so configure the
# SRC_URI as unpack=false in that case.
d.setVar('WOLFSSL_FIPS_PKG_UNPACK', str(not d.getVar('WOLFSSL_FIPS_PKG_PASSWORD')))
# Aux variable to prevent running 7za archiver on a not-7z package
d.setVar('WOLFSSL_FIPS_PKG_IS_7Z', str(d.getVar('WOLFSSL_FIPS_PKG_PATH').endswith('.7z')))
# FIPS core integrity hash needs to be added back to build process
wolfssl_fips_core_hash = d.getVar('WOLFSSL_FIPS_CORE_HASH')
if wolfssl_fips_core_hash:
d.setVar('CFLAGS:append', " -DWOLFCRYPT_FIPS_CORE_HASH_VALUE=%s" % wolfssl_fips_core_hash)
}
SRC_URI = "http:///not/exist/${WOLFSSL_FIPS_PKG_NAME}.7z;unpack=${WOLFSSL_FIPS_PKG_UNPACK}"
SRC_URI[sha256sum] = "0743e481e9e3ec2b7ba531c5821c44d55b313c0af04ded148caf4db7e0baa582"
S = "${WORKDIR}/${WOLFSSL_FIPS_PKG_NAME}"
inherit autotools
do_unpack[depends] += "p7zip-native:do_populate_sysroot"
do_unpack[postfuncs] += "${@oe.utils.vartrue('WOLFSSL_FIPS_PKG_UNPACK', '', 'unpack_7z_password_pkg', d)}"
unpack_7z_password_pkg() {
if [ "${WOLFSSL_FIPS_PKG_IS_7Z}" = "True" ]; then
7za x -o${WORKDIR} -p${WOLFSSL_FIPS_PKG_PASSWORD} -y ${WORKDIR}/${WOLFSSL_FIPS_PKG_NAME}.7z 1>/dev/null
fi
}
# Enable FIPS support, the compatibility layer and some other useful options
EXTRA_OECONF += " \
--enable-fips=v5 \
--enable-opensslextra \
--enable-postauth \
--enable-sha3 \
--enable-tls13 \
--enable-tlsx \
"
BBCLASSEXTEND += "native nativesdk"
DEFAULT_PREFERENCE = "-1"

View File

@ -6,7 +6,7 @@ LICENSE = "CYPRESS-EULA"
LIC_FILES_CHKSUM = "file://${S}/cyw-bt-patch/LICENCE.cypress;md5=cbc5f665d04f741f1e006d2096236ba7"
SRC_URI = " \
https://github.com/Infineon/ifx-linux-firmware/archive/refs/tags/release-v6.1.97-2024_1115.tar.gz;destsuffix=cyw-fmac-fw-ifx;name=cyw-fmac-fw-ifx \
https://github.com/Infineon/ifx-linux-firmware/archive/refs/tags/release-v6.1.97-2025_0219.tar.gz;destsuffix=cyw-fmac-fw-ifx;name=cyw-fmac-fw-ifx \
git://github.com/murata-wireless/cyw-fmac-fw;protocol=http;branch=jaculus;destsuffix=cyw-fmac-fw;name=cyw-fmac-fw \
git://github.com/murata-wireless/cyw-fmac-nvram;protocol=http;branch=jaculus;destsuffix=cyw-fmac-nvram;name=cyw-fmac-nvram \
git://github.com/murata-wireless/cyw-bt-patch;protocol=http;branch=master;destsuffix=cyw-bt-patch;name=cyw-bt-patch \
@ -26,10 +26,10 @@ SRC_URI:append:ccmp2 = " \
file://mbt \
"
SRC_URI[cyw-fmac-fw-ifx.sha256sum]="34f5bfac6476d849af26f945705dc5a19965825333840405ef25dcd835d521d7"
SRC_URI[cyw-fmac-fw-ifx.sha256sum]="1ff021a1b3ef1608f5c0ad4b39fec8e0f5cb8c204d178f1de0f8215d06abc8d9"
SRCREV_cyw-fmac-fw="a5cb86a5d11192ba6e7738f82b4d2dc9eeeca679"
SRCREV_cyw-fmac-nvram="146d1438372b6c4857f92b8769b91c1801d3ede2"
SRCREV_cyw-bt-patch="742f5cec14c98000dc532518c9e5acaec40de668"
SRCREV_cyw-bt-patch="23de75a4e5384d16e8478f668b769b0d24ede0de"
SRCREV_cyw-fmac-utils-imx32="dad9ed86bf6691910197bc91d42a45ea8175180c"
SRCREV_cyw-fmac-utils-imx64="368bd9a4163e115468d79c238192b41f6266c523"
@ -41,6 +41,8 @@ S = "${WORKDIR}"
DEPENDS = "libnl"
INSANE_SKIP:append:stm32mp1common = " 32bit-time"
do_install () {
bbnote "Installing Murata Infineon firmware binaries: "
install -d ${D}${sbindir}
@ -76,7 +78,7 @@ do_install:append:ccmp1 () {
# Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob)
# For Murata 2AE (LBEE5PK2AE-564)
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.97-2024_1115/firmware/cyfmac4373-sdio.industrial.bin ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio.bin
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.97-2025_0219/firmware/cyfmac4373-sdio.industrial.bin ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio.bin
install -m 444 cyfmac4373-sdio_US.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_US.clm_blob
install -m 444 cyfmac4373-sdio_World.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac4373-sdio_World.clm_blob
@ -95,7 +97,7 @@ do_install:append:ccmp2 () {
# Install WLAN firmware file (*.bin) and Regulatory binary file (*.clm_blob)
# For Murata 2GY (LBEE5HY2GY) and Murata 2FY (LBEE5HY2FY)
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.97-2024_1115/firmware/cyfmac55500-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55500-sdio.trxse
install -m 444 ${S}/ifx-linux-firmware-release-v6.1.97-2025_0219/firmware/cyfmac55500-sdio.trxse ${D}${base_libdir}/firmware/cypress/cyfmac55500-sdio.trxse
install -m 444 ${S}/cyw-fmac-fw/cyfmac55500-sdio.2FY.clm_blob ${D}${base_libdir}/firmware/cypress/cyfmac55500-sdio_US.clm_blob
# Install NVRAM files (*.txt)

View File

@ -1,29 +0,0 @@
From: Arturo Buzarra <arturo.buzarra@digi.com>
Date: Mon, 28 Jun 2021 15:00:58 +0200
Subject: [PATCH] gstreamer: fix video sink for wayland images
Upstream-Status: Inappropriate [DEY specific]
Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
---
gstreamer/gstreamer.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/gstreamer/gstreamer.py b/gstreamer/gstreamer.py
index 2676439..e055d77 100644
--- a/gstreamer/gstreamer.py
+++ b/gstreamer/gstreamer.py
@@ -249,11 +249,11 @@ def run_pipeline(user_function,
scale_caps = 'video/x-raw,width={width},height={height}'.format(width=scale[0], height=scale[1])
PIPELINE += """ ! tee name=t
t. ! {leaky_q} ! videoconvert ! videoscale ! {scale_caps} ! videobox name=box autocrop=true
! {sink_caps} ! {sink_element}
t. ! {leaky_q} ! videoconvert
- ! rsvgoverlay name=overlay ! videoconvert ! ximagesink sync=false
+ ! rsvgoverlay name=overlay ! videoconvert ! waylandsink sync=false
"""
SINK_ELEMENT = 'appsink name=appsink emit-signals=true max-buffers=1 drop=true'
SINK_CAPS = 'video/x-raw,format=RGB,width={width},height={height}'
LEAKY_Q = 'queue max-size-buffers=1 leaky=downstream'
--

View File

@ -1,36 +0,0 @@
SUMMARY = "Edge TPU keyphrase detector"
HOMEPAGE = "https://coral.ai/examples"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCREV = "655a354df5f939602ff6b9da2cbc4d2c78898107"
SRC_URI = "git://github.com/google-coral/project-bodypix.git;protocol=https;branch=master"
S = "${WORKDIR}/git"
RDEPENDS:${PN} = "python3-pycoral \
python3-svgwrite \
python3-scipy \
libusb1 \
"
do_install() {
# Install Gstreamer examples
install -d ${D}/opt/libedgetpu
install -d ${D}/opt/libedgetpu/bodypix
install -d ${D}/opt/libedgetpu/bodypix/models
install -d ${D}/opt/libedgetpu/bodypix/posenet_lib
install -d ${D}/opt/libedgetpu/bodypix/posenet_lib/aarch64
install -m 0555 ${S}/models/bodypix_mobilenet* ${D}/opt/libedgetpu/bodypix/models/
install -m 0555 ${S}/bodypix.py ${D}/opt/libedgetpu/bodypix
install -m 0555 ${S}/gstreamer.py ${D}/opt/libedgetpu/bodypix
install -m 0555 ${S}/pose_engine.py ${D}/opt/libedgetpu/bodypix
install -m 0555 ${S}/posenet_lib/aarch64/posenet_decoder.so ${D}/opt/libedgetpu/bodypix/posenet_lib/aarch64
}
FILES:${PN} += "/opt/libedgetpu/bodypix/* \
"
INSANE_SKIP:${PN} += "already-stripped"

View File

@ -1,35 +0,0 @@
SUMMARY = "Edge TPU simple camera examples"
HOMEPAGE = "https://coral.ai/examples"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCREV = "19335531f599133e054ec2ddcc31733d24031ba5"
SRC_URI = "git://github.com/google-coral/examples-camera.git;protocol=https;branch=master \
file://0001-gstreamer-fix-video-sink-for-wayland-images.patch \
"
S = "${WORKDIR}/git"
inherit gobject-introspection
RDEPENDS:${PN} = "python3-pycoral \
gstreamer1.0-plugins-base \
"
do_configure() {
bash download_models.sh
}
do_install() {
# Install Gstreamer examples
install -d ${D}/opt/libedgetpu
install -d ${D}/opt/libedgetpu/camera
install -d ${D}/opt/libedgetpu/camera/all_models
install -d ${D}/opt/libedgetpu/camera/gstreamer
rm -f ${S}/gstreamer/install_requirements.sh
install -m 0555 ${S}/all_models/* ${D}/opt/libedgetpu/camera/all_models/
install -m 0555 ${S}/gstreamer/* ${D}/opt/libedgetpu/camera/gstreamer/
}
FILES:${PN} += "/opt/libedgetpu/camera/* \
"

View File

@ -1,33 +0,0 @@
SUMMARY = "Edge TPU keyphrase detector"
HOMEPAGE = "https://coral.ai/examples"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCREV = "43a5fd0578c75c9140b4f057de74f2dbac96ceff"
SRC_URI = "git://github.com/google-coral/project-keyword-spotter.git;protocol=https;branch=master"
S = "${WORKDIR}/git"
RDEPENDS:${PN} = "python3-pycoral \
python3-pyaudio \
"
do_install() {
# Install Gstreamer examples
install -d ${D}/opt/libedgetpu
install -d ${D}/opt/libedgetpu/keyword
install -d ${D}/opt/libedgetpu/keyword/models
install -d ${D}/opt/libedgetpu/keyword/config
install -m 0555 ${S}/models/* ${D}/opt/libedgetpu/keyword/models/
install -m 0555 ${S}/run_model.py ${D}/opt/libedgetpu/keyword
install -m 0555 ${S}/mel_features.py ${D}/opt/libedgetpu/keyword
install -m 0555 ${S}/model.py ${D}/opt/libedgetpu/keyword
install -m 0555 ${S}/audio_recorder.py ${D}/opt/libedgetpu/keyword
install -m 0555 ${S}/config/labels_gc2.raw.txt ${D}/opt/libedgetpu/keyword/config
install -m 0555 ${S}/config/commands_v2.txt ${D}/opt/libedgetpu/keyword/config
}
FILES:${PN} += "/opt/libedgetpu/keyword/* \
"

View File

@ -1,49 +0,0 @@
SUMMARY = "TensorFlow Lite Python Library"
DESCRIPTION = "TensorFlow Lite is the official solution for running machine learning models on mobile and embedded devices."
SECTION = "devel/python"
HOMEPAGE = "https://www.tensorflow.org/lite/"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${S}/tflite_runtime-2.5.0.dist-info/METADATA;md5=8c4b9e107a64b0121980a8705094014b"
PYTHON_PACKAGE = "tflite_runtime-2.5.0-cp38-cp38-linux_aarch64.whl"
SRC_URI = "https://github.com/google-coral/pycoral/releases/download/v1.0.1/${PYTHON_PACKAGE};downloadfilename=${PYTHON_PACKAGE};subdir=${BP}"
SRC_URI[md5sum] = "9c47617e1fa0bdca673a78b8b6688d64"
SRC_URI[sha256sum] = "b87a4c152be05d3585521a1d5418f7645a4fb82965772489b983e93aae6bd9ac"
DEPENDS = "python3 python3-pip-native python3-wheel-native"
RDEPENDS:${PN} = "${PYTHON_PN} \
${PYTHON_PN}-numpy \
"
inherit python3native
do_unpack[depends] += "unzip-native:do_populate_sysroot"
do_unpack_extra(){
[ -d ${S} ] || mkdir -p ${S}
cd ${S}
unzip -q -o ${S}/${PYTHON_PACKAGE} -d ${S}
}
addtask unpack_extra after do_unpack before do_patch
do_install() {
# Install pip package
install -d ${D}/${PYTHON_SITEPACKAGES_DIR}
${STAGING_BINDIR_NATIVE}/pip3 install --disable-pip-version-check -v \
-t ${D}/${PYTHON_SITEPACKAGES_DIR} --no-cache-dir --no-deps \
${WORKDIR}/${BP}/tflite_runtime-*.whl
}
FILES:${PN} += "\
${libdir}/${PYTHON_DIR}/site-packages/* \
"
INSANE_SKIP:${PN} += "already-stripped"
# This package provides the same python files as NXP's tensorflow-lite
RCONFLICTS:${PN} = "tensorflow-lite"
COMPATIBLE_MACHINE = "(-)"
COMPATIBLE_MACHINE:aarch64 = "(.*)"

View File

@ -1,4 +1,4 @@
# Copyright (C) 2023,2024, Digi International Inc.
# Copyright (C) 2023,2025, Digi International Inc.
SUMMARY = "STM key generation and signing tools"
SECTION = "console/tools"
@ -10,8 +10,8 @@ PKGNAME = "trustfence-stm-signtools"
# tarball
SRC_URI = "${DIGI_PKG_SRC}/${PKGNAME}-${PV}.tar.gz"
SRC_URI[md5sum] = "5693ed0cd34f858dea5bc3d1a94e9eee"
SRC_URI[sha256sum] = "be3ab77b98f5f8b8508cda090cc5eeccd0cdc39ebe9cee45b5ef52528c4ce515"
SRC_URI[md5sum] = "a9277220a763b85efac2506dc2ad16f9"
SRC_URI[sha256sum] = "b45ceff90fde83f3e536a84bd7d2ae5ca95d695f35edbdab148f78d3cc31ce5c"
inherit bin_package

View File

@ -1,4 +1,4 @@
# Copyright (C) 2018-2024, Digi International Inc.
# Copyright (C) 2018-2025, Digi International Inc.
require recipes-bsp/u-boot/u-boot.inc
@ -29,7 +29,8 @@ INSTALL_FW_UBOOT_SCRIPTS = " \
SRC_URI = " \
${UBOOT_GIT_URI};branch=${SRCBRANCH} \
file://boot.txt \
${INSTALL_FW_UBOOT_SCRIPTS} \
file://install_linux_fw_media.txt \
file://install_linux_fw_uuu.sh \
"
BUILD_UBOOT_SCRIPTS ?= "true"
@ -77,6 +78,15 @@ do_deploy[postfuncs] += " \
"
build_uboot_scripts() {
# Generate USB installer from media template
sed -e 's,##INSTALL_MEDIA##,usb,g' \
-e 's,##INSTALL_MEDIA_INDEX##,${UBOOT_INSTALL_USB_INDEX},g' \
${WORKDIR}/install_linux_fw_media.txt > ${WORKDIR}/install_linux_fw_usb.txt
# Generate microSD installer from media template
sed -e 's,##INSTALL_MEDIA##,mmc,g' \
-e 's,##INSTALL_MEDIA_INDEX##,${UBOOT_INSTALL_SD_INDEX},g' \
${WORKDIR}/install_linux_fw_media.txt > ${WORKDIR}/install_linux_fw_sd.txt
for f in $(echo ${INSTALL_FW_UBOOT_SCRIPTS} | sed -e 's,file\:\/\/,,g'); do
f_ext="${f##*.}"
TMP_INSTALL_SCR="$(mktemp ${WORKDIR}/${f}.XXXXXX)"
@ -85,6 +95,9 @@ build_uboot_scripts() {
-e 's,##GRAPHICAL_IMAGES##,${GRAPHICAL_IMAGES},g' \
-e 's,##DEFAULT_IMAGE_NAME##,${DEFAULT_IMAGE_NAME},g' \
${WORKDIR}/${f} > ${TMP_INSTALL_SCR}
if [ "${DEY_SOC_VENDOR}" = "STM" ]; then
sed -i -e 's,##BOOTSCHEME_DEFAULT##,${BOOTSCHEME_DEFAULT},g' ${TMP_INSTALL_SCR}
fi
# Change the u-boot name when TrustFence is enabled
if [ "${TRUSTFENCE_SIGN}" = "1" ]; then
if [ "${DEY_SOC_VENDOR}" = "NXP" ]; then
@ -95,13 +108,9 @@ build_uboot_scripts() {
fi
else
sed -i -e 's,##SIGNED##,_Signed,g' ${TMP_INSTALL_SCR}
sed -i -e 's,##SIGNED_TFA##,_signed,g' ${TMP_INSTALL_SCR}
fi
else
sed -i -e 's,-##SIGNED##,,g' -e 's,##SIGNED##,,g' ${TMP_INSTALL_SCR}
if [ "${DEY_SOC_VENDOR}" = "STM" ]; then
sed -i -e 's,##SIGNED_TFA##,,g' ${TMP_INSTALL_SCR}
fi
fi
if [ "${f_ext}" = "txt" ]; then
mkimage -T script -n "DEY firmware install script" -C none -d ${TMP_INSTALL_SCR} ${DEPLOYDIR}/${f%.*}.scr
@ -146,7 +155,7 @@ adapt_uboot_filenames() {
if [ $j -eq $i ]
then
cd ${DEPLOYDIR}
rm -r ${UBOOT_BINARY}-${type}
rm -f ${UBOOT_BINARY}-${type}
ln -sf ${UBOOT_BINARYNAME}-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-${type}.${UBOOT_SUFFIX}
fi
done
@ -157,38 +166,28 @@ adapt_uboot_filenames() {
}
sign_uboot() {
# This function only applies to CC6, CC6Plus and CC6UL
if [ -n "${UBOOT_CONFIG}" ]
then
for config in ${UBOOT_MACHINE}; do
i=$(expr $i + 1);
for type in ${UBOOT_CONFIG}; do
j=$(expr $j + 1);
if [ $j -eq $i ]
then
cd ${DEPLOYDIR}
if [ "${BOOTLOADER_IMAGE_RECIPE}" = "u-boot" ]; then
install ${B}/${config}/SRK_efuses.bin SRK_efuses-${PV}-${PR}.bin
ln -sf SRK_efuses-${PV}-${PR}.bin SRK_efuses.bin
install ${B}/${config}/${UBOOT_BINARYNAME}-dtb-signed.imx ${UBOOT_BINARYNAME}-dtb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-dtb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-dtb-signed-${type}.${UBOOT_SUFFIX}
install ${B}/${config}/${UBOOT_BINARYNAME}-dtb-usb-signed.imx ${UBOOT_BINARYNAME}-dtb-usb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-dtb-usb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-dtb-usb-signed-${type}.${UBOOT_SUFFIX}
if [ "${TRUSTFENCE_DEK_PATH}" != "0" ]
then
install ${B}/${config}/${UBOOT_BINARYNAME}-dtb-encrypted.imx ${UBOOT_BINARYNAME}-dtb-encrypted-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-dtb-encrypted-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-dtb-encrypted-${type}.${UBOOT_SUFFIX}
fi
fi
fi
done
unset j
done
unset i
fi
# This function only applies to CC6, CC6Plus and CC6UL
[ -z "${UBOOT_CONFIG}" ] && return
for config in ${UBOOT_MACHINE}; do
i=$(expr $i + 1)
for type in ${UBOOT_CONFIG}; do
j=$(expr $j + 1)
if [ $j -eq $i ]; then
cd ${DEPLOYDIR}
cp -fp ${B}/${config}/SRK_efuses.bin SRK_efuses-${PV}-${PR}.bin
ln -sf SRK_efuses-${PV}-${PR}.bin SRK_efuses.bin
cp -fp ${B}/${config}/${UBOOT_BINARYNAME}-dtb-signed.imx ${UBOOT_BINARYNAME}-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-signed-${type}.${UBOOT_SUFFIX}
cp -fp ${B}/${config}/${UBOOT_BINARYNAME}-dtb-usb-signed.imx ${UBOOT_BINARYNAME}-usb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-usb-signed-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-usb-signed-${type}.${UBOOT_SUFFIX}
if [ "${TRUSTFENCE_DEK_PATH}" != "0" ]; then
cp -fp ${B}/${config}/${UBOOT_BINARYNAME}-dtb-encrypted.imx ${UBOOT_BINARYNAME}-encrypted-${type}-${PV}-${PR}.${UBOOT_SUFFIX}
ln -sf ${UBOOT_BINARYNAME}-encrypted-${type}-${PV}-${PR}.${UBOOT_SUFFIX} ${UBOOT_BINARYNAME}-encrypted-${type}.${UBOOT_SUFFIX}
fi
fi
done
unset j
done
}
# -----------------------------------------------------------------------------
@ -219,7 +218,7 @@ do_compile:append:ccmp1() {
}
BOOT_TOOLS = "imx-boot-tools"
BOOT_TOOLS:ccmp1 = "u-boot"
BOOT_TOOLS:stm32mpcommon = "u-boot"
do_deploy:append:ccimx8m() {
# Deploy u-boot-nodtb.bin and ccimx8m[m|n]-dvk.dtb, to be packaged in boot binary by imx-boot
@ -242,33 +241,59 @@ do_deploy:append:ccimx8m() {
fi
}
do_deploy:append:ccmp1() {
do_deploy:append:stm32mpcommon() {
# Deploy u-boot-nodtb.bin and ccmp1x-dvk-xxxx.dtb, to be packaged in fip binary by tf-a
install -d ${DEPLOYDIR}/${BOOT_TOOLS}
if [ -n "${UBOOT_DEVICETREE}" ]; then
for devicetree in ${UBOOT_DEVICETREE}; do
# Install u-boot dtb
install -m 644 ${B}/${config}/arch/arm/dts/${devicetree}.dtb ${DEPLOYDIR}/${BOOT_TOOLS}/${FIP_UBOOT_DTB}-${devicetree}.dtb
if [ "${UBOOT_SIGN_ENABLE}" = "1" ]; then
# Keep u-boot devicetree without signature
ubootdevicetree="${B}/${config}/arch/arm/dts/${devicetree}.dtb"
namewithoutsignature=`echo $ubootdevicetree | sed "s/\.dtb/-without-signature.dtb/g"`
# Install unsigned U-Boot dtb
install -m 644 ${namewithoutsignature} ${DEPLOYDIR}/${BOOT_TOOLS}/${FIP_UBOOT_DTB}-${devicetree}-without-signature.dtb
fi
done
fi
install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${DEPLOYDIR}/${BOOT_TOOLS}/u-boot-nodtb.bin
# Append signature to u-boot DT
if [ "x${UBOOT_SIGN_ENABLE}" = "x1" ] && [ -n "${UBOOT_DEVICETREE}" ] ; then
for devicetree in ${UBOOT_DEVICETREE}; do
# get name of u-boot devicetree without signature
ubootdevicetree="${DEPLOYDIR}/${BOOT_TOOLS}/${FIP_UBOOT_DTB}-${devicetree}.dtb"
namewithoutsignature=`echo $ubootdevicetree | sed "s/\.dtb/-without-signature.dtb/g"`
namewithsignature=`echo $ubootdevicetree | sed "s/\.dtb/-with-signature.dtb/g"`
mv $ubootdevicetree $namewithoutsignature
# get name of U-Boot device tree from DEPLOY_DIR
nameonkernel="${DEPLOY_DIR_IMAGE}/${FIP_UBOOT_DTB}-${devicetree}-with-signature.dtb"
cp $nameonkernel $namewithsignature
cp $nameonkernel $ubootdevicetree
done
fi
}
do_uboot_assemble_fitimage:append:stm32mpcommon() {
for config in ${UBOOT_MACHINE}; do
if [ -n "${UBOOT_DEVICETREE}" ] && [ "${UBOOT_SIGN_ENABLE}" = "1" ]; then
for devicetree in ${UBOOT_DEVICETREE}; do
# Keep u-boot devicetree without signature
ubootdevicetree="${B}/${config}/arch/arm/dts/${devicetree}.dtb"
namewithoutsignature=`echo $ubootdevicetree | sed "s/\.dtb/-without-signature.dtb/g"`
cp $ubootdevicetree $namewithoutsignature
# Add image public key in U-Boot dtb file
fdt_add_pubkey -a "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
-k "${UBOOT_SIGN_KEYDIR}" \
-n "${UBOOT_SIGN_IMG_KEYNAME}" \
-r "image" \
"${ubootdevicetree}"
# Add configuration public key in U-Boot dtb file
fdt_add_pubkey -a "${FIT_HASH_ALG},${FIT_SIGN_ALG}" \
-k "${UBOOT_SIGN_KEYDIR}" \
-n "${UBOOT_SIGN_KEYNAME}" \
-r "conf" \
"${ubootdevicetree}"
done
fi
done
}
# Add dependency to make sure that RSA keys generated to sign fitImage are available for u-boot
do_uboot_assemble_fitimage[depends] += " \
${@'virtual/kernel:do_kernel_generate_rsa_keys' \
if "stm32mpcommon" in d.getVar('MACHINEOVERRIDES') \
and "fitImage" in d.getVar('KERNEL_IMAGETYPE') else ''} \
"
FIP_DIR_UBOOT ?= "/u-boot"
# Deploy u-boot artifacts, to be packaged in fip binary by fip-stm32mp recipe
@ -281,12 +306,13 @@ u_boot_sysroot_populate() {
for devicetree in ${UBOOT_DEVICETREE}; do
# Install u-boot dtb
install -m 644 ${B}/${config}/arch/arm/dts/${devicetree}.dtb ${dest}/${FIP_UBOOT_DTB}-${devicetree}.dtb
# Install u-boot binary
install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${dest}/u-boot-nodtb-${devicetree}.bin
done
fi
install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${dest}/u-boot-nodtb-${devicetree}.bin
done
}
SYSROOT_PREPROCESS_FUNCS:ccmp2 =+ "u_boot_sysroot_populate"
SYSROOT_DIRS:append:ccmp2 = " ${FIP_DIR_UBOOT}"
SYSROOT_PREPROCESS_FUNCS:stm32mpcommon =+ "u_boot_sysroot_populate"
SYSROOT_DIRS:append:stm32mpcommon = " ${FIP_DIR_UBOOT}"
SYSROOT_DIRS += "/boot"

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -37,7 +37,8 @@ else
exit;
fi;
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -53,28 +54,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -84,7 +85,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -133,7 +134,7 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -172,14 +173,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -192,7 +195,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -200,13 +203,15 @@ setenv bootcmd "
exit;
fi;
fi;
usb reset;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -219,7 +224,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -234,7 +239,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -246,7 +251,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -258,7 +263,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,285 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
# Determine U-Boot file to program basing on module variant
# If module_variant is unknown or not set, return error asking the user
if test "${module_variant}" = "0x01" || test "${module_variant}" = "0x02"; then
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##2GB.imx;
elif test "${module_variant}" = "0x03"; then
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##1GB.imx;
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
true;
else
echo "";
echo "[ERROR] Cannot determine U-Boot file for this module!";
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6 QuadPlus variant:";
echo " - For a QuadPlus CPU with 2GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##2GB.imx";
echo " - For a DualPlus CPU with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##1GB.imx";
echo "";
echo "";
echo "2. Run the install script again.";
echo "";
echo "Aborted";
echo "";
exit;
fi;
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader ${INSTALL_UBOOT_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv bootcount 0;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
reset;
"
setenv bootcount 0
saveenv
reset

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -44,7 +44,8 @@ else
exit;
fi;
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -60,28 +61,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -91,7 +92,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -140,7 +141,7 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -179,14 +180,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -199,7 +202,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -207,13 +210,15 @@ setenv bootcmd "
exit;
fi;
fi;
usb reset;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -226,7 +231,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -241,7 +246,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -253,7 +258,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -265,7 +270,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,292 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
# Determine U-Boot file to program basing on module variant
# If module_variant is unknown or not set, return error asking the user
if test "${module_variant}" = "0x12"; then
setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc2GB.imx;
elif test "${module_variant}" = "0x02" || test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05" || test "${module_variant}" = "0x0b" || test "${module_variant}" = "0x11" || test "${module_variant}" = "0x14" || test "${module_variant}" = "0x15" || test "${module_variant}" = "0x16"; then
setenv INSTALL_UBOOT_FILENAME u-boot-cc${soc_family}sbc.imx;
elif test "${module_variant}" = "0x03" || test "${module_variant}" = "0x0c" || test "${module_variant}" = "0x0e" || test "${module_variant}" = "0x0f" || test "${module_variant}" = "0x13"; then
setenv INSTALL_UBOOT_FILENAME u-boot-cc${soc_family}sbc512MB.imx;
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
true;
else
echo "";
echo "[ERROR] Cannot determine U-Boot file for this module!";
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6 variant:";
echo " - For a Quad/Dual CPU with 2GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc2GB.imx";
echo " - For a Quad/Dual CPU with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc.imx";
echo " - For a Quad/Dual CPU with 512MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6qsbc512MB.imx";
echo " - For a DualLite/Solo CPU with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc.imx";
echo " - For a DualLite/Solo CPU with 512MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-ccimx6dlsbc512MB.imx";
echo "";
echo "2. Run the install script again.";
echo "";
echo "Aborted";
echo "";
exit;
fi;
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader ${INSTALL_UBOOT_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv bootcount 0;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
reset;
"
setenv bootcount 0
saveenv
reset

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the NAND
#
@ -17,6 +17,9 @@ elif test "${module_variant}" = "0x08" || test "${module_variant}" = "0x0a"; the
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##512MB.imx
fi
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
@ -40,8 +43,6 @@ else
exit;
fi;
setenv INSTALL_USBDEV 0
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
@ -56,7 +57,6 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ubifs
# Check for presence of firmware files on the USB
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
@ -64,24 +64,23 @@ if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
else
setenv rootfstype squashfs
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
setenv rootfstype;
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
setenv rootfstype squashfs;
else
setenv rootfstype
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -91,7 +90,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your NAND and will install the following files"
@ -137,10 +136,10 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -175,14 +174,16 @@ setenv bootcmd "
else
force_erase=\"-e\";
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -195,7 +196,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -203,12 +204,15 @@ setenv bootcmd "
exit;
fi;
fi;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -221,7 +225,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -236,7 +240,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -248,7 +252,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME} \$\{force_erase\};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -260,7 +264,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,290 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the micro SD
# card into the NAND
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
# Determine U-Boot file to program basing on module variant
# If module_variant is unknown or not set, return error asking the user
if test "${module_variant}" = "0x02" || test "${module_variant}" = "0x03" || test "${module_variant}" = "0x06" || test "${module_variant}" = "0x09"; then
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##.imx;
elif test "${module_variant}" = "0x04" || test "${module_variant}" = "0x05" || test "${module_variant}" = "0x07"; then
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##1GB.imx;
elif test "${module_variant}" = "0x08" || test "${module_variant}" = "0x0a"; then
setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##512MB.imx
fi
# Use 'test -n ...' because 'test -z ...' does not work well on old versions of
# u-boot when the checked value is empty.
if test -n "${INSTALL_UBOOT_FILENAME}"; then
true;
else
echo "";
echo "[ERROR] Cannot determine U-Boot file for this module!";
echo "";
echo "1. Set variable 'INSTALL_UBOOT_FILENAME' depending on your ConnectCore 6UL variant:";
echo " - For a SOM with 1GB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##1GB.imx";
echo " - For a SOM with 512MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##512MB.imx";
echo " - For a SOM with 256MB DDR3, run:";
echo " => setenv INSTALL_UBOOT_FILENAME u-boot-##MACHINE##.imx";
echo "";
echo "2. Run the install script again.";
echo "";
echo "Aborted";
echo "";
exit;
fi;
setenv INSTALL_MMCDEV 0
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ubifs
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
else
setenv rootfstype squashfs
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your NAND and will install the following files"
echo " on the partitions of the NAND."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader ${INSTALL_UBOOT_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'singlemtdsys' and 'dualboot' if previously set
# - Run 'partition_nand_linux' script to re-partition the NAND if needed
# - Save the environment
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv singlemtdsys ${singlemtdsys};
setenv dualboot ${dualboot};
setenv rootfstype ${rootfstype};
setenv install_dualboot ${install_dualboot};
run partition_nand_linux;
saveenv;
if test \"\$\{singlemtdsys\}\" = yes; then
run ubivolscript;
else
force_erase=\"-e\";
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME} \$\{force_erase\};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
if test \"\$\{singlemtdsys\}\" != yes; then
nand erase.part update;
fi;
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -202,7 +202,6 @@ if [ -z "${BASEFILENAME}" ]; then
fi
INSTALL_LINUX_FILENAME="${BASEFILENAME}-##MACHINE##.boot.ubifs"
INSTALL_RECOVERY_FILENAME="${BASEFILENAME}-##MACHINE##.recovery.ubifs"
INSTALL_ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
# Verify existence of files before starting the update
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
@ -217,16 +216,16 @@ for f in ${FILES}; do
done;
# Verify what kind of rootfs is going to be programmed
if [ ! -f ${INSTALL_ROOTFS_FILENAME} ]; then
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
INSTALL_ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.squashfs"
echo "\033[32m[INFO] Trying with file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
if [ -f "${INSTALL_ROOTFS_FILENAME}" ]; then
SQUASHFS=true
else
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
ABORT=true
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if [ -f "${ROOTFS_FILENAME}" ]; then
INSTALL_ROOTFS_FILENAME="${ROOTFS_FILENAME}"
elif [ -f "${ROOTFS_FILENAME_SQFS}" ]; then
INSTALL_ROOTFS_FILENAME="${ROOTFS_FILENAME_SQFS}"
SQUASHFS=true
else
printf "\033[31m[ERROR] Could not find any rootfs image\033[0m\n"
ABORT=true
fi
[ "${ABORT}" = true ] && exit 1

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -7,8 +7,8 @@
install_abort=0
BASEFILENAME=0
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##.bin;
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -24,28 +24,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -55,7 +55,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -104,10 +104,10 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -130,6 +130,7 @@ fi
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
# NOTE: insert some 'usb reset' commands to avoid EHCI timeouts
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
@ -148,14 +149,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -168,7 +171,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -176,12 +179,15 @@ setenv bootcmd "
exit;
fi;
fi;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -194,7 +200,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -209,7 +215,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -221,7 +227,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -233,7 +239,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,263 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##.bin;
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader ${INSTALL_UBOOT_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Force on-the-fly updates to avoid possible verification errors
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
setenv otf-update yes;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv otf-update;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -18,9 +18,8 @@ fi
# the necessary logic to choose the correct imx-boot file for the target's SOC.
setenv skip-uboot-check "yes"
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##-${soc_rev}.bin;
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -36,28 +35,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -67,7 +66,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -116,10 +115,10 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -161,14 +160,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -181,7 +182,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -189,13 +190,15 @@ setenv bootcmd "
exit;
fi;
fi;
usb reset;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -208,7 +211,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -223,7 +226,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -235,7 +238,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -247,7 +250,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,275 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
# Since SOMs with the B0 SOC might have an older U-Boot that doesn't export the
# SOC revision to the environment, use B0 by default
if test -z "${soc_rev}"; then
setenv soc_rev B0
fi
# In case this script is used to update to a newer release whose imx-boot file
# is not recognized by the SECO fw check, bypass it by default. The script has
# the necessary logic to choose the correct imx-boot file for the target's SOC.
setenv skip-uboot-check "yes"
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##-${soc_rev}.bin;
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader ${INSTALL_UBOOT_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Force on-the-fly updates to avoid possible verification errors
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
setenv otf-update yes;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv otf-update;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -22,8 +22,9 @@ if test "${soc_type}" = "imx93"; then
fi
fi
fi
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##${SOCREV}.bin
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -39,28 +40,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -70,7 +71,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -122,10 +123,10 @@ echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot usb ${INSTALL_USBDEV} ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot usb ${INSTALL_USBDEV} fat ${INSTALL_UBOOT_FILENAME}
update uboot ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
@ -163,6 +164,7 @@ fi;
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
# NOTE: insert some 'usb reset' commands to avoid EHCI timeouts
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
@ -181,14 +183,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -201,7 +205,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -209,12 +213,15 @@ setenv bootcmd "
exit;
fi;
fi;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -227,7 +234,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -242,7 +249,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -254,7 +261,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -266,7 +273,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,296 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
# Determine U-Boot file to program basing on SOM's SOC revision
if test "${soc_type}" = "imx93"; then
if test -z "${soc_rev}"; then
# Fallback to hardware version if soc_rev is empty
setexpr som_hv ${hwid_2} \& 78
setexpr som_hv ${som_hv} / 8
if test "${som_hv}" -lt "2"; then
SOCREV="-A0"
fi
else
if test "${soc_rev}" = "0x10"; then
SOCREV="-A0"
fi
fi
fi
setenv INSTALL_UBOOT_FILENAME imx-boot-##MACHINE##${SOCREV}.bin
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_UBOOT_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " bootloader1 ${INSTALL_UBOOT_FILENAME}"
if test "${install_redundant_bootloader}" = "yes"; then
echo " bootloader2 ${INSTALL_UBOOT_FILENAME}"
fi
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update U-Boot
echo ""
echo ""
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} (target will reset)"
echo ""
echo ""
update uboot mmc ${INSTALL_MMCDEV} ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
# Use old-style update with source file system argument
update uboot mmc ${INSTALL_MMCDEV} fat ${INSTALL_UBOOT_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi
fi
if test "${install_redundant_bootloader}" = yes; then
echo "";
echo "";
echo ">> Installing U-Boot boot loader image ${INSTALL_UBOOT_FILENAME} on redundant partition";
echo "";
echo "";
update uboot-redundant mmc ${INSTALL_MMCDEV} ${INSTALL_UBOOT_FILENAME};
if test $? -eq 1; then
echo "[ERROR] Failed to update redundant U-Boot boot loader!";
echo "";
echo "Aborted.";
exit;
fi;
fi;
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Force on-the-fly updates to avoid possible verification errors
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
setenv otf-update yes;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv otf-update;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the NAND
#
@ -7,9 +7,12 @@
install_abort=0
BASEFILENAME=0
setenv INSTALL_ATF_FILENAME tf-a-##MACHINE##-${module_ram}-nand.stm32
setenv INSTALL_FIP_FILENAME fip-##MACHINE##-${module_ram}-optee.bin
setenv INSTALL_USBDEV 0
setenv INSTALL_ATF_FILENAME tf-a-##MACHINE##-${module_ram}-##BOOTSCHEME_DEFAULT##-nand.stm32
setenv INSTALL_METADATA_FILENAME metadata-##MACHINE##.bin
setenv INSTALL_FIP_FILENAME fip-##MACHINE##-${module_ram}-##BOOTSCHEME_DEFAULT##-nand.bin
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -25,32 +28,30 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ubifs
# Check for presence of firmware files on the USB
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_METADATA_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
else
setenv rootfstype squashfs
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
setenv rootfstype;
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
setenv rootfstype squashfs;
else
setenv rootfstype
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -60,7 +61,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your NAND and will install the following files"
@ -70,6 +71,8 @@ echo " PARTITION FILENAME"
echo " --------- --------"
echo " fsbl1 ${INSTALL_ATF_FILENAME}"
echo " fsbl2 ${INSTALL_ATF_FILENAME}"
echo " metadata1 ${INSTALL_METADATA_FILENAME}"
echo " metadata2 ${INSTALL_METADATA_FILENAME}"
echo " fip-a ${INSTALL_FIP_FILENAME}"
echo " fip-b ${INSTALL_FIP_FILENAME}"
if test "${dualboot}" = "yes"; then
@ -103,20 +106,20 @@ setenv forced_update 1
# the first reset.
setenv bootdelay 0
# Update ATF and FIP images
# Update ATF, METADATA and FIP images
echo ""
echo ""
echo ">> Installing ATF boot loader image ${INSTALL_ATF_FILENAME}"
echo ""
echo ""
update fsbl1 usb ${INSTALL_USBDEV} ${INSTALL_ATF_FILENAME}
update fsbl1 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fsbl1!";
echo "";
echo "Aborted.";
exit;
fi
update fsbl2 usb ${INSTALL_USBDEV} ${INSTALL_ATF_FILENAME}
update fsbl2 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fsbl2!";
echo "";
@ -125,17 +128,36 @@ if test $? -eq 1; then
fi
echo ""
echo ""
echo ">> Installing METADATA boot loader image ${INSTALL_METADATA_FILENAME}"
echo ""
echo ""
update metadata1 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata1!";
echo "";
echo "Aborted.";
exit;
fi
update metadata2 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata2!";
echo "";
echo "Aborted.";
exit;
fi
echo ""
echo ""
echo ">> Installing FIP boot loader image ${INSTALL_FIP_FILENAME} (target will reset)"
echo ""
echo ""
update fip-a usb ${INSTALL_USBDEV} ${INSTALL_FIP_FILENAME}
update fip-a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-a!";
echo "";
echo "Aborted.";
exit;
fi
update fip-b usb ${INSTALL_USBDEV} ${INSTALL_FIP_FILENAME}
update fip-b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-b!";
echo "";
@ -169,14 +191,16 @@ setenv bootcmd "
setenv rootfstype ${rootfstype};
setenv install_dualboot ${install_dualboot};
run ubivolscript;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -189,7 +213,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -197,12 +221,15 @@ setenv bootcmd "
exit;
fi;
fi;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -215,7 +242,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -230,7 +257,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -242,7 +269,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -254,7 +281,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,281 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the micro SD
# card into the NAND
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
setenv INSTALL_ATF_FILENAME tf-a-##MACHINE##-${module_ram}-nand.stm32
setenv INSTALL_FIP_FILENAME fip-##MACHINE##-${module_ram}-optee.bin
setenv INSTALL_MMCDEV 1
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.ubifs
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.ubifs
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ubifs
# Check for presence of firmware files on the SD card
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
else
setenv rootfstype squashfs
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your NAND and will install the following files"
echo " on the partitions of the NAND."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " fsbl1 ${INSTALL_ATF_FILENAME}"
echo " fsbl2 ${INSTALL_ATF_FILENAME}"
echo " fip-a ${INSTALL_FIP_FILENAME}"
echo " fip-b ${INSTALL_FIP_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Update ATF and FIP images
echo ""
echo ""
echo ">> Installing ATF boot loader image ${INSTALL_ATF_FILENAME}"
echo ""
echo ""
update fsbl1 mmc ${INSTALL_MMCDEV} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fsbl1!";
echo "";
echo "Aborted.";
exit;
fi
update fsbl2 mmc ${INSTALL_MMCDEV} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fsbl2!";
echo "";
echo "Aborted.";
exit;
fi
echo ""
echo ""
echo ">> Installing FIP boot loader image ${INSTALL_FIP_FILENAME} (target will reset)"
echo ""
echo ""
update fip-a mmc ${INSTALL_MMCDEV} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-a!";
echo "";
echo "Aborted.";
exit;
fi
update fip-b mmc ${INSTALL_MMCDEV} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-b!";
echo "";
echo "Aborted.";
exit;
fi
# Check if uboot_config volume exists (U-Boot env)
ubi part UBI
ubi check uboot_config
if test $? -eq 1; then
# Create volumes layout (including U-Boot env)
run ubivolscript;
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Run 'ubivolscript' script to re-partition the UBI partition and save the
# environment
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv rootfstype ${rootfstype};
setenv install_dualboot ${install_dualboot};
run ubivolscript;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -1,7 +1,7 @@
#!/bin/sh
#===============================================================================
#
# Copyright (C) 2022-2024 by Digi International Inc.
# Copyright (C) 2022-2025 by Digi International Inc.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
@ -64,11 +64,11 @@ show_usage()
# - runs 'update' command from RAM
part_update()
{
echo "\033[36m"
echo "====================================================================================="
echo "Updating '${1}' partition with file: ${2}"
echo "====================================================================================="
echo "\033[0m"
printf "\033[36m\n"
printf "=====================================================================================\n"
printf "Updating '%s' partition with file: %s\n" "${1}" "${2}"
printf "=====================================================================================\n"
printf "\033[0m\n"
uuu fb: download -f "${2}"
uuu "fb[-t ${3}]:" ucmd update "${1}" ram \${fastboot_buffer} \${filesize} ${ERASE}
@ -84,7 +84,7 @@ echo "############################################################"
# -b, -d, -n (booleans)
# -f <fip-filename>
# -i <image-name>
while getopts 'a:bdf:hi:n' c
while getopts 'a:bdf:hi:nt' c
do
case $c in
a) INSTALL_ATF_FILENAME=${OPTARG} ;;
@ -128,12 +128,13 @@ echo "Determining image files to use..."
# Determine ATF file to program
if [ -z "${INSTALL_ATF_FILENAME}" ]; then
INSTALL_ATF_FILENAME="tf-a-##MACHINE##-${module_ram}-nand.stm32##SIGNED_TFA##"
INSTALL_ATF_FILENAME="tf-a-##MACHINE##-${module_ram}-##BOOTSCHEME_DEFAULT##-nand##SIGNED##.stm32"
fi
INSTALL_METADATA_FILENAME="metadata-##MACHINE##.bin"
# Determine FIP file to program
if [ -z "${INSTALL_FIP_FILENAME}" ]; then
INSTALL_FIP_FILENAME="fip-##MACHINE##-${module_ram}-optee##SIGNED##.bin"
INSTALL_FIP_FILENAME="fip-##MACHINE##-${module_ram}-##BOOTSCHEME_DEFAULT##-nand##SIGNED##.bin"
fi
# Determine linux, recovery, and rootfs image filenames to update
@ -151,32 +152,30 @@ if [ -z "${BASEFILENAME}" ]; then
fi
INSTALL_LINUX_FILENAME="${BASEFILENAME}-##MACHINE##.boot.ubifs"
INSTALL_RECOVERY_FILENAME="${BASEFILENAME}-##MACHINE##.recovery.ubifs"
INSTALL_ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
# Verify existence of files before starting the update
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_METADATA_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
if [ "${DUALBOOT}" != true ]; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for f in ${FILES}; do
if [ ! -f ${f} ]; then
echo "\033[31m[ERROR] Could not find file '${f}'\033[0m"
if [ ! -f "${f}" ]; then
printf "\033[31m[ERROR] Could not find file '%s'\033[0m\n" "${f}"
ABORT=true
fi
done;
# Verify what kind of rootfs is going to be programmed
if [ ! -f ${INSTALL_ROOTFS_FILENAME} ]; then
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
INSTALL_ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.squashfs"
echo "\033[32m[INFO] Trying with file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
if [ -f "${INSTALL_ROOTFS_FILENAME}" ]; then
SQUASHFS=true
else
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
ABORT=true
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ubifs"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if [ -f "${ROOTFS_FILENAME}" ]; then
INSTALL_ROOTFS_FILENAME="${ROOTFS_FILENAME}"
elif [ -f "${ROOTFS_FILENAME_SQFS}" ]; then
INSTALL_ROOTFS_FILENAME="${ROOTFS_FILENAME_SQFS}"
SQUASHFS=true
else
printf "\033[31m[ERROR] Could not find any rootfs image\033[0m\n"
ABORT=true
fi
[ "${ABORT}" = true ] && exit 1
@ -202,23 +201,25 @@ if [ "${NOWAIT}" != true ]; then
printf "\n"
printf " PARTITION\tFILENAME\n"
printf " ---------\t--------\n"
printf " fsbl1\t${INSTALL_ATF_FILENAME}\n"
printf " fsbl2\t${INSTALL_ATF_FILENAME}\n"
printf " fip-a\t${INSTALL_FIP_FILENAME}\n"
printf " fip-b\t${INSTALL_FIP_FILENAME}\n"
printf " fsbl1\t%s\n" "${INSTALL_ATF_FILENAME}"
printf " fsbl2\t%s\n" "${INSTALL_ATF_FILENAME}"
printf " metadata1\t%s\n" "${INSTALL_METADATA_FILENAME}"
printf " metadata2\t%s\n" "${INSTALL_METADATA_FILENAME}"
printf " fip-a\t%s\n" "${INSTALL_FIP_FILENAME}"
printf " fip-b\t%s\n" "${INSTALL_FIP_FILENAME}"
if [ "${DUALBOOT}" = true ]; then
printf " ${LINUX_NAME}_a\t${INSTALL_LINUX_FILENAME}\n"
printf " %s_a\t%s\n" "${LINUX_NAME}" "${INSTALL_LINUX_FILENAME}"
if [ "${INSTALL_DUALBOOT}" = true ]; then
printf " ${LINUX_NAME}_b\t${INSTALL_LINUX_FILENAME}\n"
printf " %s_b\t%s\n" "${LINUX_NAME}" "${INSTALL_LINUX_FILENAME}"
fi
printf " ${ROOTFS_NAME}_a\t${INSTALL_ROOTFS_FILENAME}\n"
printf " %s_a\t%s\n" "${ROOTFS_NAME}" "${INSTALL_ROOTFS_FILENAME}"
if [ "${INSTALL_DUALBOOT}" = true ]; then
printf " ${ROOTFS_NAME}_b\t${INSTALL_ROOTFS_FILENAME}\n"
printf " %s_b\t%s\n" "${ROOTFS_NAME}" "${INSTALL_ROOTFS_FILENAME}"
fi
else
printf " ${LINUX_NAME}\t${INSTALL_LINUX_FILENAME}\n"
printf " ${RECOVERY_NAME}\t${INSTALL_RECOVERY_FILENAME}\n"
printf " ${ROOTFS_NAME}\t${INSTALL_ROOTFS_FILENAME}\n"
printf " %s\t%s\n" "${LINUX_NAME}" "${INSTALL_LINUX_FILENAME}"
printf " %s\t%s\n" "${RECOVERY_NAME}" "${INSTALL_RECOVERY_FILENAME}"
printf " %s\t%s\n" "${ROOTFS_NAME}" "${INSTALL_ROOTFS_FILENAME}"
fi
printf "\n"
printf " Press CTRL+C now if you wish to abort.\n"
@ -226,7 +227,7 @@ if [ "${NOWAIT}" != true ]; then
while [ ${WAIT} -gt 0 ]; do
printf "\r Update process starts in %d " ${WAIT}
sleep 1
WAIT=$(( ${WAIT} - 1 ))
WAIT="$((WAIT - 1))"
done
printf "\r \n"
printf " Starting update process\n"
@ -242,6 +243,10 @@ uuu fb: ucmd setenv forced_update 1
part_update "fsbl1" "${INSTALL_ATF_FILENAME}" 5000
part_update "fsbl2" "${INSTALL_ATF_FILENAME}" 5000
# Update metadata
part_update "metadata1" "${INSTALL_METADATA_FILENAME}" 5000
part_update "metadata2" "${INSTALL_METADATA_FILENAME}" 5000
# Update FIP
part_update "fip-a" "${INSTALL_FIP_FILENAME}" 5000
part_update "fip-b" "${INSTALL_FIP_FILENAME}" 5000
@ -315,7 +320,7 @@ else
fi
# Set the dboot_kernel_var to fitimage if Trustfence is enabled
if [ "${TRUSTFENCE}" = "true" ] || echo "$INSTALL_UBOOT_FILENAME" | grep -q -e "signed"; then
if [ "${TRUSTFENCE}" = "true" ] || echo "${INSTALL_FIP_FILENAME}" | grep -q -e "Signed"; then
uuu fb: ucmd setenv dboot_kernel_var fitimage
uuu fb: ucmd saveenv
fi
@ -330,10 +335,10 @@ uuu fb: ucmd bootcount reset
# Reset the target
uuu fb: acmd reset
echo "\033[32m"
echo "============================================================="
echo "Done! Wait for the target to complete first boot process."
echo "============================================================="
echo "\033[0m"
printf "\033[32m\n"
printf "=============================================================\n"
printf "Done! Wait for the target to complete first boot process.\n"
printf "=============================================================\n"
printf "\033[0m\n"
exit

View File

@ -66,9 +66,11 @@ if test "${module_has_wifi}" = "1" && test -z "${disable_wifi}"; then
setenv overlays ccmp13_wifi.dtbo,${overlays}
fi
# Apply DVKv2 overlay if the board_version is 2
# Apply DVK version overlay
if test "${board_version}" -eq "2"; then
setenv overlays ccmp13-dvk_v2.dtbo,${overlays}
elif test "${board_version}" -eq "3"; then
setenv overlays ccmp13-dvk_v3.dtbo,${overlays}
fi
if test "${boot_device}" = "mmc"; then

View File

@ -1,5 +1,5 @@
#
# U-Boot script for installing Linux images created by Yocto from a USB stick
# U-Boot script for installing Linux images created by Yocto from external media
# into the eMMC
#
@ -10,7 +10,8 @@ BASEFILENAME=0
setenv INSTALL_ATF_FILENAME tf-a-##MACHINE##-optee-emmc.stm32
setenv INSTALL_METADATA_FILENAME metadata-##MACHINE##.bin
setenv INSTALL_FIP_FILENAME fip-##MACHINE##-optee-emmc.bin
setenv INSTALL_USBDEV 0
setenv INSTALL_MEDIA_INDEX ##INSTALL_MEDIA_INDEX##
setenv INSTALL_MEDIA ##INSTALL_MEDIA##
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
@ -26,28 +27,28 @@ if test "${BASEFILENAME}" = "0"; then
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the USB
# Check for presence of firmware files on the media
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_METADATA_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e usb ${INSTALL_USBDEV} ${install_f}; then
if test ! -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
ROOTFS_FILENAME="${BASEFILENAME}-##MACHINE##.ext4"
ROOTFS_FILENAME_SQFS="${BASEFILENAME}-##MACHINE##.squashfs"
if test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME};
elif test -e ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${ROOTFS_FILENAME_SQFS}; then
setenv INSTALL_ROOTFS_FILENAME ${ROOTFS_FILENAME_SQFS};
else
echo "ERROR: Could not find any rootfs image";
install_abort=1;
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
@ -57,7 +58,7 @@ if test "${install_abort}" = "1"; then
fi
echo "############################################################"
echo "# Linux firmware install from USB #"
echo "# Linux firmware install from media #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
@ -111,14 +112,14 @@ echo ""
echo ">> Installing ATF boot loader image ${INSTALL_ATF_FILENAME}"
echo ""
echo ""
update boot1 usb ${INSTALL_USBDEV} ${INSTALL_ATF_FILENAME}
update boot1 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update boot1!";
echo "";
echo "Aborted.";
exit;
fi
update boot2 usb ${INSTALL_USBDEV} ${INSTALL_ATF_FILENAME}
update boot2 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update boot2!";
echo "";
@ -127,17 +128,17 @@ if test $? -eq 1; then
fi
echo ""
echo ""
echo ">> Installing METADATA boot loader image ${INSTALL_ATF_FILENAME}"
echo ">> Installing METADATA boot loader image ${INSTALL_METADATA_FILENAME}"
echo ""
echo ""
update metadata1 usb ${INSTALL_USBDEV} ${INSTALL_METADATA_FILENAME}
update metadata1 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata1!";
echo "";
echo "Aborted.";
exit;
fi
update metadata2 usb ${INSTALL_USBDEV} ${INSTALL_METADATA_FILENAME}
update metadata2 ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata2!";
echo "";
@ -149,14 +150,14 @@ echo ""
echo ">> Installing FIP boot loader image ${INSTALL_FIP_FILENAME} (target will reset)"
echo ""
echo ""
update fip-a usb ${INSTALL_USBDEV} ${INSTALL_FIP_FILENAME}
update fip-a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-a!";
echo "";
echo "Aborted.";
exit;
fi
update fip-b usb ${INSTALL_USBDEV} ${INSTALL_FIP_FILENAME}
update fip-b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-b!";
echo "";
@ -178,6 +179,7 @@ fi
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
# NOTE: insert some 'usb reset' commands to avoid EHCI timeouts
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
@ -196,14 +198,16 @@ setenv bootcmd "
echo \"Aborted.\";
exit;
fi;
usb start;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb start;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
@ -216,7 +220,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
@ -224,12 +228,15 @@ setenv bootcmd "
exit;
fi;
fi;
if test \"\$\{INSTALL_MEDIA\}\" = "usb"; then
usb reset;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_a ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
@ -242,7 +249,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs_b ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
@ -257,7 +264,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux usb ${INSTALL_USBDEV} ${INSTALL_LINUX_FILENAME};
update linux ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
@ -269,7 +276,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery usb ${INSTALL_USBDEV} ${INSTALL_RECOVERY_FILENAME};
update recovery ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
@ -281,7 +288,7 @@ setenv bootcmd "
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs usb ${INSTALL_USBDEV} ${INSTALL_ROOTFS_FILENAME};
update rootfs ${INSTALL_MEDIA} ${INSTALL_MEDIA_INDEX} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";

View File

@ -1,311 +0,0 @@
#
# U-Boot script for installing Linux images created by Yocto from the micro SD
# card into the eMMC
#
# Reset temp variables
install_abort=0
BASEFILENAME=0
setenv INSTALL_ATF_FILENAME tf-a-##MACHINE##-optee-emmc.stm32
setenv INSTALL_METADATA_FILENAME metadata-##MACHINE##.bin
setenv INSTALL_FIP_FILENAME fip-##MACHINE##-optee-emmc.bin
setenv INSTALL_MMCDEV 2
if test -z "${image-name}"; then
setenv image-name ##DEFAULT_IMAGE_NAME##
fi
GRAPHICAL_IMAGES="##GRAPHICAL_IMAGES##"
for g in ${GRAPHICAL_IMAGES}; do
if test "${image-name}" = "${g}"; then
BASEFILENAME="${image-name}-##GRAPHICAL_BACKEND##"
fi
done
if test "${BASEFILENAME}" = "0"; then
BASEFILENAME="${image-name}"
fi
setenv INSTALL_LINUX_FILENAME ${BASEFILENAME}-##MACHINE##.boot.vfat
setenv INSTALL_RECOVERY_FILENAME ${BASEFILENAME}-##MACHINE##.recovery.vfat
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.ext4
# Check for presence of firmware files on the SD card
FILES="${INSTALL_ATF_FILENAME} ${INSTALL_METADATA_FILENAME} ${INSTALL_FIP_FILENAME} ${INSTALL_LINUX_FILENAME}"
if test "${dualboot}" != "yes"; then
FILES="${FILES} ${INSTALL_RECOVERY_FILENAME}"
fi
for install_f in ${FILES}; do
if test ! -e mmc ${INSTALL_MMCDEV} ${install_f}; then
echo "ERROR: Could not find file ${install_f}";
install_abort=1;
fi;
done
# Verify what kind of rootfs is going to be programmed
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
setenv INSTALL_ROOTFS_FILENAME ${BASEFILENAME}-##MACHINE##.squashfs
echo "INFO: Trying with file ${INSTALL_ROOTFS_FILENAME}";
if test ! -e mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME}; then
echo "ERROR: Could not find file ${INSTALL_ROOTFS_FILENAME}";
install_abort=1;
fi
fi
if test "${install_abort}" = "1"; then
echo "To install a different image, set variable 'image-name', e.g.:"
echo " => setenv image-name core-image-base"
echo "Aborted.";
exit;
fi
echo "############################################################"
echo "# Linux firmware install from micro SD #"
echo "############################################################"
echo ""
echo " This process will erase your eMMC and will install the following files"
echo " on the partitions of the eMMC."
echo ""
echo " PARTITION FILENAME"
echo " --------- --------"
echo " boot1 ${INSTALL_ATF_FILENAME}"
echo " boot2 ${INSTALL_ATF_FILENAME}"
echo " metadata1 ${INSTALL_METADATA_FILENAME}"
echo " metadata2 ${INSTALL_METADATA_FILENAME}"
echo " fip-a ${INSTALL_FIP_FILENAME}"
echo " fip-b ${INSTALL_FIP_FILENAME}"
if test "${dualboot}" = "yes"; then
echo " linux_a ${INSTALL_LINUX_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " linux_b ${INSTALL_LINUX_FILENAME}"
fi
echo " rootfs_a ${INSTALL_ROOTFS_FILENAME}"
if test "${install_dualboot}" = "yes"; then
echo " rootfs_b ${INSTALL_ROOTFS_FILENAME}"
fi
else
echo " linux ${INSTALL_LINUX_FILENAME}"
echo " recovery ${INSTALL_RECOVERY_FILENAME}"
echo " rootfs ${INSTALL_ROOTFS_FILENAME}"
fi
echo ""
echo " Press CTRL+C now if you wish to abort or wait 10 seconds"
echo " to continue."
sleep 10
if test $? -eq 1; then
echo "Aborted by user.";
exit;
fi
# Skip user confirmation for U-Boot update
setenv forced_update 1
# Set bootdelay to zero so that firmware update is run immediately after
# the first reset.
setenv bootdelay 0
# Set target MMC device index to eMMC
setenv mmcdev 0
# Update ATF, METADATA and FIP images
echo ""
echo ""
echo ">> Installing ATF boot loader image ${INSTALL_ATF_FILENAME}"
echo ""
echo ""
update boot1 mmc ${INSTALL_MMCDEV} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update boot1!";
echo "";
echo "Aborted.";
exit;
fi
update boot2 mmc ${INSTALL_MMCDEV} ${INSTALL_ATF_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update boot2!";
echo "";
echo "Aborted.";
exit;
fi
echo ""
echo ""
echo ">> Installing METADATA boot loader image ${INSTALL_ATF_FILENAME}"
echo ""
echo ""
update metadata1 mmc ${INSTALL_MMCDEV} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata1!";
echo "";
echo "Aborted.";
exit;
fi
update metadata2 mmc ${INSTALL_MMCDEV} ${INSTALL_METADATA_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update metadata2!";
echo "";
echo "Aborted.";
exit;
fi
echo ""
echo ""
echo ">> Installing FIP boot loader image ${INSTALL_FIP_FILENAME} (target will reset)"
echo ""
echo ""
update fip-a mmc ${INSTALL_MMCDEV} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-a!";
echo "";
echo "Aborted.";
exit;
fi
update fip-b mmc ${INSTALL_MMCDEV} ${INSTALL_FIP_FILENAME}
if test $? -eq 1; then
echo "[ERROR] Failed to update fip-b!";
echo "";
echo "Aborted.";
exit;
fi
# Set 'bootcmd' to the second part of the script that will
# - Reset environment to defaults
# - Restore 'dualboot' if previously set
# - Save the environment
# - Force on-the-fly updates to avoid possible verification errors
# - Partition the eMMC user data area for Linux
# - If Dual Boot
# - Update the system partitions: linux_a, linux_b, rootfs_a, rootfs_b
# - Set bootlimit to 3
# - If Normal Boot:
# - Update the system partitions: linux, recovery, rootfs
# - Erase the 'update' partition
# - Configure recovery to wipe 'update' partition
# - Run 'recovery' and let the system boot after
setenv bootcmd "
env default -a;
setenv dualboot ${dualboot};
setenv install_dualboot ${install_dualboot};
saveenv;
setenv otf-update yes;
echo \"\";
echo \"\";
echo \">> Creating Linux partition table on the eMMC\";
echo \"\";
echo \"\";
run partition_mmc_linux;
if test \$? -eq 1; then
echo \"[ERROR] Failed to create Linux partition table!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_a\";
echo \"\";
echo \"\";
update linux_a mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_a!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux_b\";
echo \"\";
echo \"\";
update linux_b mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux_b!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_a\";
echo \"\";
echo \"\";
update rootfs_a mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_a partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
if test \"\$\{install_dualboot\}\" = yes; then
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs_b\";
echo \"\";
echo \"\";
update rootfs_b mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs_b partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
fi;
setenv bootlimit 3;
else
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_LINUX_FILENAME} on linux\";
echo \"\";
echo \"\";
update linux mmc ${INSTALL_MMCDEV} ${INSTALL_LINUX_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update linux!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_RECOVERY_FILENAME} on recovery\";
echo \"\";
echo \"\";
update recovery mmc ${INSTALL_MMCDEV} ${INSTALL_RECOVERY_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update recovery partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
echo \"\";
echo \">> Installing file ${INSTALL_ROOTFS_FILENAME} on rootfs\";
echo \"\";
echo \"\";
update rootfs mmc ${INSTALL_MMCDEV} ${INSTALL_ROOTFS_FILENAME};
if test \$? -eq 1; then
echo \"[ERROR] Failed to update rootfs partition!\";
echo \"\";
echo \"Aborted.\";
exit;
fi;
echo \"\";
setenv boot_recovery yes;
setenv recovery_command wipe_update;
fi;
setenv otf-update;
saveenv;
echo \"\";
echo \"\";
echo \">> Firmware installation complete.\";
if test \"\$\{dualboot\}\" != yes; then
echo \"Rebooting into recovery mode for final deployment.\";
fi;
echo \"\";
echo \"\";
sleep 1;
bootcount reset;
reset;
"
bootcount reset
saveenv
reset

View File

@ -108,7 +108,7 @@ echo "Determining image files to use..."
# Determine ATF file to program
if [ -z "${INSTALL_ATF_FILENAME}" ]; then
INSTALL_ATF_FILENAME="tf-a-##MACHINE##-optee-emmc.stm32##SIGNED_TFA##"
INSTALL_ATF_FILENAME="tf-a-##MACHINE##-optee-emmc##SIGNED##.stm32"
fi
INSTALL_METADATA_FILENAME="metadata-##MACHINE##.bin"
@ -306,7 +306,7 @@ else
fi
# Set the dboot_kernel_var to fitimage if Trustfence is enabled
if [ "${TRUSTFENCE}" = "true" ] || echo "${INSTALL_UBOOT_FILENAME}" | grep -q -e "signed"; then
if [ "${TRUSTFENCE}" = "true" ] || echo "${INSTALL_FIP_FILENAME}" | grep -q -e "Signed"; then
uuu fb: ucmd setenv dboot_kernel_var fitimage
uuu fb: ucmd saveenv
fi

View File

@ -1,11 +0,0 @@
# Copyright (C) 2020-2024, Digi International Inc.
require u-boot-dey.inc
LIC_FILES_CHKSUM = "file://Licenses/README;md5=30503fd321432fc713238f582193b78e"
DEPENDS += "flex-native bison-native"
SRCBRANCH = "v2020.04/master"
SRCREV = "${AUTOREV}"
COMPATIBLE_MACHINE = "(ccimx8m)"

Some files were not shown because too many files have changed in this diff Show More