From ef70da312ed05adc2e0678a44f9692fe7c76fe84 Mon Sep 17 00:00:00 2001 From: Alexey 'Cluster' Avdyukhin Date: Mon, 31 Oct 2022 22:23:37 +0400 Subject: Bootloader update --- STM32/FamicomDumper.ioc | 4 -- STM32_bootloader/Core/Inc/main.h | 20 ++++++---- STM32_bootloader/Core/Src/cpldwriter.c | 23 +++++++++++ STM32_bootloader/Core/Src/main.c | 39 +++++++++--------- STM32_bootloader/FamicomDumperBootloader.ioc | 60 ++++++++++++++-------------- 5 files changed, 86 insertions(+), 60 deletions(-) diff --git a/STM32/FamicomDumper.ioc b/STM32/FamicomDumper.ioc index 8530d73..0c5c910 100644 --- a/STM32/FamicomDumper.ioc +++ b/STM32/FamicomDumper.ioc @@ -145,16 +145,13 @@ PB3.Mode=Trace_Asynchronous_SW PB3.Signal=SYS_JTDO-TRACESWO PB4.GPIOParameters=GPIO_Label PB4.GPIO_Label=CIRAM_CE -PB4.Locked=true PB4.Signal=GPIO_Input PB6.GPIOParameters=GPIO_Label PB6.GPIO_Label=CIRAM_A10 -PB6.Locked=true PB6.Signal=GPIO_Input PB7.GPIOParameters=GPIO_PuPd,GPIO_Label PB7.GPIO_Label=IRQ PB7.GPIO_PuPd=GPIO_PULLUP -PB7.Locked=true PB7.Signal=GPIO_Input PC0.GPIOParameters=GPIO_Label PC0.GPIO_Label=TDO @@ -179,7 +176,6 @@ PD7.Mode=NorPsramChipSelect1_1 PD7.Signal=FSMC_NE1 PE0.GPIOParameters=PinState,GPIO_Label PE0.GPIO_Label=SHIFTERS_OE -PE0.Locked=true PE0.PinState=GPIO_PIN_RESET PE0.Signal=GPIO_Output PE10.Signal=FSMC_D7_DA7 diff --git a/STM32_bootloader/Core/Inc/main.h b/STM32_bootloader/Core/Inc/main.h index dc6bc44..7a518a0 100644 --- a/STM32_bootloader/Core/Inc/main.h +++ b/STM32_bootloader/Core/Inc/main.h @@ -69,16 +69,20 @@ void error(void); #define M2_GPIO_Port GPIOA #define WS2812_Pin GPIO_PIN_2 #define WS2812_GPIO_Port GPIOA -#define NOE_Pin GPIO_PIN_4 -#define NOE_GPIO_Port GPIOD -#define NWE_Pin GPIO_PIN_5 -#define NWE_GPIO_Port GPIOD -#define NE1_Pin GPIO_PIN_7 -#define NE1_GPIO_Port GPIOD -#define NE2_Pin GPIO_PIN_9 -#define NE2_GPIO_Port GPIOG +#define FSMC_NOE_Pin GPIO_PIN_4 +#define FSMC_NOE_GPIO_Port GPIOD +#define FSMC_NWE_Pin GPIO_PIN_5 +#define FSMC_NWE_GPIO_Port GPIOD +#define FSMC_NWAIT_Pin GPIO_PIN_6 +#define FSMC_NWAIT_GPIO_Port GPIOD +#define FSMC_NE1_Pin GPIO_PIN_7 +#define FSMC_NE1_GPIO_Port GPIOD +#define FSMC_NE2_Pin GPIO_PIN_9 +#define FSMC_NE2_GPIO_Port GPIOG #define IRQ_Pin GPIO_PIN_7 #define IRQ_GPIO_Port GPIOB +#define SHIFTERS_OE_Pin GPIO_PIN_0 +#define SHIFTERS_OE_GPIO_Port GPIOE /* USER CODE BEGIN Private defines */ /* USER CODE END Private defines */ diff --git a/STM32_bootloader/Core/Src/cpldwriter.c b/STM32_bootloader/Core/Src/cpldwriter.c index a95fb81..3613931 100644 --- a/STM32_bootloader/Core/Src/cpldwriter.c +++ b/STM32_bootloader/Core/Src/cpldwriter.c @@ -9,6 +9,21 @@ static int svf_setup(struct libxsvf_host *h) { + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Configure GPIO pin : TDO_Pin */ + GPIO_InitStruct.Pin = TDO_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(TDO_GPIO_Port, &GPIO_InitStruct); + + /* Configure GPIO pins : TCK_Pin TDI_Pin TMS_Pin */ + GPIO_InitStruct.Pin = TCK_Pin|TDI_Pin|TMS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + HAL_GPIO_WritePin(TCK_GPIO_Port, TCK_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(TDI_GPIO_Port, TDI_Pin, GPIO_PIN_SET); HAL_GPIO_WritePin(TMS_GPIO_Port, TMS_Pin, GPIO_PIN_SET); @@ -18,6 +33,14 @@ static int svf_setup(struct libxsvf_host *h) static int svf_shutdown(struct libxsvf_host *h) { + GPIO_InitTypeDef GPIO_InitStruct = {0}; + + /* Configure GPIO pin : TDO_Pin TCK_Pin TDI_Pin TMS_Pin */ + GPIO_InitStruct.Pin = TDO_Pin|TCK_Pin|TDI_Pin|TMS_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_INPUT; + GPIO_InitStruct.Pull = GPIO_NOPULL; + HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); + return 0; } diff --git a/STM32_bootloader/Core/Src/main.c b/STM32_bootloader/Core/Src/main.c index fe345c6..6ccf57b 100644 --- a/STM32_bootloader/Core/Src/main.c +++ b/STM32_bootloader/Core/Src/main.c @@ -187,7 +187,7 @@ int main(void) // Write firmware write_cpld(&fno); // Turn off the LED - led_yellow(); + led_green(); HAL_Delay(50); // Stop } @@ -200,7 +200,7 @@ int main(void) // Write firmware write_firmware(&fno); // Turn off the LED - led_off(); + led_green(); HAL_Delay(50); // Stop __disable_irq(); @@ -451,27 +451,21 @@ static void MX_GPIO_Init(void) __HAL_RCC_GPIOD_CLK_ENABLE(); __HAL_RCC_GPIOG_CLK_ENABLE(); __HAL_RCC_GPIOB_CLK_ENABLE(); + __HAL_RCC_GPIOE_CLK_ENABLE(); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOC, TCK_Pin|TDI_Pin|TMS_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(GPIOD, FSMC_NOE_Pin|FSMC_NWE_Pin|FSMC_NWAIT_Pin|FSMC_NE1_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(GPIOD, NOE_Pin|NWE_Pin|NE1_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(FSMC_NE2_GPIO_Port, FSMC_NE2_Pin, GPIO_PIN_SET); /*Configure GPIO pin Output Level */ - HAL_GPIO_WritePin(NE2_GPIO_Port, NE2_Pin, GPIO_PIN_SET); + HAL_GPIO_WritePin(SHIFTERS_OE_GPIO_Port, SHIFTERS_OE_Pin, GPIO_PIN_SET); - /*Configure GPIO pin : TDO_Pin */ - GPIO_InitStruct.Pin = TDO_Pin; + /*Configure GPIO pins : TDO_Pin TCK_Pin TDI_Pin TMS_Pin */ + GPIO_InitStruct.Pin = TDO_Pin|TCK_Pin|TDI_Pin|TMS_Pin; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_NOPULL; - HAL_GPIO_Init(TDO_GPIO_Port, &GPIO_InitStruct); - - /*Configure GPIO pins : TCK_Pin TDI_Pin TMS_Pin */ - GPIO_InitStruct.Pin = TCK_Pin|TDI_Pin|TMS_Pin; - GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; - GPIO_InitStruct.Pull = GPIO_NOPULL; - GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); /*Configure GPIO pin : PA8 */ @@ -480,19 +474,19 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOA, &GPIO_InitStruct); - /*Configure GPIO pins : NOE_Pin NWE_Pin NE1_Pin */ - GPIO_InitStruct.Pin = NOE_Pin|NWE_Pin|NE1_Pin; + /*Configure GPIO pins : FSMC_NOE_Pin FSMC_NWE_Pin FSMC_NWAIT_Pin FSMC_NE1_Pin */ + GPIO_InitStruct.Pin = FSMC_NOE_Pin|FSMC_NWE_Pin|FSMC_NWAIT_Pin|FSMC_NE1_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOD, &GPIO_InitStruct); - /*Configure GPIO pin : NE2_Pin */ - GPIO_InitStruct.Pin = NE2_Pin; + /*Configure GPIO pin : FSMC_NE2_Pin */ + GPIO_InitStruct.Pin = FSMC_NE2_Pin; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_NOPULL; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; - HAL_GPIO_Init(NE2_GPIO_Port, &GPIO_InitStruct); + HAL_GPIO_Init(FSMC_NE2_GPIO_Port, &GPIO_InitStruct); /*Configure GPIO pin : IRQ_Pin */ GPIO_InitStruct.Pin = IRQ_Pin; @@ -500,6 +494,13 @@ static void MX_GPIO_Init(void) GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(IRQ_GPIO_Port, &GPIO_InitStruct); + /*Configure GPIO pin : SHIFTERS_OE_Pin */ + GPIO_InitStruct.Pin = SHIFTERS_OE_Pin; + GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + HAL_GPIO_Init(SHIFTERS_OE_GPIO_Port, &GPIO_InitStruct); + } /* USER CODE BEGIN 4 */ diff --git a/STM32_bootloader/FamicomDumperBootloader.ioc b/STM32_bootloader/FamicomDumperBootloader.ioc index 54dfbf9..8bfbf75 100644 --- a/STM32_bootloader/FamicomDumperBootloader.ioc +++ b/STM32_bootloader/FamicomDumperBootloader.ioc @@ -43,16 +43,18 @@ Mcu.Pin11=PA13 Mcu.Pin12=PA14 Mcu.Pin13=PD4 Mcu.Pin14=PD5 -Mcu.Pin15=PD7 -Mcu.Pin16=PG9 -Mcu.Pin17=PB3 -Mcu.Pin18=PB7 -Mcu.Pin19=VP_FATFS_VS_Generic +Mcu.Pin15=PD6 +Mcu.Pin16=PD7 +Mcu.Pin17=PG9 +Mcu.Pin18=PB3 +Mcu.Pin19=PB7 Mcu.Pin2=PC0 -Mcu.Pin20=VP_SYS_VS_Systick -Mcu.Pin21=VP_TIM1_VS_ClockSourceINT -Mcu.Pin22=VP_TIM2_VS_ClockSourceINT -Mcu.Pin23=VP_USB_DEVICE_VS_USB_DEVICE_MSC_FS +Mcu.Pin20=PE0 +Mcu.Pin21=VP_FATFS_VS_Generic +Mcu.Pin22=VP_SYS_VS_Systick +Mcu.Pin23=VP_TIM1_VS_ClockSourceINT +Mcu.Pin24=VP_TIM2_VS_ClockSourceINT +Mcu.Pin25=VP_USB_DEVICE_VS_USB_DEVICE_MSC_FS Mcu.Pin3=PC1 Mcu.Pin4=PC2 Mcu.Pin5=PC3 @@ -60,7 +62,7 @@ Mcu.Pin6=PA0-WKUP Mcu.Pin7=PA2 Mcu.Pin8=PA8 Mcu.Pin9=PA11 -Mcu.PinsNb=24 +Mcu.PinsNb=26 Mcu.ThirdPartyNb=0 Mcu.UserConstants= Mcu.UserName=STM32F103ZETx @@ -104,41 +106,41 @@ PB3.Signal=SYS_JTDO-TRACESWO PB7.GPIOParameters=GPIO_PuPd,GPIO_Label PB7.GPIO_Label=IRQ PB7.GPIO_PuPd=GPIO_PULLUP -PB7.Locked=true PB7.Signal=GPIO_Input PC0.GPIOParameters=GPIO_Label PC0.GPIO_Label=TDO PC0.Signal=GPIO_Input -PC1.GPIOParameters=PinState,GPIO_Label +PC1.GPIOParameters=GPIO_Label PC1.GPIO_Label=TCK -PC1.PinState=GPIO_PIN_SET -PC1.Signal=GPIO_Output -PC2.GPIOParameters=PinState,GPIO_Label +PC1.Signal=GPIO_Input +PC2.GPIOParameters=GPIO_Label PC2.GPIO_Label=TDI -PC2.PinState=GPIO_PIN_SET -PC2.Signal=GPIO_Output -PC3.GPIOParameters=PinState,GPIO_Label +PC2.Signal=GPIO_Input +PC3.GPIOParameters=GPIO_Label PC3.GPIO_Label=TMS -PC3.PinState=GPIO_PIN_SET -PC3.Signal=GPIO_Output +PC3.Signal=GPIO_Input PD4.GPIOParameters=PinState,GPIO_Label -PD4.GPIO_Label=NOE -PD4.Locked=true +PD4.GPIO_Label=FSMC_NOE PD4.PinState=GPIO_PIN_SET PD4.Signal=GPIO_Output PD5.GPIOParameters=PinState,GPIO_Label -PD5.GPIO_Label=NWE -PD5.Locked=true +PD5.GPIO_Label=FSMC_NWE PD5.PinState=GPIO_PIN_SET PD5.Signal=GPIO_Output +PD6.GPIOParameters=PinState,GPIO_Label +PD6.GPIO_Label=FSMC_NWAIT +PD6.PinState=GPIO_PIN_SET +PD6.Signal=GPIO_Output PD7.GPIOParameters=PinState,GPIO_Label -PD7.GPIO_Label=NE1 -PD7.Locked=true +PD7.GPIO_Label=FSMC_NE1 PD7.PinState=GPIO_PIN_SET PD7.Signal=GPIO_Output +PE0.GPIOParameters=PinState,GPIO_Label +PE0.GPIO_Label=SHIFTERS_OE +PE0.PinState=GPIO_PIN_SET +PE0.Signal=GPIO_Output PG9.GPIOParameters=PinState,GPIO_Label -PG9.GPIO_Label=NE2 -PG9.Locked=true +PG9.GPIO_Label=FSMC_NE2 PG9.PinState=GPIO_PIN_SET PG9.Signal=GPIO_Output PinOutPanel.RotationAngle=0 @@ -169,7 +171,7 @@ ProjectManager.StackSize=0x400 ProjectManager.TargetToolchain=STM32CubeIDE ProjectManager.ToolChainLocation= ProjectManager.UnderRoot=true -ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,4-MX_DMA_Init-DMA-false-HAL-true,5-MX_TIM5_Init-TIM5-false-HAL-true,6-MX_FATFS_Init-FATFS-false-HAL-false,7-MX_TIM2_Init-TIM2-false-HAL-true +ProjectManager.functionlistsort=1-SystemClock_Config-RCC-false-HAL-false,2-MX_GPIO_Init-GPIO-false-HAL-true,3-MX_USB_DEVICE_Init-USB_DEVICE-false-HAL-false,4-MX_DMA_Init-DMA-false-HAL-true,5-MX_TIM5_Init-TIM5-false-HAL-true,6-MX_FATFS_Init-FATFS-false-HAL-false,7-MX_TIM2_Init-TIM2-false-HAL-true,8-MX_TIM1_Init-TIM1-false-HAL-true RCC.ADCFreqValue=36000000 RCC.AHBFreq_Value=72000000 RCC.APB1CLKDivider=RCC_HCLK_DIV2 -- cgit v1.2.3