Device: RAD-Gigastar 1 & 2: Add SFP flashing to bootloader pipelines
parent
9c4323987f
commit
79ff19015a
|
|
@ -103,7 +103,7 @@ void init_chipid(pybind11::module_& m) {
|
||||||
.value("neoOBD2Dev_MCHIP", ChipID::neoOBD2Dev_MCHIP)
|
.value("neoOBD2Dev_MCHIP", ChipID::neoOBD2Dev_MCHIP)
|
||||||
.value("neoOBD2Dev_SCHIP", ChipID::neoOBD2Dev_SCHIP)
|
.value("neoOBD2Dev_SCHIP", ChipID::neoOBD2Dev_SCHIP)
|
||||||
.value("neoOBD2SIMDoIP_MCHIP", ChipID::neoOBD2SIMDoIP_MCHIP)
|
.value("neoOBD2SIMDoIP_MCHIP", ChipID::neoOBD2SIMDoIP_MCHIP)
|
||||||
.value("SFPModule_MCHIP", ChipID::SFPModule_MCHIP)
|
.value("SFPModule_88q2112_MCHIP", ChipID::SFPModule_88q2112_MCHIP)
|
||||||
.value("RADEpsilonT_MCHIP", ChipID::RADEpsilonT_MCHIP)
|
.value("RADEpsilonT_MCHIP", ChipID::RADEpsilonT_MCHIP)
|
||||||
.value("RADEpsilonExpress_MCHIP", ChipID::RADEpsilonExpress_MCHIP)
|
.value("RADEpsilonExpress_MCHIP", ChipID::RADEpsilonExpress_MCHIP)
|
||||||
.value("RADProxima_MCHIP", ChipID::RADProxima_MCHIP)
|
.value("RADProxima_MCHIP", ChipID::RADProxima_MCHIP)
|
||||||
|
|
@ -126,10 +126,14 @@ void init_chipid(pybind11::module_& m) {
|
||||||
.value("RADGigastar_FFG_ZYNQ", ChipID::RADGigastar_FFG_ZYNQ)
|
.value("RADGigastar_FFG_ZYNQ", ChipID::RADGigastar_FFG_ZYNQ)
|
||||||
.value("VEM_02_FR_FCHIP", ChipID::VEM_02_FR_FCHIP)
|
.value("VEM_02_FR_FCHIP", ChipID::VEM_02_FR_FCHIP)
|
||||||
.value("Connect_ZCHIP", ChipID::Connect_ZCHIP)
|
.value("Connect_ZCHIP", ChipID::Connect_ZCHIP)
|
||||||
|
.value("SFPModule_88q2221_MCHIP", ChipID::SFPModule_88q2221_MCHIP)
|
||||||
.value("RADGALAXY2_SYSMON_CHIP", ChipID::RADGALAXY2_SYSMON_CHIP)
|
.value("RADGALAXY2_SYSMON_CHIP", ChipID::RADGALAXY2_SYSMON_CHIP)
|
||||||
|
.value("SFPModule_88q3244_MCHIP", ChipID::SFPModule_88q3244_MCHIP)
|
||||||
.value("RADCOMET3_ZCHIP", ChipID::RADCOMET3_ZCHIP)
|
.value("RADCOMET3_ZCHIP", ChipID::RADCOMET3_ZCHIP)
|
||||||
.value("Connect_LINUX", ChipID::Connect_LINUX)
|
.value("Connect_LINUX", ChipID::Connect_LINUX)
|
||||||
|
.value("SFPModule_lan8670_MCHIP", ChipID::SFPModule_lan8670_MCHIP)
|
||||||
.value("RADGigastar2_ZYNQ", ChipID::RADGigastar2_ZYNQ)
|
.value("RADGigastar2_ZYNQ", ChipID::RADGigastar2_ZYNQ)
|
||||||
|
.value("SFPModule_ent11100_MCHIP", ChipID::SFPModule_ent11100_MCHIP)
|
||||||
.value("RADGemini_MCHIP", ChipID::RADGemini_MCHIP)
|
.value("RADGemini_MCHIP", ChipID::RADGemini_MCHIP)
|
||||||
.value("Invalid", ChipID::Invalid)
|
.value("Invalid", ChipID::Invalid)
|
||||||
.finalize();
|
.finalize();
|
||||||
|
|
|
||||||
|
|
@ -326,11 +326,15 @@ bool Decoder::decode(std::shared_ptr<Message>& result, const std::shared_ptr<Pac
|
||||||
case ExtendedCommand::GenericBinaryInfo:
|
case ExtendedCommand::GenericBinaryInfo:
|
||||||
result = GenericBinaryStatusPacket::DecodeToMessage(packet->data);
|
result = GenericBinaryStatusPacket::DecodeToMessage(packet->data);
|
||||||
return true;
|
return true;
|
||||||
|
case ExtendedCommand::SoftwareUpdate: {
|
||||||
|
result = std::make_shared<ExtendedResponseMessage>(ExtendedCommand::SoftwareUpdate, ExtendedResponse::OperationPending, packet->data);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
case ExtendedCommand::GenericReturn: {
|
case ExtendedCommand::GenericReturn: {
|
||||||
if(packet->data.size() < sizeof(ExtendedResponseMessage::PackedGenericResponse))
|
if(packet->data.size() < sizeof(ExtendedResponseMessage::PackedGenericResponse))
|
||||||
break;
|
break;
|
||||||
const auto& packedResp = *reinterpret_cast<ExtendedResponseMessage::PackedGenericResponse*>(packet->data.data());
|
const auto& packedResp = *reinterpret_cast<ExtendedResponseMessage::PackedGenericResponse*>(packet->data.data());
|
||||||
result = std::make_shared<ExtendedResponseMessage>(packedResp.command, packedResp.returnCode);
|
result = std::make_shared<ExtendedResponseMessage>(packedResp.command, packedResp.returnCode, packet->data);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
case ExtendedCommand::LiveData:
|
case ExtendedCommand::LiveData:
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@ enum class ExtendedCommand : uint16_t {
|
||||||
GetSupportedFeatures = 0x0018,
|
GetSupportedFeatures = 0x0018,
|
||||||
GetGPTPStatus = 0x0019,
|
GetGPTPStatus = 0x0019,
|
||||||
GetComponentVersions = 0x001A,
|
GetComponentVersions = 0x001A,
|
||||||
|
SoftwareUpdate = 0x001B,
|
||||||
Reboot = 0x001C,
|
Reboot = 0x001C,
|
||||||
SetRootFSEntryFlags = 0x0027,
|
SetRootFSEntryFlags = 0x0027,
|
||||||
TransmitCoreminiMessage = 0x0028,
|
TransmitCoreminiMessage = 0x0028,
|
||||||
|
|
|
||||||
|
|
@ -10,8 +10,8 @@ namespace icsneo {
|
||||||
|
|
||||||
class ExtendedResponseMessage : public Message {
|
class ExtendedResponseMessage : public Message {
|
||||||
public:
|
public:
|
||||||
ExtendedResponseMessage(ExtendedCommand cmd, ExtendedResponse resp = ExtendedResponse::OK)
|
ExtendedResponseMessage(ExtendedCommand cmd, ExtendedResponse resp = ExtendedResponse::OK, const std::vector<uint8_t>& buf = {})
|
||||||
: Message(Message::Type::ExtendedResponse), command(cmd), response(resp) {}
|
: Message(Message::Type::ExtendedResponse), command(cmd), response(resp), data(buf) {}
|
||||||
|
|
||||||
const ExtendedCommand command;
|
const ExtendedCommand command;
|
||||||
const ExtendedResponse response;
|
const ExtendedResponse response;
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ enum class ChipID : uint8_t {
|
||||||
neoOBD2Dev_MCHIP = 94,
|
neoOBD2Dev_MCHIP = 94,
|
||||||
neoOBD2Dev_SCHIP = 95,
|
neoOBD2Dev_SCHIP = 95,
|
||||||
neoOBD2SIMDoIP_MCHIP = 96,
|
neoOBD2SIMDoIP_MCHIP = 96,
|
||||||
SFPModule_MCHIP = 97,
|
SFPModule_88q2112_MCHIP = 97,
|
||||||
RADEpsilonT_MCHIP = 98,
|
RADEpsilonT_MCHIP = 98,
|
||||||
RADEpsilonExpress_MCHIP = 99,
|
RADEpsilonExpress_MCHIP = 99,
|
||||||
RADProxima_MCHIP = 100,
|
RADProxima_MCHIP = 100,
|
||||||
|
|
@ -125,12 +125,16 @@ enum class ChipID : uint8_t {
|
||||||
RADGigastar_FFG_ZYNQ = 117,
|
RADGigastar_FFG_ZYNQ = 117,
|
||||||
VEM_02_FR_FCHIP = 118,
|
VEM_02_FR_FCHIP = 118,
|
||||||
Connect_ZCHIP = 121,
|
Connect_ZCHIP = 121,
|
||||||
|
SFPModule_88q2221_MCHIP = 122,
|
||||||
RADGALAXY2_SYSMON_CHIP = 123,
|
RADGALAXY2_SYSMON_CHIP = 123,
|
||||||
|
SFPModule_88q3244_MCHIP = 124,
|
||||||
RADCOMET3_ZCHIP = 125,
|
RADCOMET3_ZCHIP = 125,
|
||||||
Connect_LINUX = 126,
|
Connect_LINUX = 126,
|
||||||
|
SFPModule_lan8670_MCHIP = 127,
|
||||||
VEM_04_T1S_LIN_ZCHIP = 129,
|
VEM_04_T1S_LIN_ZCHIP = 129,
|
||||||
RADMOONT1S_ZCHIP = 130,
|
RADMOONT1S_ZCHIP = 130,
|
||||||
RADGigastar2_ZYNQ = 131,
|
RADGigastar2_ZYNQ = 131,
|
||||||
|
SFPModule_ent11100_MCHIP = 132,
|
||||||
RADGemini_MCHIP = 135,
|
RADGemini_MCHIP = 135,
|
||||||
Invalid = 255
|
Invalid = 255
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -130,14 +130,18 @@ public:
|
||||||
EtherBADGE = 38,
|
EtherBADGE = 38,
|
||||||
RADEpsilon = 39,
|
RADEpsilon = 39,
|
||||||
RADA2B = 40,
|
RADA2B = 40,
|
||||||
SFPModule = 41,
|
SFPModule_88q2112 = 41,
|
||||||
RADGalaxy2 = 47,
|
RADGalaxy2 = 47,
|
||||||
RADMoon3 = 49,
|
RADMoon3 = 49,
|
||||||
RADComet = 50,
|
RADComet = 50,
|
||||||
Connect = 51,
|
Connect = 51,
|
||||||
|
SFPModule_88q2221m = 52,
|
||||||
|
SFPModule_88q4364 = 53,
|
||||||
RADComet3 = 54,
|
RADComet3 = 54,
|
||||||
|
SFPModule_lan8670 = 55,
|
||||||
RADMoonT1S = 56,
|
RADMoonT1S = 56,
|
||||||
RADGigastar2 = 57,
|
RADGigastar2 = 57,
|
||||||
|
SFPModule_ent11100 = 58,
|
||||||
RADGemini = 60,
|
RADGemini = 60,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,11 @@ public:
|
||||||
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
||||||
|
{ChipID::SFPModule_88q2112_MCHIP, true, "SFP-MV2112", "sfp_mv2112_a2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q2221_MCHIP, true, "SFP-MV2221M", "sfp_mv2221m_b2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_lan8670_MCHIP, true, "SFP-MC8670", "sfp_module_lan8670_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q3244_MCHIP, true, "SFP-MV3244", "sfp_module_88q3244_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_ent11100_MCHIP, true, "SFP-EN11100", "sfp_module_ent11100_ief", 3, FirmwareType::IEF}
|
||||||
};
|
};
|
||||||
return chips;
|
return chips;
|
||||||
}
|
}
|
||||||
|
|
@ -80,8 +85,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
BootloaderPipeline pipeline;
|
BootloaderPipeline pipeline;
|
||||||
for(const auto& version : chipVersions) {
|
for(size_t i = 0; i < chipVersions.size(); i++) {
|
||||||
pipeline.add<FlashPhase>(version.id, BootloaderCommunication::RADMultiChip);
|
const auto& version = chipVersions[i];
|
||||||
|
pipeline.add<FlashPhase>(version.id, BootloaderCommunication::RADMultiChip, i == 0);
|
||||||
}
|
}
|
||||||
pipeline.add<EnterApplicationPhase>(mainChipID);
|
pipeline.add<EnterApplicationPhase>(mainChipID);
|
||||||
pipeline.add<WaitPhase>(std::chrono::milliseconds(3000));
|
pipeline.add<WaitPhase>(std::chrono::milliseconds(3000));
|
||||||
|
|
|
||||||
|
|
@ -129,6 +129,11 @@ public:
|
||||||
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
||||||
|
{ChipID::SFPModule_88q2112_MCHIP, true, "SFP-MV2112", "sfp_mv2112_a2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q2221_MCHIP, true, "SFP-MV2221M", "sfp_mv2221m_b2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_lan8670_MCHIP, true, "SFP-MC8670", "sfp_module_lan8670_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q3244_MCHIP, true, "SFP-MV3244", "sfp_module_88q3244_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_ent11100_MCHIP, true, "SFP-EN11100", "sfp_module_ent11100_ief", 3, FirmwareType::IEF}
|
||||||
};
|
};
|
||||||
|
|
||||||
static std::vector<ChipInfo> t1sChips = {
|
static std::vector<ChipInfo> t1sChips = {
|
||||||
|
|
@ -136,6 +141,11 @@ public:
|
||||||
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_ZYNQ, true, "USB ZCHIP", "RADGigastar_USBz_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7010_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7010_SW_bin", 2, FirmwareType::Zip},
|
||||||
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
{ChipID::RADGigastar_USBZ_Z7007S_ZYNQ, false, "USB ZCHIP", "RADGigastar_USBz_Z7007s_SW_bin", 2, FirmwareType::Zip},
|
||||||
|
{ChipID::SFPModule_88q2112_MCHIP, true, "SFP-MV2112", "sfp_mv2112_a2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q2221_MCHIP, true, "SFP-MV2221M", "sfp_mv2221m_b2_mchip_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_lan8670_MCHIP, true, "SFP-MC8670", "sfp_module_lan8670_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_88q3244_MCHIP, true, "SFP-MV3244", "sfp_module_88q3244_ief", 3, FirmwareType::IEF},
|
||||||
|
{ChipID::SFPModule_ent11100_MCHIP, true, "SFP-EN11100", "sfp_module_ent11100_ief", 3, FirmwareType::IEF}
|
||||||
};
|
};
|
||||||
|
|
||||||
if(variantToFlash == FirmwareVariant::T1Sx8_CANx4_LINx6) {
|
if(variantToFlash == FirmwareVariant::T1Sx8_CANx4_LINx6) {
|
||||||
|
|
@ -159,8 +169,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
BootloaderPipeline pipeline;
|
BootloaderPipeline pipeline;
|
||||||
for(const auto& version : chipVersions) {
|
for(size_t i = 0; i < chipVersions.size(); i++) {
|
||||||
pipeline.add<FlashPhase>(version.id, BootloaderCommunication::RADMultiChip);
|
const auto& version = chipVersions[i];
|
||||||
|
pipeline.add<FlashPhase>(version.id, BootloaderCommunication::RADMultiChip, i == 0);
|
||||||
}
|
}
|
||||||
pipeline.add<EnterApplicationPhase>(mainChipID);
|
pipeline.add<EnterApplicationPhase>(mainChipID);
|
||||||
pipeline.add<WaitPhase>(std::chrono::milliseconds(3000));
|
pipeline.add<WaitPhase>(std::chrono::milliseconds(3000));
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue