Integration of svd/cmsis tools

Change-Id: I260a209ae0e91e2299d65ab277c20d3a0de6d918
This commit is contained in:
Romuald JEANNE 2020-06-17 16:51:19 +02:00
parent b64f9ba0b5
commit 7f8392601a
9 changed files with 149726 additions and 13 deletions

View File

@ -214,6 +214,11 @@ ST_TOOLS_FOR_SDK_append = " \
nativesdk-wayland \
"
# For CMSIS-SVD file parser with GDB
ST_TOOLS_FOR_SDK_append = " \
nativesdk-svd-tools \
"
# Make sure to append mkimage to SDK for kernel uImage build
ST_DEPENDENCIES_BUILD_FOR_SDK = " \
${@bb.utils.contains('KERNEL_IMAGETYPE', 'uImage', 'nativesdk-u-boot-mkimage', '', d)} \

View File

@ -0,0 +1,205 @@
SUMMARY = "CMSIS SVD data files and parser"
LICENSE = " Apache-2.0 & svd-Atmel & svd-Freescale & svd-Fujitsu & svd-STMicro "
LIC_FILES_CHKSUM = "\
file://LICENSE-APACHE;md5=fa818a259cbed7ce8bc2a22d35a464fc \
file://data/STMicro/License.html;md5=9a2821012ac32bea060eccbc76512bdb \
file://data/Freescale/Freescale%20CMSIS-SVD%20License%20Agreement.pdf;md5=33928757d8c2861dc9256ce344d11db3 \
file://data/Fujitsu/License.html;md5=e630487a365e7e0c5e03afcc644ce0ad \
file://data/Atmel/License.html;md5=466a7215aa18f98886ba2c15dba6b35a \
"
NO_GENERIC_LICENSE[svd-Atmel] = "data/Atmel/License.html"
NO_GENERIC_LICENSE[svd-Freescale] = "data/Freescale/Freescale CMSIS-SVD License Agreement.pdf"
NO_GENERIC_LICENSE[svd-Fujitsu] = "data/Fujitsu/License.html"
NO_GENERIC_LICENSE[svd-STMicro] = "data/STMicro/License.html"
inherit pkgconfig autotools-brokensep gettext
SRC_URI = "git://github.com/posborne/cmsis-svd.git;protocol=https"
SRCREV = "2ab163c2aea83eb9b39c163856450089255ce4f2"
PV = "0.4+git${SRCPV}"
S = "${WORKDIR}/git"
BBCLASSEXTEND += "native nativesdk"
PACKAGES += "\
${PN}-parser \
\
${PN}-apache-license \
\
${@bb.utils.contains('CMSIS_SVD_DATA', 'Atmel', '${PN}-data-atmel ${PN}-atmel-license', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Freescale', '${PN}-data-freescale ${PN}-freescale-license', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Fujitsu', '${PN}-data-fujitsu ${PN}-fujitsu-license', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Holtek', '${PN}-data-holtek', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Nordic', '${PN}-data-nordic', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Nuvoton', '${PN}-data-nuvoton', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'NXP', '${PN}-data-nxp', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'SiliconLabs', '${PN}-data-siliconlabs', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Spansion', '${PN}-data-spansion', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'STMicro', '${PN}-data-stmicro ${PN}-stmicro-license', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'TexasInstruments', '${PN}-data-texasinstruments', '', d)} \
${@bb.utils.contains('CMSIS_SVD_DATA', 'Toshiba', '${PN}-data-toshiba', '', d)} \
"
CMSIS_SVD_DATA ?= "\
STMicro \
"
# Empty cmsis-svd packages to use it as a meta package for dependencies install
FILES_${PN}_class-target = ""
do_configure[noexec] = "1"
do_compile[noexec] = "1"
INSTALL_PATH = "${datadir}/cmsis-svd/cmsis_svd"
do_install () {
install -d ${D}${INSTALL_PATH}
install -m 0644 ${S}/LICENSE-APACHE ${D}${INSTALL_PATH}
install -m 0755 ${S}/python/cmsis_svd/*.py ${D}${INSTALL_PATH}
install -d ${D}${INSTALL_PATH}/examples
cp -R ${S}/python/cmsis_svd/examples/* ${D}${INSTALL_PATH}/examples
install -d ${D}${INSTALL_PATH}/tests
cp -R ${S}/python/cmsis_svd/tests/* ${D}${INSTALL_PATH}/tests
install -d ${D}${INSTALL_PATH}/data
# Filter requested data files
for data_path in ${CMSIS_SVD_DATA}
do
if [ -d "${S}/data/${data_path}" ]; then
cp -R ${S}/data/${data_path} ${D}${INSTALL_PATH}/data
else
bbwarn "Can not find ${data_path} in ${S}/data"
fi
done
# Remove unexpected 'Contents.txt' files
find ${D}${INSTALL_PATH}/data -type f -name Contents.txt -exec rm -f {} \;
}
# For parser and ARM_SAMPLE svd file example
LICENSE_${PN}-parser = "Apache-2.0"
LICENSE_${PN}-apache-license = "Apache-2.0"
FILES_${PN}-apache-license = "${INSTALL_PATH}/LICENSE-APACHE"
FILES_${PN}-parser = "${INSTALL_PATH}/*.py ${INSTALL_PATH}/examples ${INSTALL_PATH}/tests ${INSTALL_PATH}/data/ARM_SAMPLE/*.svd"
RDEPENDS_${PN}-parser += "${PN}-apache-license"
# For python dependencies
RDEPENDS_${PN}-parser += "python3-json"
RDEPENDS_${PN}-parser += "python3-setuptools"
RDEPENDS_${PN}-parser += "python3-six"
RDEPENDS_${PN}-parser += "python3-xml"
# For Atmel
LICENSE_${PN}-data-atmel = "svd-Atmel"
LICENSE_${PN}-atmel-license = "svd-Atmel"
FILES_${PN}-atmel-license = "${INSTALL_PATH}/data/Atmel/License.html"
FILES_${PN}-data-atmel = "${INSTALL_PATH}/data/Atmel/*.svd"
RDEPENDS_${PN}-data-atmel += "${PN}-atmel-license"
# For Freescale
LICENSE_${PN}-data-freescale = "svd-Freescale"
LICENSE_${PN}-freescale-license = "svd-Freescale"
FILES_${PN}-freescale-license = "${INSTALL_PATH}/data/Freescale/Freescale*CMSIS-SVD*License*Agreement.pdf"
FILES_${PN}-data-freescale = "${INSTALL_PATH}/data/Freescale/*.svd"
RDEPENDS_${PN}-data-freescale += "${PN}-freescale-license"
# For Fujitsu
LICENSE_${PN}-data-fujitsu = "svd-Fujitsu"
LICENSE_${PN}-fujitsu-license = "svd-Fujitsu"
FILES_${PN}-fujitsu-license = "${INSTALL_PATH}/data/Fujitsu/License.html"
FILES_${PN}-data-fujitsu = "${INSTALL_PATH}/data/Fujitsu/*.svd"
RDEPENDS_${PN}-data-fujitsu += "${PN}-fujitsu-license"
# For Holtek
LICENSE_${PN}-data-holtek = "Apache-2.0"
FILES_${PN}-data-holtek = "${INSTALL_PATH}/data/Holtek/*.svd"
RDEPENDS_${PN}-data-holtek += "${PN}-apache-license"
# For Nordic
LICENSE_${PN}-data-nordic = "Apache-2.0"
FILES_${PN}-data-nordic = "${INSTALL_PATH}/data/Nordic/*.svd"
RDEPENDS_${PN}-data-nordic += "${PN}-apache-license"
# For Nuvoton
LICENSE_${PN}-data-nuvoton = "Apache-2.0"
FILES_${PN}-data-nuvoton = "${INSTALL_PATH}/data/Nuvoton/*.svd"
RDEPENDS_${PN}-data-nuvoton += "${PN}-apache-license"
# For NXP
LICENSE_${PN}-data-nxp = "Apache-2.0"
FILES_${PN}-data-nxp = "${INSTALL_PATH}/data/NXP/*.svd"
RDEPENDS_${PN}-data-nxp += "${PN}-apache-license"
# For SiliconLabs
LICENSE_${PN}-data-siliconlabs = "Apache-2.0"
FILES_${PN}-data-siliconlabs = "${INSTALL_PATH}/data/SiliconLabs/*.svd"
RDEPENDS_${PN}-data-siliconlabs += "${PN}-apache-license"
# For Spansion
LICENSE_${PN}-data-spansion = "Apache-2.0"
FILES_${PN}-data-spansion = "${INSTALL_PATH}/data/Spansion/*.svd"
RDEPENDS_${PN}-data-spansion += "${PN}-apache-license"
# For STMicro
LICENSE_${PN}-data-stmicro = "svd-STMicro"
LICENSE_${PN}-stmicro-license = "svd-STMicro"
FILES_${PN}-stmicro-license = "${INSTALL_PATH}/data/STMicro/License.html"
FILES_${PN}-data-stmicro = "${INSTALL_PATH}/data/STMicro/*.svd"
RDEPENDS_${PN}-data-stmicro += "${PN}-stmicro-license"
# For TexasInstruments
LICENSE_${PN}-data-texasinstruments = "Apache-2.0"
FILES_${PN}-data-texasinstruments = "${INSTALL_PATH}/data/TexasInstruments/*.svd"
RDEPENDS_${PN}-data-texasinstruments += "${PN}-apache-license"
# For Toshiba
LICENSE_${PN}-data-toshiba = "Apache-2.0"
FILES_${PN}-data-toshiba = "${INSTALL_PATH}/data/Toshiba/*.svd"
RDEPENDS_${PN}-data-toshiba += "${PN}-apache-license"
# Make cmsis-svd package depend on all of the split-out packages
python populate_packages_prepend () {
firmware_pkgs = oe.utils.packages_filter_out_system(d)
d.appendVar('RDEPENDS_cmsis-svd', ' ' + ' '.join(firmware_pkgs))
d.appendVar('RRECOMMENDS_cmsis-svd_append_class-nativesdk', ' ' + ' '.join(firmware_pkgs))
}
# Make sure also to add python dependencies
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-python3-json "
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-python3-setuptools "
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-python3-six "
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-python3-xml "
# Make sure to create the cmsis-svd package
ALLOW_EMPTY_${PN} = "1"

View File

@ -0,0 +1,4 @@
# Add stm32mp1 support
SRC_URI_append_stm32mpcommon = " file://0001-data-STMicro-add-support-of-stm32mp15xxx.patch"
# Add the same for nativesdk
SRC_URI_append_class-nativesdk = " file://0001-data-STMicro-add-support-of-stm32mp15xxx.patch"

View File

@ -1,12 +0,0 @@
SUMMARY = "Python 2 and 3 compatibility library"
HOMEPAGE = "https://pypi.org/project/terminaltables/"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
SRC_URI[md5sum] = "863797674d8f75d22e16e6c1fdcbeb41"
SRC_URI[sha256sum] = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81"
inherit pypi
BBCLASSEXTEND += "native nativesdk"

View File

@ -1,2 +1,15 @@
SUMMARY = "Python3 compatibility library"
HOMEPAGE = "https://pypi.org/project/terminaltables/"
SECTION = "devel/python"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=8227180126797a0148f94f483f3e1489"
SRC_URI[md5sum] = "863797674d8f75d22e16e6c1fdcbeb41"
SRC_URI[sha256sum] = "f3eb0eb92e3833972ac36796293ca0906e998dc3be91fbe1f8615b331b853b81"
inherit pypi
BBCLASSEXTEND += "native nativesdk"
inherit setuptools3
require python-terminaltables.inc

View File

@ -0,0 +1,23 @@
From 1e8a2ee2730867c509209f6f8e3cd356c9729d4e Mon Sep 17 00:00:00 2001
From: Jean-Philippe ROMAIN <jean-philippe.romain@st.com>
Date: Mon, 28 Oct 2019 15:55:53 +0100
Subject: [PATCH 1/2] SDK: Add relative path for cmsis-svd
diff --git a/gdb-svd.py b/gdb-svd.py
index 0586755..9df9ac8 100644
--- a/gdb-svd.py
+++ b/gdb-svd.py
@@ -17,6 +17,9 @@
# You should have received a copy of the GNU General Public License
# along with svd-tools. If not, see <https://www.gnu.org/licenses/>.
+import os
+sys.path.insert(0, os.path.dirname(__file__) + "/../cmsis-svd")
+
import gdb
from terminaltables import AsciiTable
from cmsis_svd.parser import SVDParser
--
2.7.4

View File

@ -0,0 +1,33 @@
SUMMARY = "Python script for using CMSIS SVD parser with GDB"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://LICENSE;md5=b234ee4d69f5fce4486a80fdaf4a4263"
inherit pkgconfig autotools-brokensep gettext
SRC_URI = "git://github.com/1udo6arre/svd-tools.git;protocol=https"
SRCREV = "5b7b813481877a3b6fb8f96b4f0d413b47fb987a"
S = "${WORKDIR}/git"
BBCLASSEXTEND = "native nativesdk"
RDEPENDS_${PN} += "cmsis-svd"
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-cmsis-svd "
# For python dependencies
RDEPENDS_${PN} += "python3-terminaltables"
RRECOMMENDS_${PN}_append_class-nativesdk = " nativesdk-python3-terminaltables "
do_configure[noexec] = "1"
do_compile[noexec] = "1"
INSTALL_PATH= "${datadir}/svd-tools"
do_install () {
install -d ${D}${INSTALL_PATH}
install -m 0644 ${S}/LICENSE ${D}${INSTALL_PATH}
install -m 0755 ${S}/gdb-svd.py ${D}${INSTALL_PATH}
}
FILES_${PN} = "${INSTALL_PATH}/*"

View File

@ -0,0 +1,3 @@
SRC_URI_append_stm32mpcommon = " file://0001-SDK-Add-relative-path-for-cmsis-svd.patch"
# Add the same for nativesdk
SRC_URI_append_class-nativesdk = " file://0001-SDK-Add-relative-path-for-cmsis-svd.patch"