Merge tag 'dey-5.0-r3.1' into dey-5.0/master
Digi Embedded Yocto 5.0-r3.1 Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
commit
e2ed58b70b
56
README.md
56
README.md
|
|
@ -21,6 +21,13 @@ OS versions:
|
|||
|
||||
Software for the following hardware platforms is in production support:
|
||||
|
||||
## ConnectCore 95
|
||||
* ConnectCore 95 System-on-Module (SOM)
|
||||
* [CC-WMX-B30F-B1](https://www.digi.com/products/models/cc-wmx-b30f-b1)
|
||||
* [CC-MX-B30F-B1](https://www.digi.com/products/models/cc-mx-b30f-b1)
|
||||
* ConnectCore 95 Development Kit (DVK)
|
||||
* [CC-WMX95-KIT](https://www.digi.com/products/models/cc-wmx95-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/5.0/cc95/yocto-gs_index))
|
||||
|
||||
## ConnectCore MP25
|
||||
* ConnectCore MP25 System-on-Module (SOM)
|
||||
* [CC-WST-J17D-NK](https://www.digi.com/products/models/cc-wst-j17d-nk)
|
||||
|
|
@ -101,6 +108,32 @@ Software for the following hardware platforms is in production support:
|
|||
* [CC-SBP-WMX-JN58](https://www.digi.com/products/models/cc-sbp-wmx-jn58)
|
||||
* [CC-SBP-WMX-JN7A](https://www.digi.com/products/models/cc-sbp-wmx-jn7a)
|
||||
|
||||
## ConnectCore 6 Plus
|
||||
* ConnectCore 6 Plus System-on-Module (SOM)
|
||||
* [CC-WMX-KK8D-TN](https://www.digi.com/products/models/cc-wmx-kk8d-tn)
|
||||
* ConnectCore 6 Plus professional development kit
|
||||
* [CC-WMX6P-KIT](https://www.digi.com/products/models/cc-wmx6p-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/4.0/cc6plus/yocto-gs_index))
|
||||
|
||||
## ConnectCore 6
|
||||
* ConnectCore 6 System-on-Module (SOM)
|
||||
* [CC-WMX-J97C-TN](https://www.digi.com/products/models/cc-wmx-j97c-tn)
|
||||
* [CC-WMX-L96C-TE](https://www.digi.com/products/models/cc-wmx-l96c-te)
|
||||
* [CC-WMX-L87C-TE](https://www.digi.com/products/models/cc-wmx-l87c-te)
|
||||
* [CC-MX-L76C-Z1](https://www.digi.com/products/models/cc-mx-l76c-z1)
|
||||
* [CC-MX-L86C-Z1](https://www.digi.com/products/models/cc-mx-l86c-z1)
|
||||
* [CC-MX-L96C-Z1](https://www.digi.com/products/models/cc-mx-l96c-z1)
|
||||
* [CC-WMX-L76C-TE](https://www.digi.com/products/models/cc-wmx-l76c-te)
|
||||
* CC-WMX-K87C-FJA
|
||||
* CC-WMX-K77C-TE
|
||||
* CC-WMX-L97D-TN
|
||||
* CC-WMX-J98C-FJA
|
||||
* CC-WMX-J98C-FJA-1
|
||||
* ConnectCore 6 Jumpstart Development Kit (SBC with Connectore 6 module)
|
||||
* [CC-WMX6-KIT](https://www.digi.com/products/models/cc-wmx6-kit) ([Get Started](https://www.digi.com/resources/documentation/digidocs/embedded/dey/4.0/cc6/yocto-gs_index))
|
||||
* [CC-SB-WMX-J97C-1](https://www.digi.com/products/models/cc-sb-wmx-j97c-1)
|
||||
* [CC-SB-WMX-L87C-1](https://www.digi.com/products/models/cc-sb-wmx-l87c-1)
|
||||
* [CC-SB-WMX-L76C-1](https://www.digi.com/products/models/cc-sb-wmx-l76c-1)
|
||||
|
||||
# Installation
|
||||
|
||||
Digi Embedded Yocto is composed of a set of different Yocto layers that work in
|
||||
|
|
@ -121,7 +154,28 @@ Documentation is available online at https://www.digi.com/resources/documentatio
|
|||
|
||||
## 5.0-r3
|
||||
|
||||
TODO
|
||||
* ST-based platforms
|
||||
* Updated BSP
|
||||
* Trusted Firmware ARM v2.10 (based on tag 'v2.10-stm32mp-r2' by ST)
|
||||
* OP-TEE v4.0.0 (based on tag '4.0.0-stm32mp-r2' by ST)
|
||||
* U-Boot v2023.10 (based on tag 'v2023.10-stm32mp-r2' by ST)
|
||||
* Linux kernel v6.6.78 (based on tag 'v6.6-stm32mp-r2' by ST)
|
||||
* Updated X-LINUX-AI software package (based on tag 'v6.1.1' by ST)
|
||||
* Complete TrustFence support for ConnectCore MP25
|
||||
* Added support to sign/encrypt RPROC firmware for ConnectCore MP25
|
||||
* Added VREFBUF internal voltage reference for ADC on ConnectCore MP25
|
||||
* NXP-based platforms
|
||||
* Added support for ConnectCore 6/6N and ConnectCore 6 Plus
|
||||
* Added support for ConnectCore 95 (beta)
|
||||
* Updated BSP
|
||||
* Trusted Firmware ARM v2.10 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* OP-TEE v4.4.0 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* OEI v1.0 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* System Manager 2025q2 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* U-Boot v2024.04 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* Linux kernel v6.6.52 (based on tag 'lf-6.6.52-2.2.1' by NXP)
|
||||
* Added 'dey-image-chromium' image recipe for ConnectCore 95
|
||||
* Added WIC templates for sdcard image generation
|
||||
|
||||
## 5.0-r2
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,9 @@ KERNEL_DEVICETREE ?= " \
|
|||
"
|
||||
FIT_CONF_DEFAULT_DTB = "ccimx95-dvk.dtb"
|
||||
|
||||
# Default image for install scripts
|
||||
DEFAULT_IMAGE_NAME ?= "dey-image-chromium"
|
||||
|
||||
# Boot artifacts to be copied from the deploy dir to the installer ZIP
|
||||
BOOTABLE_ARTIFACTS = " \
|
||||
imx-boot##SIGNED##-ccimx95-dvk.bin \
|
||||
|
|
|
|||
|
|
@ -134,14 +134,23 @@ ST_USERFS = "0"
|
|||
# Boot artifacts to be copied from the deploy dir to the installer ZIP
|
||||
BOOTABLE_ARTIFACTS = " \
|
||||
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', \
|
||||
oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT') == '0', 'tf-a-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.stm32', \
|
||||
'tf-a-ccmp25-dvk-optee-emmc${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.stm32'), \
|
||||
'tf-a-ccmp25-dvk-optee-emmc.stm32')} \
|
||||
oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT') == '0', 'tf-a-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.stm32 ' \
|
||||
'tf-a-ccmp25-dvk-optee-usb${SIGN_SUFFIX}.stm32 ', \
|
||||
'tf-a-ccmp25-dvk-optee-emmc${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.stm32 ' \
|
||||
'tf-a-ccmp25-dvk-optee-usb${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.stm32 '), \
|
||||
'tf-a-ccmp25-dvk-optee-emmc.stm32 ' \
|
||||
'tf-a-ccmp25-dvk-optee-usb.stm32 ')} \
|
||||
metadata-ccmp25-dvk.bin \
|
||||
${@oe.utils.ifelse(d.getVar('TRUSTFENCE_SIGN') == '1', \
|
||||
oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT') == '0', 'fip-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.bin', \
|
||||
'fip-ccmp25-dvk-optee-emmc${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.bin'), \
|
||||
'fip-ccmp25-dvk-optee-emmc.bin')} \
|
||||
oe.utils.ifelse(d.getVar('TRUSTFENCE_ENCRYPT') == '0', 'fip-ccmp25-dvk-optee-emmc${SIGN_SUFFIX}.bin ' \
|
||||
'fip-ccmp25-dvk-optee-usb${SIGN_SUFFIX}.bin ' \
|
||||
'fip-ccmp25-dvk-ddr-optee-usb${SIGN_SUFFIX}.bin ', \
|
||||
'fip-ccmp25-dvk-optee-emmc${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.bin ' \
|
||||
'fip-ccmp25-dvk-optee-usb${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.bin ' \
|
||||
'fip-ccmp25-dvk-ddr-optee-usb${ENCRYPT_SUFFIX}${SIGN_SUFFIX}.bin '), \
|
||||
'fip-ccmp25-dvk-optee-emmc.bin ' \
|
||||
'fip-ccmp25-dvk-optee-usb.bin ' \
|
||||
'fip-ccmp25-dvk-ddr-optee-usb.bin ')} \
|
||||
"
|
||||
|
||||
# Per-machine DISTRO_FEATURES customization
|
||||
|
|
|
|||
|
|
@ -8,9 +8,6 @@ include conf/machine/include/digi-defaults.inc
|
|||
|
||||
DIGI_FAMILY = "ccmp1"
|
||||
|
||||
# Platform T-FA settings
|
||||
TFA_SIGN_SUFFIX ?= "${@bb.utils.contains('TRUSTFENCE_SIGN', '1', '_signed', '', d)}"
|
||||
|
||||
# =========================================================================
|
||||
# U-Boot
|
||||
# =========================================================================
|
||||
|
|
|
|||
|
|
@ -21,8 +21,8 @@ SRC_URI = " \
|
|||
"
|
||||
|
||||
SRC_URI:append:ccmp25 = " \
|
||||
${@oe.utils.conditional('TRUSTFENCE_ENABLED', '1' , 'file://0001-ARM-dts-ccmp25-add-signed-firmware-support-for-RPROC.patch', '', d)} \
|
||||
${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'file://0001-ARM-dts-ccmp25-add-signed-firmware-support-for-RPROC.patch', '', d)} \
|
||||
"
|
||||
|
||||
# Enable remoteproc OTP public key verification for signed firmware support
|
||||
EXTRA_OEMAKE:append:ccmp25 = " ${@oe.utils.conditional('TRUSTFENCE_ENABLED', '1', 'CFG_REMOTEPROC_PUB_KEY_VERIFY=y', '', d)}"
|
||||
EXTRA_OEMAKE:append:ccmp25 = " ${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1', 'CFG_REMOTEPROC_PUB_KEY_VERIFY=y', '', d)}"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ SRC_URI += " \
|
|||
"
|
||||
|
||||
SRC_URI:append:ccmp25 = " \
|
||||
${@oe.utils.conditional('TRUSTFENCE_ENABLED', '1' , 'file://0001-ARM-dts-ccmp25-add-signed-firmware-support-for-RPROC.patch', '', d)} \
|
||||
${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'file://0001-ARM-dts-ccmp25-add-signed-firmware-support-for-RPROC.patch', '', d)} \
|
||||
"
|
||||
|
||||
install_helper_files() {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,48 @@
|
|||
From: Isaac Hermida <isaac.hermida@digi.com>
|
||||
Date: Fri, 21 Nov 2025 10:12:53 +0100
|
||||
Subject: [PATCH] CC95: early prototypes: enable wireless interfaces
|
||||
|
||||
As the HWID is not completed yet, is needed to fill that info manually.
|
||||
This is just temporal for the initial prototypes.
|
||||
Additionally, in U-Boot, is needed to set the overlays as:
|
||||
setenv overlays ccimx9_wifi.dtbo,ccimx9_bt.dtbo
|
||||
|
||||
Signed-off-by: Isaac Hermida <isaac.hermida@digi.com>
|
||||
---
|
||||
arch/arm64/boot/dts/digi/ccimx9_bt.dtso | 1 +
|
||||
arch/arm64/boot/dts/digi/ccimx9_wifi.dtso | 3 +++
|
||||
2 files changed, 4 insertions(+)
|
||||
|
||||
diff --git a/arch/arm64/boot/dts/digi/ccimx9_bt.dtso b/arch/arm64/boot/dts/digi/ccimx9_bt.dtso
|
||||
index 6b4ca6229706..e073fe328dea 100644
|
||||
--- a/arch/arm64/boot/dts/digi/ccimx9_bt.dtso
|
||||
+++ b/arch/arm64/boot/dts/digi/ccimx9_bt.dtso
|
||||
@@ -23,6 +23,7 @@ __overlay__ {
|
||||
overlay-description = "SOM: Bluetooth";
|
||||
bluetooth {
|
||||
/* U-Boot will fill in the MAC address here */
|
||||
+ mac-address = [00 04 f3 ff ff fc];
|
||||
};
|
||||
};
|
||||
};
|
||||
diff --git a/arch/arm64/boot/dts/digi/ccimx9_wifi.dtso b/arch/arm64/boot/dts/digi/ccimx9_wifi.dtso
|
||||
index 7d73c4c7764d..80d766215ee0 100644
|
||||
--- a/arch/arm64/boot/dts/digi/ccimx9_wifi.dtso
|
||||
+++ b/arch/arm64/boot/dts/digi/ccimx9_wifi.dtso
|
||||
@@ -25,6 +25,7 @@ __overlay__ {
|
||||
overlay-description = "SOM: Wi-Fi";
|
||||
wireless {
|
||||
/* U-Boot will fill in the MAC address here */
|
||||
+ mac-address = [00 04 f3 ff ff fb];
|
||||
};
|
||||
};
|
||||
};
|
||||
@@ -42,6 +43,8 @@ __overlay__ {
|
||||
bus-width = <4>;
|
||||
non-removable;
|
||||
wakeup-source;
|
||||
+ // Workaround: limit max freq to 100MHz
|
||||
+ max-frequency = <100000000>;
|
||||
status = "okay";
|
||||
};
|
||||
};
|
||||
|
|
@ -23,7 +23,11 @@ SRC_URI:append = " \
|
|||
"
|
||||
|
||||
SRC_URI:append:ccmp25 = " \
|
||||
${@oe.utils.conditional('TRUSTFENCE_ENABLED', '1' , 'file://0001-ARM64-dts-ccmp25-add-signed-firmware-support-for-RPR.patch', '', d)} \
|
||||
${@oe.utils.conditional('TRUSTFENCE_COPRO_ENABLED', '1' , 'file://0001-ARM64-dts-ccmp25-add-signed-firmware-support-for-RPR.patch', '', d)} \
|
||||
"
|
||||
|
||||
SRC_URI:append:ccimx95 = " \
|
||||
file://0001-CC95-early-prototypes-enable-wireless-interfaces.patch \
|
||||
"
|
||||
|
||||
# Define RT config fragments per machine
|
||||
|
|
|
|||
|
|
@ -0,0 +1,76 @@
|
|||
###########################################################
|
||||
#
|
||||
# classes/ccss.bbclass - ConnectCore Security Services
|
||||
#
|
||||
# Generates an SBOM for the CCSS CVE analysis tool
|
||||
#
|
||||
# Copyright (C) 2025 Digi International
|
||||
#
|
||||
#
|
||||
# This source is released under the MIT License.
|
||||
#
|
||||
###########################################################
|
||||
|
||||
inherit vigiles
|
||||
|
||||
CCSS_API_VERSION = "0.1"
|
||||
CCSS_IMAGE_TYPE ?= "dev"
|
||||
CCSS_ENABLE ?= "1"
|
||||
|
||||
python do_ccss_generate_sbom() {
|
||||
import json
|
||||
import os
|
||||
import shutil
|
||||
import tempfile
|
||||
|
||||
# Temporary dir to store all files in the SBOM
|
||||
ccss_tmp_dir = tempfile.mkdtemp(dir=d.getVar('TOPDIR'))
|
||||
|
||||
try:
|
||||
manifest_file = os.path.join(d.getVar('VIGILES_DIR'), d.getVar('VIGILES_MANIFEST_NAME') + d.getVar('VIGILES_MANIFEST_SUFFIX'))
|
||||
ccss_kconfig = os.path.join(d.getVar('VIGILES_DIR'),'.'.join([_get_kernel_pf(d), 'config']))
|
||||
ccss_uconfig = os.path.join(d.getVar('VIGILES_DIR'),'.'.join([_get_uboot_pf(d), 'config']))
|
||||
|
||||
# Copy Vigiles manifest and kernel/uboot configs if they're available
|
||||
if os.path.exists(manifest_file):
|
||||
shutil.copy(manifest_file, os.path.join(ccss_tmp_dir, 'manifest.json'), follow_symlinks=True)
|
||||
if os.path.exists(ccss_kconfig):
|
||||
shutil.copy(ccss_kconfig, os.path.join(ccss_tmp_dir, 'kernel.config'), follow_symlinks=True)
|
||||
if os.path.exists(ccss_uconfig):
|
||||
shutil.copy(ccss_uconfig, os.path.join(ccss_tmp_dir, 'uboot.config'), follow_symlinks=True)
|
||||
|
||||
dict_out = dict(
|
||||
api_version = d.getVar('CCSS_API_VERSION'),
|
||||
date = d.getVar('DATETIME'),
|
||||
has_ccss_patches = bb.utils.contains('BBFILE_COLLECTIONS', 'digi-security', 'y', 'n', d),
|
||||
image_type = d.getVar('CCSS_IMAGE_TYPE'),
|
||||
som = d.getVar('DIGI_SOM'),
|
||||
yocto_codename = d.getVar('DISTRO_CODENAME')
|
||||
)
|
||||
|
||||
with open(os.path.join(ccss_tmp_dir, 'config.json'), 'w') as f_out:
|
||||
s = json.dumps(dict_out, indent=2, sort_keys=True)
|
||||
f_out.write(s)
|
||||
|
||||
# Create .zip file
|
||||
shutil.make_archive(os.path.join(d.getVar('TOPDIR'), 'CCSS_' + d.getVar('IMAGE_BASENAME') + '-' + d.getVar('DATETIME')), 'zip', ccss_tmp_dir)
|
||||
finally:
|
||||
# Remove temporary dir
|
||||
bb.utils.remove(ccss_tmp_dir, recurse=True)
|
||||
}
|
||||
|
||||
# Don't execute do_ccss_generate_sbom() unless explicitly enabled for a given
|
||||
# image
|
||||
python __anonymous() {
|
||||
if d.getVar('CCSS_ENABLE') != '1':
|
||||
d.setVarFlag('do_ccss_generate_sbom', 'noexec', '1')
|
||||
}
|
||||
|
||||
addtask do_ccss_generate_sbom after do_image before do_image_complete
|
||||
|
||||
# Since do_ccss_generate_sbom() uses the DATETIME variable to create the
|
||||
# metadata JSON, said variable will expand to different values when the
|
||||
# function is parsed in different stages of the build (first by the bitbake
|
||||
# cooker, and then by a worker). This causes metadata/hash mismatch errors due
|
||||
# to non-deterministic content, so exclude DATETIME from the hash calculation.
|
||||
do_ccss_generate_sbom[vardepsexclude]="DATETIME"
|
||||
|
|
@ -111,14 +111,15 @@ SWUPDATE_UBOOT_PREFIX_TFA ?= "tf-a"
|
|||
|
||||
SWUPDATE_UBOOT_EXT ?= ".${UBOOT_SUFFIX}"
|
||||
SWUPDATE_UBOOT_EXT_TFA ?= ".stm32"
|
||||
SWUPDATE_UBOOT_MEM_VARIANT ?= "-512MB"
|
||||
|
||||
SWUPDATE_UBOOT_NAME ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME:ccimx6sbc ?= "${SWUPDATE_UBOOT_PREFIX}-ccimx6qsbc${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME:ccmp1 ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}-nand${FIP_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME:ccmp25 ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}-optee-emmc${FIP_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME:ccmp1 ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}${SWUPDATE_UBOOT_MEM_VARIANT}-optee-nand${FIP_ENCRYPT_SUFFIX}${FIP_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME:ccmp25 ?= "${SWUPDATE_UBOOT_PREFIX}-${MACHINE}-optee-emmc${FIP_ENCRYPT_SUFFIX}${FIP_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT}"
|
||||
SWUPDATE_UBOOT_NAME_TFA ?= ""
|
||||
SWUPDATE_UBOOT_NAME_TFA:ccmp1 ?= "${SWUPDATE_UBOOT_PREFIX_TFA}-${MACHINE}-nand${SWUPDATE_UBOOT_EXT_TFA}${TFA_SIGN_SUFFIX}"
|
||||
SWUPDATE_UBOOT_NAME_TFA:ccmp25 ?= "${SWUPDATE_UBOOT_PREFIX_TFA}-${MACHINE}-optee-emmc${SWUPDATE_UBOOT_EXT_TFA}"
|
||||
SWUPDATE_UBOOT_NAME_TFA:ccmp1 ?= "${SWUPDATE_UBOOT_PREFIX_TFA}-${MACHINE}${SWUPDATE_UBOOT_MEM_VARIANT}-optee-nand${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT_TFA}"
|
||||
SWUPDATE_UBOOT_NAME_TFA:ccmp25 ?= "${SWUPDATE_UBOOT_PREFIX_TFA}-${MACHINE}-optee-emmc${TF_A_ENCRYPT_SUFFIX}${TF_A_SIGN_SUFFIX}${SWUPDATE_UBOOT_EXT_TFA}"
|
||||
|
||||
SWUPDATE_UBOOT_OFFSET ?= "${BOOTLOADER_SEEK_BOOTPART}"
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ TRUSTFENCE_ENCRYPT_ROOTFS:ccmp1 ?= "0"
|
|||
TRUSTFENCE_ENCRYPT_ROOTFS:ccmp2 ?= "0"
|
||||
TRUSTFENCE_FILE_BASED_ENCRYPT ?= "${TF_FILE_BASED_ENCRYPT}"
|
||||
|
||||
# Co-processor settings
|
||||
TRUSTFENCE_COPRO_ENABLED ?= "1"
|
||||
|
||||
# Read-only rootfs
|
||||
TRUSTFENCE_READ_ONLY_ROOTFS ?= "${@bb.utils.contains("IMAGE_FEATURES", "read-only-rootfs", "1", "0", d)}"
|
||||
|
||||
|
|
@ -288,7 +291,7 @@ python () {
|
|||
# Set the key password.
|
||||
d.setVar("SWUPDATE_PASSWORD_FILE", keys_path + "/keys/key_pass.txt")
|
||||
elif (d.getVar("DEY_SOC_VENDOR") == "STM"):
|
||||
d.setVar("SWUPDATE_PRIVATE_KEY_TEMPLATE", d.getVar("FIP_SIGN_KEY"))
|
||||
d.setVar("SWUPDATE_PRIVATE_KEY_TEMPLATE", d.getVar("SIGN_KEY"))
|
||||
# Set the key password.
|
||||
if (d.getVar("DIGI_SOM") == "ccmp15"):
|
||||
d.setVar("SWUPDATE_PASSWORD_FILE", keys_path + "/keys/key_pass.txt")
|
||||
|
|
|
|||
|
|
@ -33,7 +33,9 @@ power() {
|
|||
set_btaddr() {
|
||||
hciconfig ${HCI_IFACE} up
|
||||
sleep 0.2
|
||||
bt_addr=$(echo "$(fw_printenv -n btaddr)" | awk -F ":" '{ for(i=NF;i>=1;i--) printf "0x%s ", $i }')
|
||||
bt_addr=$(hexdump -v -e '1/1 "%02X "' /proc/device-tree/bluetooth/mac-address \
|
||||
| awk '{ for(i=NF; i>0; i--) printf "0x%s ", $i }' \
|
||||
| sed 's/ $//')
|
||||
hcitool -i ${HCI_IFACE} cmd 0x3f 0x0022 0xfe 0x06 ${bt_addr}
|
||||
hciconfig ${HCI_IFACE} down
|
||||
sleep 0.2
|
||||
|
|
|
|||
|
|
@ -43,7 +43,9 @@ bt_power() {
|
|||
set_btaddr() {
|
||||
hciconfig hci0 up
|
||||
sleep 0.2
|
||||
bt_addr=$(echo "$(fw_printenv -n btaddr)" | awk -F ":" '{ for(i=NF;i>=1;i--) printf "0x%s ", $i }')
|
||||
bt_addr=$(hexdump -v -e '1/1 "%02X "' /proc/device-tree/bluetooth/mac-address \
|
||||
| awk '{ for(i=NF; i>0; i--) printf "0x%s ", $i }' \
|
||||
| sed 's/ $//')
|
||||
hcitool -i hci0 cmd 0x3f 0x0001 ${bt_addr}
|
||||
hciconfig hci0 down
|
||||
sleep 0.2
|
||||
|
|
|
|||
|
|
@ -32,7 +32,9 @@ bt_power() {
|
|||
set_btaddr() {
|
||||
hciconfig hci0 up
|
||||
sleep 0.2
|
||||
bt_addr=$(echo "$(fw_printenv -n btaddr)" | awk -F ":" '{ for(i=NF;i>=1;i--) printf "0x%s ", $i }')
|
||||
bt_addr=$(hexdump -v -e '1/1 "%02X "' /proc/device-tree/bluetooth/mac-address \
|
||||
| awk '{ for(i=NF; i>0; i--) printf "0x%s ", $i }' \
|
||||
| sed 's/ $//')
|
||||
hcitool -i hci0 cmd 0x3f 0x0001 ${bt_addr}
|
||||
hciconfig hci0 down
|
||||
sleep 0.2
|
||||
|
|
|
|||
|
|
@ -87,6 +87,12 @@ do_install() {
|
|||
fi
|
||||
}
|
||||
|
||||
do_install:append:ccimx6ul() {
|
||||
if [ -z "${CCCS_CONF_PATH}" ]; then
|
||||
sed -i "/url = \"edp12.devicecloud.com\"/c\url = \"remotemanager.digi.com\"" ${D}${sysconfdir}/cccs.conf
|
||||
fi
|
||||
}
|
||||
|
||||
pkg_postinst_ontarget:${PN}-daemon() {
|
||||
# If dualboot is enabled, change the CCCSD download path and set on the fly to yes on the first boot
|
||||
if [ "$(fw_printenv -n dualboot 2>/dev/null)" = "yes" ]; then
|
||||
|
|
|
|||
|
|
@ -19,20 +19,20 @@ USER_BUTTON2 = 43840000.gpio,23
|
|||
|
||||
[I2C]
|
||||
|
||||
# I2C-3 on MikroBus connector.
|
||||
# I2C-3 on MikroBus connector J39.
|
||||
DEFAULT_I2C_BUS = 2
|
||||
|
||||
[SPI]
|
||||
|
||||
# LPSPI-8 on MikroBus connector J39.
|
||||
# LPSPI-8 on MikroBus connector J38.
|
||||
DEFAULT_SPI = 0,0
|
||||
|
||||
[PWM]
|
||||
|
||||
# PWM0 channel 1 - LVDS backlight.
|
||||
DEFAULT_PWM = 0,1
|
||||
# TPM3 channel 3 on MikroBus connector J39.1.
|
||||
DEFAULT_PWM = 0,3
|
||||
|
||||
[ADC]
|
||||
|
||||
# ADC channel 0 - Pin J48-1.
|
||||
# ADC channel 0 - Pin J44.3.
|
||||
DEFAULT_ADC = 0,0
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -25,6 +25,7 @@ UBOOT_BLOCK_REDUNDANT="mmcblk0boot1"
|
|||
UBOOT_MMC_DEV_MAIN="/dev/${UBOOT_BLOCK_MAIN}"
|
||||
UBOOT_MMC_DUMP="/tmp/u-boot-dump.hex"
|
||||
UBOOT_ENCRYPTED_DEK="/tmp/u-boot-encrypted-with-dek.imx"
|
||||
UBOOT_PARTNAME="U-Boot"
|
||||
|
||||
DEK_FILE="/tmp/dek.bin"
|
||||
DEK_KEY_SIZE="32"
|
||||
|
|
@ -241,42 +242,52 @@ write_artifact_emmc ()
|
|||
{
|
||||
local BLOCK_TO_WRITE="$1"
|
||||
local FILE_TO_WRITE="$2"
|
||||
local PARTNAME_TO_WRITE="$3"
|
||||
local FORCE_RO_PATH="/sys/block/${BLOCK_TO_WRITE}/force_ro"
|
||||
|
||||
# Enable write access in the partition.
|
||||
echo 0 > "/sys/block/${BLOCK_TO_WRITE}/force_ro"
|
||||
if [ -e "${FORCE_RO_PATH}" ]; then
|
||||
echo 0 > "${FORCE_RO_PATH}"
|
||||
fi
|
||||
|
||||
# Write the file into the eMMC.
|
||||
dd if="${FILE_TO_WRITE}" of="/dev/${BLOCK_TO_WRITE}" seek="${UBOOT_SEEK_KB}" bs=1K 2>/dev/null
|
||||
local rc=$?
|
||||
|
||||
# Disable write access in partition.
|
||||
echo 1 > "/sys/block/${BLOCK_TO_WRITE}/force_ro"
|
||||
if [ -e "${FORCE_RO_PATH}" ]; then
|
||||
echo 1 > "${FORCE_RO_PATH}"
|
||||
fi
|
||||
|
||||
# Check update operation result.
|
||||
if [ "${rc}" -ne 0 ]; then
|
||||
exit_error "## ERROR: failed to write file ${FILE_TO_WRITE} to /dev/${BLOCK_TO_WRITE}" "${rc}"
|
||||
fi
|
||||
echo "U-Boot successfully writen to /dev/${BLOCK_TO_WRITE}"
|
||||
echo "${PARTNAME_TO_WRITE} successfully writen to /dev/${BLOCK_TO_WRITE}"
|
||||
}
|
||||
|
||||
# If U-Boot is encrypted, the DEK key blob needs to be extracted from existing U-Boot
|
||||
# and appended to the new U-Boot before writing it.
|
||||
if [ "${UBOOT_ENC}" = "enc" ]; then
|
||||
# and appended to the new U-Boot before writing it for NXP platforms.
|
||||
if [ "${UBOOT_ENC}" = "enc" ] && [[ "${PLATFORM}" != ccmp2* ]]; then
|
||||
append_dek
|
||||
fi
|
||||
# Write TFA.
|
||||
if expr "${PLATFORM}" : "ccmp2.*" >/dev/null; then
|
||||
# Write TFA artifact into eMMC BOOT1 and BOOT2 partitions.
|
||||
write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_TFA_FILE}
|
||||
write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_TFA_FILE} "TF-A"
|
||||
if [ "${UBOOT_REDUNDANT}" = "redundant" ]; then
|
||||
write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_TFA_FILE}
|
||||
write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_TFA_FILE} "TF-A"
|
||||
fi
|
||||
# Redefine block devices to write FIP artifact into 'fip-a' and 'fip-b' partitions.
|
||||
UBOOT_BLOCK_MAIN="mmcblk0p3"
|
||||
UBOOT_BLOCK_REDUNDANT="mmcblk0p4"
|
||||
UBOOT_PARTNAME="FIP"
|
||||
fi
|
||||
# Write U-Boot
|
||||
write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_FILE}
|
||||
write_artifact_emmc ${UBOOT_BLOCK_MAIN} ${UBOOT_FILE} ${UBOOT_PARTNAME}
|
||||
# Check if redundant U-Boot update is requested.
|
||||
if [ "${UBOOT_REDUNDANT}" = "redundant" ]; then
|
||||
write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_FILE}
|
||||
write_artifact_emmc ${UBOOT_BLOCK_REDUNDANT} ${UBOOT_FILE} ${UBOOT_PARTNAME}
|
||||
fi
|
||||
# Clean intermediate artifacts.
|
||||
clean_artifacts
|
||||
|
|
|
|||
|
|
@ -16,8 +16,6 @@
|
|||
readonly DEMO_NAME="lvgl-demo"
|
||||
readonly DEMO_PATH="/usr/bin/${DEMO_NAME}"
|
||||
readonly DEMO_TITLE="LVGL Demo Application"
|
||||
readonly DEMO_DISPLAY="##LVGL_DEMO_DISPLAY##"
|
||||
readonly DEMO_ENV="##LVGL_DEMO_ENV##"
|
||||
readonly PID_FILE="/run/${DEMO_NAME}.pid"
|
||||
|
||||
log() {
|
||||
|
|
@ -54,21 +52,6 @@ check_is_running() {
|
|||
return 1
|
||||
}
|
||||
|
||||
wait_for_wayland() {
|
||||
local count=20
|
||||
local wayland_socket="/run/user/0/${DEMO_DISPLAY}"
|
||||
|
||||
while [ ! -S "${wayland_socket}" ]; do
|
||||
sleep 1
|
||||
count=$((count-1))
|
||||
if [ "${count}" = 0 ]; then
|
||||
return 1
|
||||
fi
|
||||
done
|
||||
sleep 1
|
||||
return 0
|
||||
}
|
||||
|
||||
stop() {
|
||||
check_is_running || return
|
||||
|
||||
|
|
@ -89,15 +72,11 @@ stop() {
|
|||
start() {
|
||||
check_is_running && { log warning "start: ${DEMO_NAME} ALREADY running"; exit 0; }
|
||||
|
||||
if [ -d "/usr/share/wayland" ]; then
|
||||
wait_for_wayland
|
||||
else
|
||||
# Disable the cursor when displaying at full screen on fbdev
|
||||
echo "0" > /sys/class/graphics/fbcon/cursor_blink
|
||||
fi
|
||||
# Disable the cursor when displaying at full screen on fbdev
|
||||
echo "0" > /sys/class/graphics/fbcon/cursor_blink
|
||||
|
||||
# Launch demo
|
||||
env ${DEMO_ENV} ${DEMO_PATH} >/dev/null 2>&1 &
|
||||
env ${DEMO_PATH} >/dev/null 2>&1 &
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo $! > ${PID_FILE}
|
||||
|
|
|
|||
|
|
@ -99,7 +99,4 @@ do_configure:append() {
|
|||
\
|
||||
-e "s|^([[:space:]]*#define LV_USE_LOTTIE[[:space:]]).*|\1${LVGL_CONFIG_USE_LOTTIE}|" \
|
||||
-i "${S}/lv_conf.h"
|
||||
sed -i -e 's,##LVGL_CONFIG_DRM_CARD##,${LVGL_CONFIG_DRM_CARD},g' \
|
||||
-i -e 's,##LVGL_CONFIG_FBDEV_DEVICE##,${LVGL_CONFIG_FBDEV_DEVICE},g' \
|
||||
-i ${WORKDIR}/lvgl-demo-init
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,9 +28,11 @@ SRCREV_FORMAT = "demo_lvgl"
|
|||
EXTRA_OEMAKE = "DESTDIR=${D}"
|
||||
|
||||
LVGL_CONFIG_DRM_CARD ?= "/dev/dri/card0"
|
||||
LVGL_CONFIG_FBDEV_DEVICE ?= "/dev/fb0"
|
||||
# Change DRM card used for i.MX8-based platforms
|
||||
LVGL_CONFIG_DRM_CARD:mx8-generic-bsp = "/dev/dri/card1"
|
||||
LVGL_CONFIG_FBDEV_DEVICE ?= "/dev/fb0"
|
||||
# Change framebuffer used for the ccimx6/ccimx6qp (HDMI display)
|
||||
LVGL_CONFIG_FBDEV_DEVICE:ccimx6 = "/dev/fb3"
|
||||
LVGL_CONFIG_LV_USE_LOG = "1"
|
||||
LVGL_CONFIG_LV_LOG_PRINTF = "1"
|
||||
LVGL_CONFIG_LV_MEM_SIZE = "(256 * 1024U)"
|
||||
|
|
@ -42,9 +44,6 @@ inherit cmake systemd update-rc.d
|
|||
|
||||
S = "${WORKDIR}/git"
|
||||
|
||||
LVGL_DEMO_ENV ?= "DISPLAY=:0.0 XDG_RUNTIME_DIR=/run/user/0 WAYLAND_DISPLAY=\$\{DEMO_DISPLAY\}"
|
||||
LVGL_DEMO_ENV:ccimx6ul ?= ""
|
||||
|
||||
do_configure:prepend() {
|
||||
if [ "${LVGL_CONFIG_USE_SDL}" -eq 1 ] ; then
|
||||
# Add libsdl build dependency, SDL2_image has no cmake file
|
||||
|
|
@ -66,9 +65,9 @@ do_install:append() {
|
|||
# Install wrapper bootscript to launch LVGL demo on boot
|
||||
install -d ${D}${sysconfdir}/init.d
|
||||
install -m 0755 ${WORKDIR}/lvgl-demo-init ${D}${sysconfdir}/lvgl-demo-init
|
||||
sed -i -e "s@##LVGL_DEMO_DISPLAY##@${WAYLAND_DISPLAY}@g" \
|
||||
-e "s@##LVGL_DEMO_ENV##@${LVGL_DEMO_ENV}@g" \
|
||||
"${D}${sysconfdir}/lvgl-demo-init"
|
||||
sed -i -e 's,##LVGL_CONFIG_DRM_CARD##,${LVGL_CONFIG_DRM_CARD},g' \
|
||||
-i -e 's,##LVGL_CONFIG_FBDEV_DEVICE##,${LVGL_CONFIG_FBDEV_DEVICE},g' \
|
||||
-i ${D}${sysconfdir}/lvgl-demo-init
|
||||
ln -sf ${sysconfdir}/lvgl-demo-init ${D}${sysconfdir}/init.d/lvgl-demo-init
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue