diff options
author | Erik Verbruggen <erik@verbruggen.consulting> | 2021-05-10 11:35:46 +0200 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@me.com> | 2021-06-04 13:02:49 +0000 |
commit | b7218a34dda3ee29064b591d3cc2d29b3dbc1907 (patch) | |
tree | d25dde241485103d499f285cba9c28bfa749b33b | |
parent | 27a8cb376ea2e54f807567285455714cad5891f5 (diff) | |
download | qt-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.cpp | 13 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportoptions.h | 1 | ||||
-rw-r--r-- | src/plugins/mcusupport/mcusupportsdk.cpp | 53 |
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); |