From 9fb0956dcfee3339793d26d43a8a339695c3c1b9 Mon Sep 17 00:00:00 2001 From: Edward Emelianov Date: Thu, 23 Jul 2026 21:15:11 +0300 Subject: [PATCH] fixed -flto problem (usb_dev.c needs -fno-lto) --- G4:G431/USB_CDC/main.c | 6 +++--- G4:G431/USB_CDC/ringbuffer.c | 28 ++++++++++++++-------------- G4:G431/USB_CDC/ringbuffer.h | 2 +- G4:G431/USB_CDC/usart.c | 18 +++++++++--------- G4:G431/USB_CDC/usb_dev.c | 2 ++ G4:G431/USB_CDC/usbcdc.bin | Bin 6672 -> 7000 bytes makefile.stm32 | 12 ++++++++---- 7 files changed, 37 insertions(+), 31 deletions(-) diff --git a/G4:G431/USB_CDC/main.c b/G4:G431/USB_CDC/main.c index f5d5017..58a0070 100644 --- a/G4:G431/USB_CDC/main.c +++ b/G4:G431/USB_CDC/main.c @@ -35,7 +35,7 @@ int main(void){ gpio_setup(); usart_setup(115200); USB_setup(); - bool pressed = false; + uint8_t pressed = 0; uint32_t Tblink = 0, Tkey = 0; // blink and key pressed time while(1){ USART_flags_t f = usart_process(); @@ -56,7 +56,7 @@ int main(void){ } if(KEY_PRESSED()){ if(!pressed){ // new event - pressed = true; + pressed = 1; usart_sendstr(spressed); USB_putbyte('1'); USB_putbyte('1'); newline(); USB_sendstr(spressed); @@ -64,7 +64,7 @@ int main(void){ Tkey = Tms; }else{ // key released if(pressed && (Tms - Tkey) > TDEBOUNCE){ // wait for debounce - pressed = false; + pressed = 0; usart_sendstr(sreleased); USB_putbyte('0'); USB_putbyte('0'); newline(); USB_sendstr(sreleased); diff --git a/G4:G431/USB_CDC/ringbuffer.c b/G4:G431/USB_CDC/ringbuffer.c index 5e28ee0..9683f6c 100644 --- a/G4:G431/USB_CDC/ringbuffer.c +++ b/G4:G431/USB_CDC/ringbuffer.c @@ -31,9 +31,9 @@ int RB_datalen(ringbuffer *b){ CHK(b); if(0 == datalen(b)) return 0; // don't block for empty RO operations if(b->busy) return -1; - b->busy = true; + b->busy = 1; int l = datalen(b); - b->busy = false; + b->busy = 0; return l; } @@ -59,9 +59,9 @@ static int hasbyte(ringbuffer *b, uint8_t byte){ int RB_hasbyte(ringbuffer *b, uint8_t byte){ CHK(b); if(b->busy) return -1; - b->busy = true; + b->busy = 1; int ret = hasbyte(b, byte); - b->busy = false; + b->busy = 0; return ret; } @@ -100,9 +100,9 @@ int RB_read(ringbuffer *b, uint8_t *s, int len){ if(!s || len < 1) return -1; if(0 == datalen(b)) return 0; if(b->busy) return -1; - b->busy = true; + b->busy = 1; int r = read(b, s, len); - b->busy = false; + b->busy = 0; return r; } @@ -136,14 +136,14 @@ int RB_readto(ringbuffer *b, uint8_t byte, uint8_t *s, int len){ if(!s || len < 1) return -1; if(0 == datalen(b)) return 0; if(b->busy) return -1; - b->busy = true; + b->busy = 1; int n = 0; if(s && len > 0){ n = readto(b, byte, s, len); }else{ incr(b, &b->head, lento(b, byte)); // just throw data out } - b->busy = false; + b->busy = 0; return n; } @@ -151,9 +151,9 @@ int RB_datalento(ringbuffer *b, uint8_t byte){ CHK(b); if(0 == datalen(b)) return 0; if(b->busy) return -1; - b->busy = true; + b->busy = 1; int n = lento(b, byte); - b->busy = false; + b->busy = 0; return n; } @@ -184,9 +184,9 @@ int RB_write(ringbuffer *b, const uint8_t *str, int l){ if(!str || l < 1) return -1; if(b->length - datalen(b) < 2) return 0; if(b->busy) return -1; - b->busy = true; + b->busy = 1; int w = write(b, str, l); - b->busy = false; + b->busy = 0; return w; } @@ -194,10 +194,10 @@ int RB_write(ringbuffer *b, const uint8_t *str, int l){ int RB_clearbuf(ringbuffer *b){ CHK(b); if(b->busy) return -1; - b->busy = true; + b->busy = 1; b->head = 0; b->tail = 0; memset(b->data, 0, b->length); - b->busy = false; + b->busy = 0; return 1; } diff --git a/G4:G431/USB_CDC/ringbuffer.h b/G4:G431/USB_CDC/ringbuffer.h index 8b7d808..5a0bf60 100644 --- a/G4:G431/USB_CDC/ringbuffer.h +++ b/G4:G431/USB_CDC/ringbuffer.h @@ -24,7 +24,7 @@ typedef struct{ const int length; // its length volatile int head; // head index volatile int tail; // tail index - volatile bool busy; // == TRUE if buffer is busy now + volatile uint8_t busy; // == TRUE if buffer is busy now } ringbuffer; int RB_read(ringbuffer *b, uint8_t *s, int len); diff --git a/G4:G431/USB_CDC/usart.c b/G4:G431/USB_CDC/usart.c index b1e7eff..a2754de 100644 --- a/G4:G431/USB_CDC/usart.c +++ b/G4:G431/USB_CDC/usart.c @@ -65,8 +65,8 @@ void dma1_channel2_isr() __attribute__ ((alias ("dmatx_isr"))); #define DMARXCCR (DMA_CCR_MINC | DMA_CCR_CIRC | DMA_CCR_TEIE) #define DMATXCCR (DMA_CCR_MINC | DMA_CCR_DIR | DMA_CCR_TCIE | DMA_CCR_TEIE) -static volatile bool gotstring = true; // got '\n' in input stream -> force data reading to inbuf -static volatile bool txrdy = true; // Tx DMA not busy +static volatile uint8_t gotstring = 1; // got '\n' in input stream -> force data reading to inbuf +static volatile uint8_t txrdy = 1; // Tx DMA not busy static volatile USART_flags_t curflags; // current flags (cleared in `usart_process`) // rx/tx DMA buffers static uint8_t dmarxbuf[USARTRXDMABUFSZ]; @@ -123,19 +123,19 @@ void usart_setup(uint32_t speed){ * @brief usart_sendbuf - send next data portion * @return true if sent something */ -static bool usart_sendbuf(){ - if(!txrdy) return false; +static uint8_t usart_sendbuf(){ + if(!txrdy) return 0; int rd = RB_read(&TxRB, dmatxbuf, USARTTXDMABUFSZ); - if(rd < 1) return false; // nothing to write or busy + if(rd < 1) return 0; // nothing to write or busy // set up DMA DMACHTX->CCR = DMATXCCR; DMACHTX->CMAR = (uint32_t) dmatxbuf; DMACHTX->CNDTR = rd; USARTx->ICR = USART_ICR_TCCF; // clear TC flag - txrdy = false; + txrdy = 0; // activate DMA DMACHTX->CCR = DMATXCCR | DMA_CCR_EN; - return true; + return 1; } int usart_send(const char *str, int len){ @@ -235,7 +235,7 @@ char *usart_getline(){ // interrupt by '\n' static void usart_isr(){ if(USARTx->ISR & USART_ISR_CMF){ // got '\n' @ USARTx - gotstring = true; + gotstring = 1; } USARTx->ICR = 0xffffffff; // clear all flags } @@ -251,7 +251,7 @@ static void dmarx_isr(){ static void dmatx_isr(){ volatile uint32_t isr = DMAx->ISR; - if(isr & DMATXTCF) txrdy = true; + if(isr & DMATXTCF) txrdy = 1; if(isr & DMATXEF) curflags.txerr = 1; DMAx->IFCR = DMATXTCF | DMATXEF; // clear all flags } diff --git a/G4:G431/USB_CDC/usb_dev.c b/G4:G431/USB_CDC/usb_dev.c index 2af95f9..ee7ed0e 100644 --- a/G4:G431/USB_CDC/usb_dev.c +++ b/G4:G431/USB_CDC/usb_dev.c @@ -21,6 +21,8 @@ #include "usb_descr.h" #include "usb_dev.h" +//#pragma GCC optimize ("O1") + // Class-Specific Control Requests #define SEND_ENCAPSULATED_COMMAND 0x00 // unused #define GET_ENCAPSULATED_RESPONSE 0x01 // unused diff --git a/G4:G431/USB_CDC/usbcdc.bin b/G4:G431/USB_CDC/usbcdc.bin index a8e191aa88c1b4f6c80e60891c345dce3cc7f25b..43f602b76e79adb52e4905446023e9c6fa08197c 100755 GIT binary patch literal 7000 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 diff --git a/makefile.stm32 b/makefile.stm32 index ef9a466..2880721 100644 --- a/makefile.stm32 +++ b/makefile.stm32 @@ -49,7 +49,7 @@ LIB_DIR := $(INC_DIR)/ld ############################################################################### # C flags -CFLAGS += -D__thumb2__=1 -MD +CFLAGS += -D__thumb2__=1 -MD CFLAGS += -Wall -Wextra -Wshadow -Wdouble-promotion CFLAGS += -fshort-enums -ffunction-sections -fdata-sections #CFLAGS += -fno-common -fno-stack-protector @@ -57,12 +57,12 @@ CFLAGS += $(ARCH_FLAGS) ############################################################################### # Linker flags -LDFLAGS += -nostartfiles --static -specs=nosys.specs -specs=nano.specs +LDFLAGS += -nostartfiles --static -specs=nano.specs LDFLAGS += $(ARCH_FLAGS) LDFLAGS += -L$(LIB_DIR) #-L$(TOOLCHLIB) LDFLAGS += -T$(LDSCRIPT) -LDFLAGS += -Wl,-Map=$(MAP),--cref -Wl,--gc-sections -Wl,--print-memory-usage +LDFLAGS += -Wl,-Map=$(MAP),--cref -Wl,--gc-sections -Wl,--print-memory-usage -Wl,--trace-symbol=_sbrk ############################################################################### # Used libraries @@ -102,6 +102,8 @@ debug: CFLAGS += -O0 -DEBUG -Werror -g3 -gdwarf-2 debug: TARGET := DEBUG debug: $(TARGFILE) bin list size +all: $(BIN) + $(TARGFILE): $(OBJDIR) @echo -e "\t\tTARGET: $(TARGET)" @echo "$(TARGET)" > $(TARGFILE) @@ -130,13 +132,15 @@ $(VERSION_FILE): *.[ch] $(OBJDIR)/proto.o: proto.c $(VERSION_FILE) +$(OBJDIR)/usb_dev.o: CFLAGS := $(filter-out -flto,$(CFLAGS)) -fno-lto + $(OBJDIR)/%.o: %.c @echo " CC $<" $(CC) $(CFLAGS) $(DEFS) $(INCLUDE) -o $@ -c $< $(OBJDIR)/%.o: %.cpp @echo " C++ $<" - $(CPP) -c $(CFLAGS) -fno-exceptions $(DEFS) $(INCLUDE) -o $@ -c $< + $(CPP) -c $(CFLAGS) -std=c++11 -fno-exceptions -fno-rtti -Wl,--trace-symbol=_sbrk $(DEFS) $(INCLUDE) -o $@ -c $< $(BIN): $(ELF) @echo " OBJCOPY $(BIN)"