diff --git a/tools/svdconv/SVDConv/src/SVDConv_Msgs.cpp b/tools/svdconv/SVDConv/src/SVDConv_Msgs.cpp index 59336673f..e44c775b6 100644 --- a/tools/svdconv/SVDConv/src/SVDConv_Msgs.cpp +++ b/tools/svdconv/SVDConv/src/SVDConv_Msgs.cpp @@ -204,10 +204,11 @@ const MsgTable SvdConv::msgTable = { { "M384", { MsgLevel::LEVEL_ERROR, CRLF_B, "Number of PMU Event Counters (found val: '%NUM%') not set or outside range [2..31]. Ignoring PMU entry."} }, // 14.02.2020 { "M385", { MsgLevel::LEVEL_ERROR, CRLF_B, "PMU not supported for CPU '%NAME%'" } }, // 14.02.2020 { "M386", { MsgLevel::LEVEL_ERROR, CRLF_B, "Name not C compliant: '%NAME%' : Brackets [] found" } }, - { "M387", { MsgLevel::LEVEL_ERROR, CRLF_B, "" } }, + { "M387", { MsgLevel::LEVEL_ERROR, CRLF_B, "CPU: set to 0 but regions are configured." } }, { "M388", { MsgLevel::LEVEL_ERROR, CRLF_B, "MVE Floating-Point support is set but MVE is not set" } }, { "M389", { MsgLevel::LEVEL_ERROR, CRLF_B, "Specified : '%NUM%' greater or equal '%NAME%': '%NUM2%'."} }, // 05.05.2020 { "M390", { MsgLevel::LEVEL_WARNING3, CRLF_B, "Checking IRQ '%NAME%': CPU unknown (see ). Assuming a maximum of %NUM% external Interrupts."} }, // 13.05.2020 + { "M391", { MsgLevel::LEVEL_WARNING, CRLF_B, "CPU: configured number of SAU regions '%NUM%' greater than value: '%NUM2%'" } }, // 500... SfrCC2 related Data modification Errors { "M500", { MsgLevel::LEVEL_ERROR, CRLF_B, "" } }, diff --git a/tools/svdconv/SVDModel/src/SvdCpu.cpp b/tools/svdconv/SVDModel/src/SvdCpu.cpp index 35493c5a1..ba5351185 100644 --- a/tools/svdconv/SVDModel/src/SvdCpu.cpp +++ b/tools/svdconv/SVDModel/src/SvdCpu.cpp @@ -336,16 +336,23 @@ bool SvdCpu::CheckItem() LogMsg("M363", lineNo); m_sauRegionsConfig->Invalidate(); } + else if(m_sauNumRegions == 0) { + LogMsg("M387", lineNo); + m_sauRegionsConfig->Invalidate(); + } } if(m_sauNumRegions != SvdItem::VALUE32_NOT_INIT) { - if(m_sauNumRegions == 0 || m_sauNumRegions > MAXNUM_SAU_REGIONS) { + if(m_sauNumRegions > MAXNUM_SAU_REGIONS) { LogMsg("M364", NUM(m_sauNumRegions), NUM2(MAXNUM_SAU_REGIONS), lineNo); m_sauNumRegions = SvdItem::VALUE32_NOT_INIT; if(m_sauRegionsConfig) { m_sauRegionsConfig->Invalidate(); } } + else if(m_sauRegionsConfig && m_sauNumRegions < m_sauRegionsConfig->GetChildCount()) { + LogMsg("M391", NUM(m_sauRegionsConfig->GetChildCount()), NUM2(m_sauNumRegions),lineNo); + } } if(m_pmuPresent) {