From d5f3cff68f872c85000ab40871aaea4ca9ce642a Mon Sep 17 00:00:00 2001 From: hitsmaxft Date: Tue, 16 Apr 2024 22:56:59 +0800 Subject: [PATCH] add board yehuo-f103-znz --- Makefile | 12 ++++++++ bootloader_only_binaries/yehuo_boot20_znz.bin | Bin 0 -> 7096 bytes config.h | 26 ++++++++++++++++-- usb.c | 6 +++- usb.h | 6 ++-- 5 files changed, 45 insertions(+), 5 deletions(-) create mode 100755 bootloader_only_binaries/yehuo_boot20_znz.bin diff --git a/Makefile b/Makefile index 567181b..50e03ef 100644 --- a/Makefile +++ b/Makefile @@ -130,6 +130,7 @@ generic-pe5: begin clean gccversion build_generic-pe5 sizeafter finished copy_g generic-pe5-button-pa0: begin clean gccversion build_generic-pe5-button-pa0 sizeafter finished copy_generic-pe5-button-pa0 end generic-pb7: begin clean gccversion build_generic-pb7 sizeafter finished copy_generic-pb7 end generic-pb0: begin clean gccversion build_generic-pb0 sizeafter finished copy_generic-pb0 end +yehuo-znz: begin clean gccversion build_yehuo-znz sizeafter finished copy_yehuo-znz end stbee : begin clean gccversion build_stbee sizeafter finished copy_stbee end naze32: begin clean gccversion build_naze32 sizeafter finished copy_naze32 end generic-pb12: begin clean gccversion build_generic-pb12 sizeafter finished copy_generic-pb12 end @@ -329,6 +330,17 @@ copy_generic-pb7: cp $(TARGET).bin bootloader_only_binaries/generic_boot20_pb7.bin @echo +build_yehuo-znz: TARGETFLAGS= -DTARGET_YEHUO_F103_ZNZ $(DEFINES) +# Set the linker script +build_yehuo-znz: LDFLAGS +=-T$(ST_LIB)/c_only_md_high_density.ld +build_yehuo-znz: elf bin lss sym +copy_yehuo-znz: + @echo + @echo "Copying to binaries folder" + @echo + cp $(TARGET).bin bootloader_only_binaries/yehuo_boot20_znz.bin + @echo + build_generic-pb0: TARGETFLAGS= -DTARGET_GENERIC_F103_PB0 $(DEFINES) # Set the linker script build_generic-pb0: LDFLAGS +=-T$(ST_LIB)/c_only_md_high_density.ld diff --git a/bootloader_only_binaries/yehuo_boot20_znz.bin b/bootloader_only_binaries/yehuo_boot20_znz.bin new file mode 100755 index 0000000000000000000000000000000000000000..7ec8713508eb30902c929dbd4ab91bc7814397fe GIT binary patch literal 7096 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 @@ -159,7 +160,7 @@ #define BUTTON_BANK GPIOB #define BUTTON_PIN 2 #define BUTTON_PRESSED_STATE 1 - + #elif defined TARGET_GENERIC_F103_PC13_FASTBOOT @@ -289,6 +290,27 @@ #define LED_ON_STATE 1 #define BOOTLOADER_WAIT 30 +#elif defined TARGET_YEHUO_F103_ZNZ + + #define HAS_MAPLE_HARDWARE 1 + #define BOOTLOADER_WAIT 0 + + #define LED_BANK GPIOB + #define LED_PIN 0 + #define LED_ON_STATE 0 + + #define FASTBOOT + + /* BUTTON is PA0 (pull down) */ + #define BUTTON_BANK GPIOA + #define BUTTON_PIN 0 + #define BUTTON_PRESSED_STATE 1 + + + /* USB Disc Pin Setup. USB DISC is PD6 */ + #define USB_DISC_BANK GPIOD + #define USB_DISC_PIN 6 + #elif defined TARGET_STBEE #define HAS_MAPLE_HARDWARE 1 @@ -411,7 +433,7 @@ #error "No config for this target" #endif -// Check if button pulldown should be enabled +// Check if button pulldown should be enabled // Default to True as this was the default prior to needing to disable it // in order to use the boot1 pin on the Blue Pill which has a very week pullup #ifndef BUTTON_INPUT_MODE diff --git a/usb.c b/usb.c index 072b0a4..3483d3b 100644 --- a/usb.c +++ b/usb.c @@ -31,14 +31,17 @@ */ #include "usb.h" + #include "dfu.h" +#include "hardware.h" + +u16 wTransferSize; extern u8 u8_usbConfigDescriptorDFU[]; extern u8 u8_usbFunctionalDescriptor[]; void setupUSB (void) { - #ifdef HAS_MAPLE_HARDWARE /* Setup USB DISC pin as output open drain */ SET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC_PIN),(GET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC_PIN)) & crMask(USB_DISC_PIN)) | CR_OUTPUT_OD << CR_SHITF(USB_DISC_PIN)); @@ -56,6 +59,7 @@ void setupUSB (void) { SET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC_PIN),(GET_REG(GPIO_CR(USB_DISC_BANK,USB_DISC_PIN)) & crMask(USB_DISC_PIN)) | CR_OUTPUT_PP << CR_SHITF(USB_DISC_PIN)); + gpio_write_bit(USB_DISC_BANK,USB_DISC_PIN,0); /* present ourselves to the host */ volatile unsigned int delay; diff --git a/usb.h b/usb.h index 9b042ff..82d3a28 100644 --- a/usb.h +++ b/usb.h @@ -39,9 +39,11 @@ #define ENDP3_RXADDR 0x110 #define bMaxPacketSize 0x40 /* 64B, maximum for usb FS devices */ -//#define wTransferSize FLASH_PAGE_SIZE /* This is important, because transfers have to match with the flash page size, otherwise it erases a page before its finished copying to that page */ + +//#define wTransferSize ((uint16_t)0x800) +/* This is important, because transfers have to match with the flash page size, otherwise it erases a page before its finished copying to that page */ #define dummyTransferSize 0x800 -int wTransferSize; +extern u16 wTransferSize; #define NUM_ENDPTS 0x01