summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Verbruggen <erik@verbruggen.consulting>2021-05-10 11:35:46 +0200
committerErik Verbruggen <erik.verbruggen@me.com>2021-06-04 13:02:49 +0000
commitb7218a34dda3ee29064b591d3cc2d29b3dbc1907 (patch)
treed25dde241485103d499f285cba9c28bfa749b33b
parent27a8cb376ea2e54f807567285455714cad5891f5 (diff)
downloadqt-creator-b7218a34dda3ee29064b591d3cc2d29b3dbc1907.tar.gz
Add support for the Cypress traveo II kit
Fixes: UL-4242 Change-Id: I0b492a3edd6a1dce9d214e6490e174050c3fdb30 Reviewed-by: <christiaan.janssen@qt.io> Reviewed-by: Alessandro Portale <alessandro.portale@qt.io> (cherry picked from commit d98feae8f6fb2f019571f678e8cd55d8a7b5af6d)
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.cpp13
-rw-r--r--src/plugins/mcusupport/mcusupportoptions.h1
-rw-r--r--src/plugins/mcusupport/mcusupportsdk.cpp53
3 files changed, 62 insertions, 5 deletions
diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp
index 56bcf57165..5f9c512bb2 100644
--- a/src/plugins/mcusupport/mcusupportoptions.cpp
+++ b/src/plugins/mcusupport/mcusupportoptions.cpp
@@ -412,11 +412,14 @@ ToolChain *McuToolChainPackage::toolChain(Id language) const
QString McuToolChainPackage::toolChainName() const
{
- return QLatin1String(m_type == TypeArmGcc
- ? "armgcc" : m_type == McuToolChainPackage::TypeIAR
- ? "iar" : m_type == McuToolChainPackage::TypeKEIL
- ? "keil" : m_type == McuToolChainPackage::TypeGHS
- ? "ghs" : "unsupported");
+ switch (m_type) {
+ case TypeArmGcc: return QLatin1String("armgcc");
+ case TypeIAR: return QLatin1String("iar");
+ case TypeKEIL: return QLatin1String("keil");
+ case TypeGHS: return QLatin1String("ghs");
+ case TypeGHSArm: return QLatin1String("ghs-arm");
+ default: return QLatin1String("unsupported");
+ }
}
QString McuToolChainPackage::cmakeToolChainFileName() const
diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h
index 57772bafb2..515d22945d 100644
--- a/src/plugins/mcusupport/mcusupportoptions.h
+++ b/src/plugins/mcusupport/mcusupportoptions.h
@@ -126,6 +126,7 @@ public:
TypeGHS,
TypeMSVC,
TypeGCC,
+ TypeGHSArm,
TypeUnsupported
};
diff --git a/src/plugins/mcusupport/mcusupportsdk.cpp b/src/plugins/mcusupport/mcusupportsdk.cpp
index e5bb7f911b..635f5903f8 100644
--- a/src/plugins/mcusupport/mcusupportsdk.cpp
+++ b/src/plugins/mcusupport/mcusupportsdk.cpp
@@ -134,6 +134,23 @@ static McuToolChainPackage *createGhsToolchainPackage()
return result;
}
+static McuToolChainPackage *createGhsArmToolchainPackage()
+{
+ const char envVar[] = "GHS_ARM_COMPILER_DIR";
+
+ const QString defaultPath =
+ qEnvironmentVariableIsSet(envVar) ? qEnvironmentVariable(envVar) : QDir::homePath();
+
+ auto result = new McuToolChainPackage(
+ "Green Hills Compiler for ARM",
+ defaultPath,
+ Utils::HostOsInfo::withExecutableSuffix("cxarm"),
+ "GHSArmToolchain",
+ McuToolChainPackage::TypeGHSArm);
+ result->setEnvironmentVariableName(envVar);
+ return result;
+}
+
static McuToolChainPackage *createIarToolChainPackage()
{
const char envVar[] = "IAR_ARM_COMPILER_DIR";
@@ -248,6 +265,35 @@ static McuPackage *createMcuXpressoIdePackage()
return result;
}
+static McuPackage *createCypressProgrammerPackage()
+{
+ const char envVar[] = "CYPRESS_AUTO_FLASH_UTILITY_DIR";
+
+ QString defaultPath;
+ if (qEnvironmentVariableIsSet(envVar)) {
+ defaultPath = qEnvironmentVariable(envVar);
+ } else if (Utils::HostOsInfo::isWindowsHost()) {
+ auto candidate = findInProgramFiles(QLatin1String("/Cypress/Cypress Auto Flash Utility 1.0/"));
+ if (QFileInfo::exists(candidate)) {
+ defaultPath = candidate;
+ }
+ } else {
+ defaultPath = QLatin1String("/usr");
+ }
+
+ if (defaultPath.isEmpty()) {
+ defaultPath = QDir::homePath();
+ }
+
+ auto result = new McuPackage(
+ "Cypress Auto Flash Utility",
+ defaultPath,
+ Utils::HostOsInfo::withExecutableSuffix("/bin/openocd"),
+ "CypressAutoFlashUtil");
+ result->setEnvironmentVariableName(envVar);
+ return result;
+}
+
struct McuTargetDescription
{
enum class TargetType {
@@ -269,6 +315,9 @@ struct McuTargetDescription
TargetType type;
};
+/// Create the McuPackage by checking the "boardSdk" property in the JSON file for the board.
+/// The name of the environment variable pointing to the the SDK for the board will be defined in the "envVar" property
+/// inside the "boardSdk".
static McuPackage *createBoardSdkPackage(const McuTargetDescription& desc)
{
const auto generateSdkName = [](const QString& envVar) {
@@ -495,11 +544,15 @@ static QVector<McuTarget *> targetsFromDescriptions(const QList<McuTargetDescrip
{{"iar"}, createIarToolChainPackage()},
{{"msvc"}, createMsvcToolChainPackage()},
{{"gcc"}, createGccToolChainPackage()},
+ {{"arm-greenhills"}, createGhsArmToolchainPackage()},
};
+ // Note: the vendor name (the key of the hash) is case-sensitive. It has to match the "platformVendor" key in the
+ // json file.
const QHash<QString, McuPackage *> vendorPkgs = {
{{"ST"}, createStm32CubeProgrammerPackage()},
{{"NXP"}, createMcuXpressoIdePackage()},
+ {{"CYPRESS"}, createCypressProgrammerPackage()},
};
McuTargetFactory targetFactory(tcPkgs, vendorPkgs);