Skip to content

Commit f2131e0

Browse files
committed
Improved handling of non-sequential subregister errors that do not affect all targets.
Updated STM32 BSP to pass the new validation logic.
1 parent 9de5a84 commit f2131e0

File tree

12 files changed

+49
-11
lines changed

12 files changed

+49
-11
lines changed

DebugPackages/ESP8266DebugPackage/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@
1616
[assembly: AssemblyCulture("")]
1717
[assembly: ComVisible(false)]
1818

19-
[assembly: AssemblyVersion("2.0.1535.0")]
20-
[assembly: AssemblyFileVersion("2.0.1535.0")]
19+
[assembly: AssemblyVersion("2.0.1569.0")]
20+
[assembly: AssemblyFileVersion("2.0.1569.0")]

DebugPackages/RISCVDebugPackage/Properties/AssemblyInfo.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,5 +32,5 @@
3232
// You can specify all the values or you can default the Build and Revision Numbers
3333
// by using the '*' as shown below:
3434
// [assembly: AssemblyVersion("1.0.*")]
35-
[assembly: AssemblyVersion("1.0.1124.0")]
36-
[assembly: AssemblyFileVersion("1.0.1124.0")]
35+
[assembly: AssemblyVersion("1.0.1158.0")]
36+
[assembly: AssemblyFileVersion("1.0.1158.0")]

generators/stm32/PeripheralRegisterGenerator.cs

+22-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ public override string ToString()
4141
public class RegisterParserConfiguration
4242
{
4343
Dictionary<string, bool> _IgnoredSubregisters = new Dictionary<string, bool>();
44+
Dictionary<string, bool> _PotentiallyNotSequentialRegisters = new Dictionary<string, bool>();
4445
string[] _IgnoredSubregisterPrefixes;
4546
string[] _IgnoredSubregisterSuffixes;
4647
Regex[] _IgnoredSubregisterRegexes;
@@ -271,6 +272,20 @@ public string IgnoredSubregisters
271272
}
272273
}
273274

275+
//Those registers might be non-sequential for some devices, but not all. We will only ignore the actual non-sequential instances of them.
276+
public bool IsKnownNonSequentialRegister(string register) => _PotentiallyNotSequentialRegisters.ContainsKey(register);
277+
278+
279+
public string PotentiallyNotSequentialRegisters
280+
{
281+
get => throw new NotImplementedException();
282+
set
283+
{
284+
foreach (var r in value.Split(';'))
285+
_PotentiallyNotSequentialRegisters[r] = true;
286+
}
287+
}
288+
274289
public string IgnoredSubregisterPrefixes
275290
{
276291
get
@@ -1518,9 +1533,14 @@ private static Dictionary<string, List<HardwareSubRegister>> ProcessSubregisters
15181533
{
15191534
ExtractFirstBitAndSize(ParseHex(address_offset), out size, out offset);
15201535
}
1521-
catch(Exception ex)
1536+
catch
15221537
{
1523-
errors.AddError(new RegisterParserErrors.BitmaskNotSequential { FileName = fileName, LineContents = line, LineNumber = nextLine - 1 });
1538+
if (cfg.IsKnownNonSequentialRegister(subreg_name))
1539+
{
1540+
//Nothing to do - ignore the error.
1541+
}
1542+
else
1543+
errors.AddError(new RegisterParserErrors.BitmaskNotSequential { FileName = fileName, LineContents = line, LineNumber = nextLine - 1 });
15241544
continue;
15251545
}
15261546

generators/stm32/rules/Families/stm32f0.xml

+1
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,7 @@
212212
<Framework>
213213
<Name>STM32F0 Legacy Peripheral Library</Name>
214214
<ID>com.sysprogs.arm.stm32.f0_stdperiph</ID>
215+
<ClassID>com.sysprogs.arm.stm32.stdperiph</ClassID>
215216
<IncompatibleFrameworks>
216217
<string>com.sysprogs.arm.stm32.f0_hal</string>
217218
</IncompatibleFrameworks>

generators/stm32/rules/Families/stm32f1.xml

+1
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,7 @@
191191
<Framework>
192192
<Name>STM32F1 Legacy Peripheral Library</Name>
193193
<ID>com.sysprogs.arm.stm32.f1_stdperiph</ID>
194+
<ClassID>com.sysprogs.arm.stm32.stdperiph</ClassID>
194195
<IncompatibleFrameworks>
195196
<string>com.sysprogs.arm.stm32.f1_hal</string>
196197
</IncompatibleFrameworks>

generators/stm32/rules/Families/stm32f2.xml

+1
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@
8282
<Framework>
8383
<Name>STM32F2 Legacy Peripheral Library</Name>
8484
<ID>com.sysprogs.arm.stm32.f2_stdperiph</ID>
85+
<ClassID>com.sysprogs.arm.stm32.stdperiph</ClassID>
8586
<IncompatibleFrameworks>
8687
<string>com.sysprogs.arm.stm32.f2_hal</string>
8788
</IncompatibleFrameworks>

generators/stm32/rules/Families/stm32f4.xml

+1
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@
172172
<Framework>
173173
<Name>STM32F4 Legacy Peripheral Library</Name>
174174
<ID>com.sysprogs.arm.stm32.f4_stdperiph</ID>
175+
<ClassID>com.sysprogs.arm.stm32.stdperiph</ClassID>
175176
<IncompatibleFrameworks>
176177
<string>com.sysprogs.arm.stm32.f4_hal</string>
177178
</IncompatibleFrameworks>

generators/stm32/rules/Families/stm32f7.xml

+2
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
<Framework>
7878
<Name>STM32746G-Discovery drivers</Name>
7979
<ID>com.sysprogs.arm.stm32.bspdrv.stm2746g-discovery</ID>
80+
<ClassID>com.sysprogs.arm.stm32.bspdrv</ClassID>
8081
<RequiredFrameworks>
8182
<string>com.sysprogs.arm.stm32.f7_hal</string>
8283
</RequiredFrameworks>
@@ -129,6 +130,7 @@
129130
<RequiredFrameworks>
130131
<string>com.sysprogs.arm.stm32.f7_hal</string>
131132
</RequiredFrameworks>
133+
<ClassID>com.sysprogs.arm.stm32.bspdrv</ClassID>
132134
<IncompatibleFrameworks>
133135
<string>com.sysprogs.arm.stm32.stm2746g-discovery</string>
134136
</IncompatibleFrameworks>

generators/stm32/rules/Families/stm32h7.xml

+2
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
<Framework>
7171
<Name>STM32H743I_EVAL drivers</Name>
7272
<ID>com.sysprogs.arm.stm32.bspdrv.stm32h743i_eval</ID>
73+
<ClassID>com.sysprogs.arm.stm32.bspdrv</ClassID>
7374
<RequiredFrameworks>
7475
<string>com.sysprogs.arm.stm32.h7_hal</string>
7576
</RequiredFrameworks>
@@ -119,6 +120,7 @@
119120
<Framework>
120121
<Name>STM32H7xx_Nucleo_144</Name>
121122
<ID>com.sysprogs.arm.stm32.bspdrv.nucleo144</ID>
123+
<ClassID>com.sysprogs.arm.stm32.bspdrv</ClassID>
122124
<RequiredFrameworks>
123125
<string>com.sysprogs.arm.stm32.h7_hal</string>
124126
</RequiredFrameworks>

generators/stm32/rules/Families/stm32l1.xml

+1
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@
189189
<Framework>
190190
<Name>STM32L1 Legacy Peripheral Library</Name>
191191
<ID>com.sysprogs.arm.stm32.l1_stdperiph</ID>
192+
<ClassID>com.sysprogs.arm.stm32.stdperiph</ClassID>
192193
<IncompatibleFrameworks>
193194
<string>com.sysprogs.arm.stm32.l1_hal</string>
194195
</IncompatibleFrameworks>

generators/stm32/rules/PeripheralRegisters.xml

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
<?xml version="1.0"?>
22
<RegisterParserConfiguration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
3-
<IgnoredSubregisters>USB_HS_PHYC_PLL1_PLLSEL_12MHZ;EXTI_EMR2_EM;EXTI_IMR2_IM;TIM_SMCR_TS;ETH_DMACCR_DSL_0BIT;ETH_MACHWF0R_ACTPHYSEL_MII;ETH_MACPFR_PCF_BLOCKALL;CRYP_CR_ALGOMODE_AES_CCM;EXTI_IMR1_IM;RI_ASCR2_GR6;SYSCFG_VREFINT_ADC_RDYF;SYSCFG_SWP_FSMC;RTC_BKP_NUMBER;EXTI_IMR_IM;DSI_VR;AFIO_MAPR_PD01_REMAP;AFIO_MAPR_TIM5CH4_IREMAP;AFIO_MAPR_ADC1_ETRGINJ_REMAP;AFIO_MAPR_ADC1_ETRGREG_REMAP;AFIO_MAPR_ADC2_ETRGINJ_REMAP;AFIO_MAPR_ADC2_ETRGREG_REMAP;ADC_CFGR2_TOVS;AFIO_MAPR_SWJ_CFG_RESET;AFIO_MAPR_SWJ_CFG_NOJNTRST;AFIO_MAPR_SWJ_CFG_JTAGDISABLE;AFIO_MAPR_SWJ_CFG_DISABLE;AFIO_MAPR_ETH_REMAP;AFIO_MAPR_CAN2_REMAP;AFIO_MAPR_MII_RMII_SEL;AFIO_MAPR_SPI3_REMAP;AFIO_MAPR_TIM2ITR1_IREMAP;AFIO_MAPR_PTP_PPS_REMAP;AFIO_MAPR2_TIM15_REMAP;AFIO_MAPR2_TIM16_REMAP;AFIO_MAPR2_TIM17_REMAP;AFIO_MAPR2_CEC_REMAP;AFIO_MAPR2_TIM1_DMA_REMAP;AFIO_MAPR2_TIM13_REMAP;AFIO_MAPR2_TIM14_REMAP;AFIO_MAPR2_FSMC_NADV_REMAP;AFIO_MAPR2_TIM67_DAC_DMA_REMAP;AFIO_MAPR2_TIM12_REMAP;AFIO_MAPR2_MISC_REMAP;AFIO_MAPR2_TIM9_REMAP;AFIO_MAPR2_TIM10_REMAP;AFIO_MAPR2_TIM11_REMAP;CRYP_CR_ALGOMODE;CRYP_CR_ALGOMODE_TDES_ECB;CRYP_CR_ALGOMODE_TDES_CBC;CRYP_CR_ALGOMODE_DES_ECB;CRYP_CR_ALGOMODE_DES_CBC;CRYP_CR_ALGOMODE_AES_ECB;CRYP_CR_ALGOMODE_AES_CBC;CRYP_CR_ALGOMODE_AES_CTR;CRYP_CR_ALGOMODE_AES_KEY;FLASH_FKEY1;FLASH_FKEY2;FLASH_OPTKEY1;FLASH_OPTKEY2;FLASH_OBR_USER;FLASH_OBR_RDPRT;FLASH_ACR_BYTE0_ADDRESS;FLASH_ACR_BYTE2_ADDRESS;FLASH_ACR_LATENCY_0;RDP_KEY;FLASH_KEY1;FLASH_KEY2;GPIO_CRL_MODE;GPIO_CRL_CNF;GPIO_CRH_MODE;GPIO_CRH_CNF;HASH_CR_ALGO;OB_USER_USER;OB_USER_nUSER;OB_WRP1_WRP1;OB_WRP1_nWRP1;OB_WRP3_WRP3;OB_WRP3_nWRP3;FLASH_USER_USER;FLASH_USER_nUSER;FLASH_Data1_Data1;FLASH_Data1_nData1;FLASH_Rsvd0_Rsvd0;FLASH_Rsvd0_nRsvd0;FLASH_Rsvd2_Rsvd2;FLASH_Rsvd2_nRsvd2;RCC_CFGR_SW_HSI;RCC_CFGR_SW_HSE;RCC_CFGR_SW_PLL;RCC_CFGR_SW_MSI;RCC_CFGR_SW_HSI48;RCC_CFGR_SWS_HSI;RCC_CFGR_SWS_HSE;RCC_CFGR_SWS_PLL;RCC_CFGR_SWS_MSI;RCC_CFGR_SWS_HSI48;RCC_CFGR_PLLSRC_HSE;RCC_CFGR_PLLSRC_HSI;RCC_CFGR_PLLSRC_PREDIV1;RCC_CFGR_PLLSRC_HSI_DIV2;RCC_CFGR_PLLSRC_HSI_PREDIV;RCC_CFGR_PLLSRC_HSE_PREDIV;RCC_CFGR_PLLSRC_HSI48_PREDIV;RCC_CFGR_PLLXTPRE_PREDIV1;RCC_CFGR_PLLXTPRE_HSE;RCC_CFGR_PLLXTPRE_HSE_Div2;RCC_CFGR_PLLXTPRE_PREDIV1_Div2;RCC_CFGR_MCO_NOCLOCK;RCC_CFGR_MCO_PLLCLK_Div2;RCC_CFGR_MCO_PLL2CLK;RCC_CFGR_MCO_PLL3CLK_Div2;RCC_CFGR_MCO_PLL3CLK;RCC_CFGR_PLLSRC_HSI_Div2;RCC_CFGR_MCO_Ext_HSE;RCC_CFGR_MCO_HSI14;RCC_CFGR_MCO_LSI;RCC_CFGR_MCO_MSI;RCC_CFGR_MCO_LSE;RCC_CFGR_MCO_SYSCLK;RCC_CFGR_MCO_HSI;RCC_CFGR_MCO_HSE;RCC_CFGR_MCO_PLL;RCC_CFGR_MCO_HSI48;RCC_CFGR2_ADCPRE12_NO;RCC_CFGR2_ADCPRE34_NO;RCC_CFGR2_PREDIV1SRC;RCC_CFGR2_PREDIV1SRC_PLL2;RCC_CFGR2_PREDIV1SRC_HSE;RCC_CFGR2_I2S2SRC;RCC_CFGR2_I2S3SRC;RCC_CSR_RTCSEL_NOCLOCK;RCC_CSR_RTCSEL_LSE;RCC_CSR_RTCSEL_LSI;RCC_CSR_RTCSEL_HSE;RCC_BDCR_RTCSEL_NOCLOCK;RCC_BDCR_RTCSEL_LSE;RCC_BDCR_RTCSEL_LSI;RCC_BDCR_RTCSEL_HSE;RCC_PLLCFGR_PLLSRC_HSE;RCC_PLLCFGR_PLLSRC_HSI;RI_ASCR1_CH;TIM_IMR_RSVD;TIM_SMCR_SMS;TIM_CCMR1_OC1M;TIM_CCMR1_OC2M;USART_CR1_M;SPDIFRX_DIR_THI;RCC_CFGR_MCO_EXT_HSE;FLASH_OPTKEYR_OPTKEYR2;FLASH_AR_FAR2;SYSCFG_CFGR1_DMA_RMP;RCC_CFGR2_ADC1PRES_NO;LPTIM_CR_SNGSTRT;TIM9_OR_ITR1_RMP;TIM2_OR_ITR1_RMP;TIM3_OR_ITR2_RMP;RCC_PLLCFGR_PLLSRC_MSI;SYSCFG_SKR_KEY;AES_CR_CHMOD;DAC_SR_BWST1;I2C_OAR2_OA2NOMASK</IgnoredSubregisters>
3+
<IgnoredSubregisters>USB_HS_PHYC_PLL1_PLLSEL_12MHZ;EXTI_EMR2_EM;EXTI_IMR2_IM;ETH_DMACCR_DSL_0BIT;ETH_MACHWF0R_ACTPHYSEL_MII;ETH_MACPFR_PCF_BLOCKALL;CRYP_CR_ALGOMODE_AES_CCM;EXTI_IMR1_IM;RI_ASCR2_GR6;SYSCFG_VREFINT_ADC_RDYF;SYSCFG_SWP_FSMC;RTC_BKP_NUMBER;EXTI_IMR_IM;DSI_VR;AFIO_MAPR_PD01_REMAP;AFIO_MAPR_TIM5CH4_IREMAP;AFIO_MAPR_ADC1_ETRGINJ_REMAP;AFIO_MAPR_ADC1_ETRGREG_REMAP;AFIO_MAPR_ADC2_ETRGINJ_REMAP;AFIO_MAPR_ADC2_ETRGREG_REMAP;ADC_CFGR2_TOVS;AFIO_MAPR_SWJ_CFG_RESET;AFIO_MAPR_SWJ_CFG_NOJNTRST;AFIO_MAPR_SWJ_CFG_JTAGDISABLE;AFIO_MAPR_SWJ_CFG_DISABLE;AFIO_MAPR_ETH_REMAP;AFIO_MAPR_CAN2_REMAP;AFIO_MAPR_MII_RMII_SEL;AFIO_MAPR_SPI3_REMAP;AFIO_MAPR_TIM2ITR1_IREMAP;AFIO_MAPR_PTP_PPS_REMAP;AFIO_MAPR2_TIM15_REMAP;AFIO_MAPR2_TIM16_REMAP;AFIO_MAPR2_TIM17_REMAP;AFIO_MAPR2_CEC_REMAP;AFIO_MAPR2_TIM1_DMA_REMAP;AFIO_MAPR2_TIM13_REMAP;AFIO_MAPR2_TIM14_REMAP;AFIO_MAPR2_FSMC_NADV_REMAP;AFIO_MAPR2_TIM67_DAC_DMA_REMAP;AFIO_MAPR2_TIM12_REMAP;AFIO_MAPR2_MISC_REMAP;AFIO_MAPR2_TIM9_REMAP;AFIO_MAPR2_TIM10_REMAP;AFIO_MAPR2_TIM11_REMAP;CRYP_CR_ALGOMODE;CRYP_CR_ALGOMODE_TDES_ECB;CRYP_CR_ALGOMODE_TDES_CBC;CRYP_CR_ALGOMODE_DES_ECB;CRYP_CR_ALGOMODE_DES_CBC;CRYP_CR_ALGOMODE_AES_ECB;CRYP_CR_ALGOMODE_AES_CBC;CRYP_CR_ALGOMODE_AES_CTR;CRYP_CR_ALGOMODE_AES_KEY;FLASH_FKEY1;FLASH_FKEY2;FLASH_OPTKEY1;FLASH_OPTKEY2;FLASH_OBR_USER;FLASH_OBR_RDPRT;FLASH_ACR_BYTE0_ADDRESS;FLASH_ACR_BYTE2_ADDRESS;FLASH_ACR_LATENCY_0;RDP_KEY;FLASH_KEY1;FLASH_KEY2;GPIO_CRL_MODE;GPIO_CRL_CNF;GPIO_CRH_MODE;GPIO_CRH_CNF;HASH_CR_ALGO;OB_USER_USER;OB_USER_nUSER;OB_WRP1_WRP1;OB_WRP1_nWRP1;OB_WRP3_WRP3;OB_WRP3_nWRP3;FLASH_USER_USER;FLASH_USER_nUSER;FLASH_Data1_Data1;FLASH_Data1_nData1;FLASH_Rsvd0_Rsvd0;FLASH_Rsvd0_nRsvd0;FLASH_Rsvd2_Rsvd2;FLASH_Rsvd2_nRsvd2;RCC_CFGR_SW_HSI;RCC_CFGR_SW_HSE;RCC_CFGR_SW_PLL;RCC_CFGR_SW_MSI;RCC_CFGR_SW_HSI48;RCC_CFGR_SWS_HSI;RCC_CFGR_SWS_HSE;RCC_CFGR_SWS_PLL;RCC_CFGR_SWS_MSI;RCC_CFGR_SWS_HSI48;RCC_CFGR_PLLSRC_HSE;RCC_CFGR_PLLSRC_HSI;RCC_CFGR_PLLSRC_PREDIV1;RCC_CFGR_PLLSRC_HSI_DIV2;RCC_CFGR_PLLSRC_HSI_PREDIV;RCC_CFGR_PLLSRC_HSE_PREDIV;RCC_CFGR_PLLSRC_HSI48_PREDIV;RCC_CFGR_PLLXTPRE_PREDIV1;RCC_CFGR_PLLXTPRE_HSE;RCC_CFGR_PLLXTPRE_HSE_Div2;RCC_CFGR_PLLXTPRE_PREDIV1_Div2;RCC_CFGR_MCO_NOCLOCK;RCC_CFGR_MCO_PLLCLK_Div2;RCC_CFGR_MCO_PLL2CLK;RCC_CFGR_MCO_PLL3CLK_Div2;RCC_CFGR_MCO_PLL3CLK;RCC_CFGR_PLLSRC_HSI_Div2;RCC_CFGR_MCO_Ext_HSE;RCC_CFGR_MCO_HSI14;RCC_CFGR_MCO_LSI;RCC_CFGR_MCO_MSI;RCC_CFGR_MCO_LSE;RCC_CFGR_MCO_SYSCLK;RCC_CFGR_MCO_HSI;RCC_CFGR_MCO_HSE;RCC_CFGR_MCO_PLL;RCC_CFGR_MCO_HSI48;RCC_CFGR2_ADCPRE12_NO;RCC_CFGR2_ADCPRE34_NO;RCC_CFGR2_PREDIV1SRC;RCC_CFGR2_PREDIV1SRC_PLL2;RCC_CFGR2_PREDIV1SRC_HSE;RCC_CFGR2_I2S2SRC;RCC_CFGR2_I2S3SRC;RCC_CSR_RTCSEL_NOCLOCK;RCC_CSR_RTCSEL_LSE;RCC_CSR_RTCSEL_LSI;RCC_CSR_RTCSEL_HSE;RCC_BDCR_RTCSEL_NOCLOCK;RCC_BDCR_RTCSEL_LSE;RCC_BDCR_RTCSEL_LSI;RCC_BDCR_RTCSEL_HSE;RCC_PLLCFGR_PLLSRC_HSE;RCC_PLLCFGR_PLLSRC_HSI;RI_ASCR1_CH;TIM_IMR_RSVD;TIM_CCMR1_OC1M;TIM_CCMR1_OC2M;USART_CR1_M;SPDIFRX_DIR_THI;RCC_CFGR_MCO_EXT_HSE;FLASH_OPTKEYR_OPTKEYR2;FLASH_AR_FAR2;SYSCFG_CFGR1_DMA_RMP;RCC_CFGR2_ADC1PRES_NO;LPTIM_CR_SNGSTRT;TIM9_OR_ITR1_RMP;TIM2_OR_ITR1_RMP;TIM3_OR_ITR2_RMP;RCC_PLLCFGR_PLLSRC_MSI;SYSCFG_SKR_KEY;AES_CR_CHMOD;DAC_SR_BWST1;I2C_OAR2_OA2NOMASK</IgnoredSubregisters>
44
<IgnoredSubregisterPrefixes>PWR_CR1_ALS_LEV;FLASH_CRCCR_CRC_BURST_;FLASH_OPTCR_RDP_;FLASH_ACR_WRHIGHFREQ_;FLASH_CR_SNB_;ETH_DMADSR;ETH_DMAMR_PR_;ETH_MACWTR_WTO;ETH_MACCR_;RTC_CAL_;DCMI_MISR_;DCMI_RISR_;DMA2D_IFSR_;GPIO_OTYPER_ODR_;GPIO_OTYPER_IDR_;RCC_CFGR_MCOSEL_;GPIO_BSRR_BS_;GPIO_BSRR_BR_;AFIO_EVCR_PIN_PX;AFIO_EVCR_PORT_P;AFIO_EXTICR1_EXTI0_;COMP_CSR_COMP2SPEED;AFIO_EXTICR1_EXTI1_;AFIO_EXTICR1_EXTI2_;AFIO_EXTICR1_EXTI3_;COMP_CSR_COMPx;AFIO_EXTICR2_EXTI4_;AFIO_EXTICR2_EXTI5_;AFIO_EXTICR2_EXTI6_;AFIO_EXTICR2_EXTI7_;AFIO_EXTICR3_EXTI8_;AFIO_EXTICR3_EXTI9_;AFIO_EXTICR3_EXTI10_;AFIO_EXTICR3_EXTI11_;AFIO_EXTICR4_EXTI12_;AFIO_EXTICR4_EXTI13_;AFIO_EXTICR4_EXTI14_;AFIO_EXTICR4_EXTI15_;ETH_MACCR_IFG_;ETH_MACCR_BL_;ETH_MACFFR_PCF_;ETH_MACMIIAR_CR_;ETH_MACFCR_PLT_;ETH_MACA1HR_MBC_;ETH_MACA2HR_MBC_;ETH_MACA3HR_MBC_;ETH_DMABMR_RDP_;ETH_DMABMR_RTPR_;ETH_DMABMR_PBL_;ETH_DMASR_EBS_;ETH_DMASR_TPS_;ETH_DMAOMR_RTC_;ETH_DMAOMR_TTC_;ETH_DMASR_RPS_;ETH_DMASR_RPS_;PWR_CR_PLS_LEV;PWR_CR_PLS_2V;RCC_CFGR_HPRE_DIV;RCC_CFGR_PPRE_DIV;RCC_CFGR_PPRE1_DIV;RCC_CFGR_PPRE2_DIV;RCC_CFGR2_PREDIV1_DIV;RCC_CFGR2_PPRE2_DIV;RCC_CFGR_ADCPRE_DIV;RCC_CFGR2_ADCPRE12_DIV;RCC_CFGR2_ADCPRE34_DIV;RCC_CFGR_MCO_DIV;RCC_CFGR_MCO_PRE_;RCC_CFGR2_PREDIV1_DIV;RCC_CFGR2_PREDIV2_DIV;RCC_CFGR_SDADCPRE_DIV;RCC_ICSCR_MSIRANGE_;SYSCFG_EXTICR1_EXTI0_;SYSCFG_EXTICR1_EXTI1_;SYSCFG_EXTICR1_EXTI2_;SYSCFG_EXTICR1_EXTI3_;SYSCFG_EXTICR2_EXTI4_;SYSCFG_EXTICR2_EXTI5_;SYSCFG_EXTICR2_EXTI6_;SYSCFG_EXTICR2_EXTI7_;SYSCFG_EXTICR3_EXTI8_;SYSCFG_EXTICR3_EXTI9_;SYSCFG_EXTICR3_EXTI10_;SYSCFG_EXTICR3_EXTI11_;SYSCFG_EXTICR3_EXTI12_;SYSCFG_EXTICR3_EXTI13_;SYSCFG_EXTICR3_EXTI14_;SYSCFG_EXTICR3_EXTI15_;SYSCFG_EXTICR4_EXTI12_;SYSCFG_EXTICR4_EXTI13_;SYSCFG_EXTICR4_EXTI14_;SYSCFG_EXTICR4_EXTI15_;SYSCFG_EXTIRCR_EXTI4_;SYSCFG_EXTIRCR_EXTI5_;SYSCFG_EXTIRCR_EXTI6_;SYSCFG_EXTIRCR_EXTI7_;DMA_RMPCR;SYSCFG_ITLINE;RCC_CFGR_MCO_PLL3CLK_DIV;DMA1_CSELR;DMA2_CSELR;PWR_CR1_PLS_LEV;AES_KEYR;AES_SUSP;FLASH_OPTR_BOR_LEV_;RCC_CR_MSIRANGE_;I2C_OAR2_OA2MASK0;PWR_CR1_LPMS_;PWR_CR2_PLS_;RCC_CSR_MSISRANGE_</IgnoredSubregisterPrefixes>
55
<IgnoredSubregisterRegexes>RCC_.*_(DIV[12468]*|HSI);ETH_.*BITS.*;ETH_.*_DIV.*;ETH_MACTFCR_PLT_MINUS.*;VREFBUF_CSR_VRS_OUT[0-4]?;RCC_CFGR2?_PLL[23]?(MULL?[23]?|DIV)[^_].*;SCB_AIRCR_PRIGROUP[^_]+;FLASH_ACR_LATENCY_.*WS;FLASH_DATA[0-9]_n?DATA[0-9];CAN_FFA[0-9]R?_FFA[0-9]+;RCC_CFGR3_[^_]+SW.*;RCC_CFGR.*(DIV|SRC).*;COMP[0-9]?_CSR_COMP[0-9]?I(N|P|)NSEL.*;TIM_CCMR[23]_OC[0-9]M.*;FLASH_WRPR?[1-9]?_n?WRP[1-9]?;FW_[A-Z]+_(ADD|LENG)</IgnoredSubregisterRegexes>
66
<IgnoredSubregisterSuffixes>_EMPTY;_IDLE;_NOVLANTAG;_DONOTSTRIP;_REMAP1;_REMAP2;_REMAP3;_NOREMAP;_PARTIALREMAP;_PARTIALREMAP1;_PARTIALREMAP;_FULLREMAP</IgnoredSubregisterSuffixes>
77
<IgnoredMismatchingSubregisters>USB_HS_PHYC_USB_HS_PHYC_PLL;COMP_CSR_COMP2SW1;COMP_CSR_COMP1SW1;RTC_BKP0R;DMA_SxNDT;AES_DINR;AES_DOUTR;AES_KEYR0;AES_KEYR1;AES_KEYR2;AES_KEYR3;AES_IVR0;AES_IVR1;AES_IVR2;AES_IVR3;RTC_BKP.*;NVIC.*;SysTick.*;SCB_.*;TIM(2|21|22|3)_OR_.*;HRTIM1?_.*</IgnoredMismatchingSubregisters>
88
<IgnoredDefinitionsInBaseAddressArea>SRAM3_SIZE;FLASH_OTP_BANK1_END;FLASH_OTP_BANK2_END;OPAMP12_COMMON;OPAMP1_COMMON;COMP12_COMMON;FSMC_BANK1;FSMC_BANK1_1;FSMC_BANK1_2;FSMC_BANK1_3;FSMC_BANK1_4;FSMC_BANK2;FSMC_BANK3;FSMC_BANK4;SRAM1_SIZE_MAX;SRAM2_SIZE;FMC_BANK1;FMC_BANK;FMC_BANK1_1;FMC_BANK1_2;FMC_BANK1_3;FMC_BANK1_4;FMC_BANK2;FMC_BANK3;FMC_BANK4</IgnoredDefinitionsInBaseAddressArea>
99
<KnownRegistersWithoutSubregisters>OCTOSPIM/PCR[12];GFXMMU/LUT.*;SDMMC[12]/ACKTIME|IDMABSIZE|IDMABASE[01];USB[12]_OTG_[HF]S/GSNPSID|GHWCFG[12];|MDIOS/R.*|WRFR|CWRFR|CRDFR;HSEM/R.*;ETH/MAC.*|DMACSFCSR|MMC.*;SDMMC.*/IPVR;CRYP/DIN;EXTI/D3PCR.*;SYSCFG/UR1;TIM([2356479]|10|11|13|14|12|15|16|17)/AF[21]|TISEL;TIM[23]/AF2;FLASH/KEYR2|OPTSR.*|PRAR_.*|SCAR_.*|WPSN_.*|BOOT_.*;DAC1/DHR12R2|DHR12L2|DHR8R2|DOR2|SHSR2;USB_HS_PHYC/USB_HS_PHYC_TUNE;PWR/PUCRD|PDCRD|PUCRE|PDCRE;OPAMP123_COMMON/OTR;OPAMP12_COMMON/OTR;RTC/BKP.*;JPEG/QMEM[0-9]+|HUFFMIN[0-9]*|HUFFBASE[0-9]*|HUFFSYMB[0-9]*|DHTMEM[0-9]+|HUFFENC_AC[0-9]+|HUFFENC_DC[0-9]+;MDIOS/DINR[0-9]+|DOUTR[0-9]+;COMP56_COMMON/CSR;COMP34_COMMON/CSR;COMP12_COMMON/CSR;OB/DATA[01]|RDP|USER|WRP.*;TSC/.*;FS?MC_Bank1E?/BTCR|BWTR;GPIO.*/LCKR|AFR[LH];FLASH/KEYR|OPTKEYR;DMA[12]_Stream.*/PAR|M0AR|M1AR;ETH/DMARSWTR;DCMI/ESCR|ESUR|CWSTRTR|CWSIZER|DR;CRYP/CSGCM.*|CSGCMCCM.*|DR|DOUT|K[0123][LR]R|IV[01][LR]R;(HASH|HASH_DIGEST)/HR.*|CSR.*|DIN;RNG/DR;TIM.*/OR;DMA2D/IFCR|[FB]GCLUT.*;CMD_BANK1:BTCR.*;GPIO:BRR.*;MEM:(RAM|DMA)PROTR.*|RAMCR;SC_DMA_Channel:DMA(BEG|END)ADD[AB]R;RTC:CALR.*;FW:.*;DMA_Request:.*;SYSCFG:IT_LINE_SR.*|PMC;DMA:RPMCR;SPDIFRX:DR;USB_OTG:GHWCFG3|GDFIFOCFG|GADPCTL;I2C.*/DR;COMP:CSR;DMA:CSELR;USB:EP.*|ISTR|DADDR|BTABLE|LPMCS?R;CRC:POL;LPTIM:OR;FLASH:WRPR[0-9];TIM[0-9]+/OR[0-9]+;FIREWALL:.*;FLASH:PDKEYR;USB_OTG_FS/GSNPSID|GHWCFG1|GHWCFG2;RCC/CKGATENR;SYSCFG/CFGR2|SWPR2;RCC/AHB3ENR</KnownRegistersWithoutSubregisters>
10+
<PotentiallyNotSequentialRegisters>TIM_SMCR_TS;TIM_SMCR_SMS</PotentiallyNotSequentialRegisters>
1011
<RegisterSetRenameRules>
1112

1213

libraries/BSPGenerationTools/BSPGeneratorTools.cs

+12-4
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,21 @@ public void ValidateBSP(BoardSupportPackage bsp)
304304
}
305305
}
306306

307-
HashSet<string> usedFolders = new HashSet<string>();
307+
Dictionary<string, string> usedFoldersToCompatibleIDs = new Dictionary<string, string>();
308+
int ambiguousFolders = 0;
308309
foreach(var fw in bsp.Frameworks ?? new EmbeddedFramework[0])
309310
{
310-
if (usedFolders.Contains(fw.ProjectFolderName))
311-
throw new Exception($"'{fw.ProjectFolderName}' is used by more than 1 framework. This will break builds in Visual Studio.");
312-
usedFolders.Add(fw.ProjectFolderName);
311+
var id = fw.ClassID ?? fw.ID;
312+
if (usedFoldersToCompatibleIDs.TryGetValue(fw.ProjectFolderName, out var tmp) && tmp != id)
313+
{
314+
ambiguousFolders++;
315+
Console.WriteLine($"'{fw.ProjectFolderName}' is used by both {id} and {tmp}. This will break builds in Visual Studio.");
316+
}
317+
usedFoldersToCompatibleIDs[fw.ProjectFolderName] = id;
313318
}
319+
320+
if (ambiguousFolders > 0)
321+
throw new Exception($"Found {ambiguousFolders} ambiguous folders. Please check the generator output.");
314322
}
315323
}
316324

0 commit comments

Comments
 (0)