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:
commit
b460485771
42
README.md
42
README.md
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
# =========================================================================
|
||||
|
|
|
|||
|
|
@ -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) \
|
||||
}"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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 \
|
||||
"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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() {
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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 \
|
||||
|
|
|
|||
|
|
@ -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)"
|
||||
|
|
@ -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)"
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
||||
|
|
|
|||
|
|
@ -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,17 +158,8 @@ do_deploy() {
|
|||
--output ${DEPLOYDIR}/${FIP_DIR_FIP}
|
||||
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
|
||||
# Create symlinks in DEPLOYDIR
|
||||
|
||||
# Remove trailing slash (/) from ST variables
|
||||
FIP_BASEDIR="$(echo ${FIP_DIR_FIP} | cut -c2-)"
|
||||
|
|
@ -153,18 +168,20 @@ deploy_symlinks_fip() {
|
|||
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}"
|
||||
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}" "${DEPLOY_DIR_IMAGE}/"
|
||||
ln -sf "${FIP_BASEDIR}/${FIP_FILENAME}" "${DEPLOYDIR}/"
|
||||
fi
|
||||
if [ -f "${DEPLOY_DIR_IMAGE}/${FIP_BASEDIR}/${FIP_BASENAME}-${dt}-ddr-${config}.${FWDDR_SUFFIX}" ]; then
|
||||
cd "${DEPLOY_DIR_IMAGE}"
|
||||
|
||||
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_BASENAME}-${dt}-ddr-${config}.${FWDDR_SUFFIX}" "${DEPLOY_DIR_IMAGE}/"
|
||||
ln -sf "${FIP_BASEDIR}/${FIP_DDR_FILENAME}" "${DEPLOYDIR}/"
|
||||
fi
|
||||
done
|
||||
done
|
||||
}
|
||||
SYSROOT_PREPROCESS_FUNCS += "deploy_symlinks_fip"
|
||||
addtask deploy before do_build after do_compile
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,11 +8,20 @@ if [ "$USER" == "root" ]; then
|
|||
export PULSE_RUNTIME_PATH=/run/user/`id -u root`/pulse
|
||||
export USE_PLAYBIN3=1
|
||||
|
||||
# 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
|
||||
else
|
||||
if [ -e $XDG_RUNTIME_DIR/wayland-1 ]; then
|
||||
break
|
||||
elif [ -e $XDG_RUNTIME_DIR/wayland-1 ]; then
|
||||
export WAYLAND_DISPLAY=wayland-1
|
||||
fi
|
||||
break
|
||||
else
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
|
||||
if [ -z "$WAYLAND_DISPLAY" ]; then
|
||||
echo "WARNING: No Wayland socket found"
|
||||
fi
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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)}"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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)}"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
|
|
@ -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)
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -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'
|
||||
--
|
||||
|
|
@ -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"
|
||||
|
|
@ -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/* \
|
||||
"
|
||||
|
|
@ -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/* \
|
||||
"
|
||||
|
|
@ -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 = "(.*)"
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -158,37 +167,27 @@ adapt_uboot_filenames() {
|
|||
|
||||
sign_uboot() {
|
||||
# This function only applies to CC6, CC6Plus and CC6UL
|
||||
if [ -n "${UBOOT_CONFIG}" ]
|
||||
then
|
||||
[ -z "${UBOOT_CONFIG}" ] && return
|
||||
for config in ${UBOOT_MACHINE}; do
|
||||
i=$(expr $i + 1);
|
||||
i=$(expr $i + 1)
|
||||
for type in ${UBOOT_CONFIG}; do
|
||||
j=$(expr $j + 1);
|
||||
if [ $j -eq $i ]
|
||||
then
|
||||
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
|
||||
cp -fp ${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
|
||||
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
|
||||
unset i
|
||||
fi
|
||||
}
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
|
@ -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,32 +241,58 @@ 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
|
||||
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
|
||||
# get name of u-boot devicetree without signature
|
||||
ubootdevicetree="${DEPLOYDIR}/${BOOT_TOOLS}/${FIP_UBOOT_DTB}-${devicetree}.dtb"
|
||||
# Keep u-boot devicetree without signature
|
||||
ubootdevicetree="${B}/${config}/arch/arm/dts/${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
|
||||
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"
|
||||
|
||||
|
|
@ -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
|
||||
done
|
||||
fi
|
||||
# Install u-boot binary
|
||||
install -m 0777 ${B}/${config}/u-boot-nodtb.bin ${dest}/u-boot-nodtb-${devicetree}.bin
|
||||
done
|
||||
fi
|
||||
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"
|
||||
|
|
|
|||
|
|
@ -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,29 +54,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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,29 +61,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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}";
|
||||
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
|
||||
echo "ERROR: Could not find any rootfs image";
|
||||
install_abort=1;
|
||||
else
|
||||
setenv rootfstype squashfs
|
||||
fi
|
||||
else
|
||||
setenv rootfstype
|
||||
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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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,17 +216,17 @@ 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
|
||||
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
|
||||
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
|
||||
printf "\033[31m[ERROR] Could not find any rootfs image\033[0m\n"
|
||||
ABORT=true
|
||||
fi
|
||||
fi
|
||||
|
||||
[ "${ABORT}" = true ] && exit 1
|
||||
|
||||
|
|
|
|||
|
|
@ -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,29 +24,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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,29 +35,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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,29 +40,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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}";
|
||||
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
|
||||
echo "ERROR: Could not find any rootfs image";
|
||||
install_abort=1;
|
||||
else
|
||||
setenv rootfstype squashfs
|
||||
fi
|
||||
else
|
||||
setenv rootfstype
|
||||
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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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,33 +152,31 @@ 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
|
||||
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
|
||||
echo "\033[31m[ERROR] Could not find file '${INSTALL_ROOTFS_FILENAME}'\033[0m"
|
||||
printf "\033[31m[ERROR] Could not find any rootfs image\033[0m\n"
|
||||
ABORT=true
|
||||
fi
|
||||
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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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,29 +27,29 @@ 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}";
|
||||
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
|
||||
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"
|
||||
|
|
@ -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;
|
||||
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 \"\";
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue