ZHCADP2 January 2024 AM3351 , AM3352 , AM3354 , AM3356 , AM3357 , AM3358 , AM3358-EP , AM3359 , AM4372 , AM4376 , AM4377 , AM4378 , AM4379 , AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM625SIP , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62P , AM62P-Q1
我们的演示使用了 SK-AM62B,有关该器件的更多信息,请参阅以下链接:/tool/cn/SK-AM62B。关于软件,可以按照以下步骤使用 Yocto 编译演示:
SUMMARY = "Matter IoT connectivity on TI boards"
DESCRIPTION = "This recipe primes the matter environment"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
BRANCH = "master"
SRC_URI = "gitsm://github.com/project-chip/connectedhomeip.git;protocol=https;branch=${BRANCH};lfs=1"
SRCREV = "a98bc64856aa161197e7dc7c1ffbdcc43323eda3"
do_matter_bootstrap[network] = "1"
do_compile[network] = "1"
TARGET_CC_ARCH += "${LDFLAGS}"
DEPENDS += " glib-2.0 gn-native ninja-native avahi dbus-glib-native pkgconfig-native python3-native boost zap-native openssl-native ca-certificates-native clang-native"
RDEPENDS_${PN} += " libavahi-client openssl "
FILES:${PN} += "usr/share"
INSANE_SKIP:${PN} += "dev-so debug-deps strip"
PACKAGECONFIG ?= ""
PACKAGECONFIG[debug] = "is_debug=true,is_debug=false"
GN_TARGET_ARCH_NAME:aarch64 = "arm64"
GN_TARGET_ARCH_NAME:arm = "arm"
GN_TARGET_ARCH_NAME:x86 = "x86"
GN_TARGET_ARCH_NAME:x86-64 = "x64"
def gn_target_arch_name(d):
"""Returns a GN architecture name corresponding to the target machine's
architecture."""
name = d.getVar("GN_TARGET_ARCH_NAME")
if name is None:
bb.fatal('Unsupported target architecture. A valid override for the '
'GN_TARGET_ARCH_NAME variable could not be found.')
return name
# this variable must use spaces and double quotes for parameter strings because
# *gn* is evil
GN_ARGS = " \
${PACKAGECONFIG_CONFARGS} \
target_cpu="${@gn_target_arch_name(d)}" \
target_arch="${TUNE_FEATURES}" \
target_os="linux" \
treat_warnings_as_errors=false \
enable_rtti=true \
enable_exceptions=true \
"
# Make sure pkg-config, when used with the host's toolchain to build the
# binaries we need to run on the host, uses the right pkg-config to avoid
# passing include directories belonging to the target.
GN_ARGS += 'host_pkg_config="pkg-config-native"'
S = "${WORKDIR}/git"
common_configure() {
# this block must use spaces and double quotes for strings because *gn* is
# evil
PKG_CONFIG_SYSROOT_DIR=${PKG_CONFIG_SYSROOT_DIR} \
PKG_CONFIG_LIBDIR=${PKG_CONFIG_PATH} \
gn gen out/ --args='
${GN_ARGS}
import("//build_overrides/build.gni")
target_cflags=[
"-DCHIP_DEVICE_CONFIG_WIFI_STATION_IF_NAME=\"wlan0\"",
"-DCHIP_DEVICE_CONFIG_LINUX_DHCPC_CMD=\"udhcpc -b -i %s \"",
]
custom_toolchain="${build_root}/toolchain/custom"
target_cc="${CC}"
target_cxx="${CXX}"
target_ar="${AR}"
'
}
export https_proxy
export http_proxy
export ftp_proxy
export no_proxy
do_matter_bootstrap() {
. ${S}/scripts/bootstrap.sh
}
do_configure() {
. scripts/activate.sh
pip install click
cd ${S}/examples/chip-tool
common_configure
cd ${S}/examples/lock-app/linux
common_configure
cd ${S}/examples/thermostat/linux
common_configure
cd ${S}/examples/lighting-app/linux
common_configure
}
do_compile() {
. scripts/activate.sh
cd ${S}/examples/chip-tool
ninja -C out/
cd ${S}/examples/lock-app/linux
ninja -C out/
cd ${S}/examples/thermostat/linux
ninja -C out/
cd ${S}/examples/lighting-app/linux
ninja -C out/
}
do_install() {
install -d -m 755 ${D}${bindir}
# Install chip-tool
install ${S}/examples/chip-tool/out/chip-tool ${D}${bindir}
# lock-app
install ${S}/examples/lock-app/linux/out/chip-lock-app ${D}${bindir}
install ${S}/examples/thermostat/linux/out/thermostat-app ${D}${bindir}
install ${S}/examples/lighting-app/linux/out/chip-lighting-app ${D}${bindir}
}
addtask matter_bootstrap after do_unpack before do_configure
INSANE_SKIP_${PN} = "ldflags"
PN = "zap-native"
SUMMARY = "ZAP prebuilt tools"
DESCRIPTION = "ZAP prebuilt binaries"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Apache-2.0;md5=89aea4e17d99a7cacdbeed46a0096b10"
PACKAGES = "${PN}"
PV = "v2023.08.04-nightly"
SRC_URI = "https://github.com/project-chip/zap/releases/download/${PV}/zap-linux-x64.zip;unpack=yes"
SRC_URI[sha256sum] = "b254a0c066ef6b1fe7c2bdd1ab5b137ca80413f0952dfe6e64f4b0fdc4479b55"
S = "${WORKDIR}"
#INSANE_SKIP:${PN} = " already-stripped arch file-rdeps "
BBCLASSEXTEND = "native"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_SYSROOT_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_FILE_RDEPS = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT_CHECK = "1"
INHIBIT_PACKAGE_DEPMODE_CHECK = "1"
INHIBIT_PACKAGE_RELOCATE = "1"
INHIBIT_PACKAGE_UNPACK = "1"
INSANE_SKIP:${PN} += "dev-so"
inherit native
do_install() {
install -d -m 0755 ${D}${bindir}/
cp -ar zap* ${D}${bindir}/
# This is a workaround to bypass the issue that zap-cli modified by build system
chmod 444 ${D}${bindir}/zap-cli
}
do_package_qa[noexec] = "1"
EXCLUDE_FROM_SHLIBS = "1"
# This is a workaround to bypass the issue that zap-cli modified by build system
do_deploy() {
chmod 755 ${D}${bindir}/zap-cli
}
do_populate_sdk:append() {
chmod 755 ${D}${bindir}/zap-cli
}
addtask deploy after do_install do_populate_sysroot
addtask deploy before do_cleansstate
addtask deploy before do_clean
diff --git a/lib/bb/fetch2/gitsm.py b/lib/bb/fetch2/gitsm.py
index c5f7c03c..ee852224 100644
--- a/lib/bb/fetch2/gitsm.py
+++ b/lib/bb/fetch2/gitsm.py
@@ -122,6 +122,7 @@ class GitSM(Git):
url += ';protocol=%s' % proto
url += ";name=%s" % module
url += ";subpath=%s" % module
+ url += ";lfs=1"
ld = d.createCopy()
# Not necessary to set SRC_URI, since we're passing the URI to
@@ -238,7 +239,7 @@ class GitSM(Git):
# All submodules should already be downloaded and configured in the tree. This simply sets
# up the configuration and checks out the files. The main project config should remain
# unmodified, and no download from the internet should occur.
- runfetchcmd("%s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
+ runfetchcmd("GIT_LFS_SKIP_SMUDGE=1 %s submodule update --recursive --no-fetch" % (ud.basecmd), d, quiet=True, workdir=ud.destdir)
def implicit_urldata(self, ud, d):
import shutil, subprocess, tempfile
生成 wic 映像后,请参阅以下使用 SD 卡启动 EVM 的说明:https://dev.ti.com/tirex/content/tirex-product-tree/am62x-devtools/docs/am62x_skevm_quick_start_guide.html