From 60b9c8b51661f3364283919c5ce7ba7de1d04a88 Mon Sep 17 00:00:00 2001 From: Silvano Seva Date: Thu, 25 Feb 2021 17:00:28 +0100 Subject: [PATCH] Made linker emit a warning whenever common symbols are merged. Fixed some variables having an unnecessary global scope and being subject to common linkage --- cross_arm.txt | 1 + platform/drivers/GPS/GPS_MDx.c | 5 ++++- platform/drivers/display/HX8353_MDx.c | 6 +++++- 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/cross_arm.txt b/cross_arm.txt index 05a48834..67c05003 100644 --- a/cross_arm.txt +++ b/cross_arm.txt @@ -29,6 +29,7 @@ c_link_args = [ '-mfpu=fpv4-sp-d16', '-Wl,--gc-sections', '-Wl,-Map,main.map', + '-Wl,--warn-common', '-nostdlib', '-Wl,--start-group', '-lc', diff --git a/platform/drivers/GPS/GPS_MDx.c b/platform/drivers/GPS/GPS_MDx.c index bbad0508..1d1a7f9c 100644 --- a/platform/drivers/GPS/GPS_MDx.c +++ b/platform/drivers/GPS/GPS_MDx.c @@ -32,7 +32,6 @@ char *dataBuf; bool receiving = false; OS_FLAG_GRP sentenceReady; -OS_ERR err; #ifdef PLATFORM_MD3x0 #define PORT USART3 @@ -76,6 +75,7 @@ void __attribute__((used)) USART1_IRQHandler() if((receiving == false) && (bufPos != 0)) { uint8_t flag = (bufPos < maxPos) ? 0x01 : 0x02; + OS_ERR err; OSFlagPost(&sentenceReady, flag, OS_OPT_POST_FLAG_SET, &err); } } @@ -112,11 +112,13 @@ void gps_init(const uint16_t baud) NVIC_SetPriority(USART1_IRQn, 14); #endif + OS_ERR err; OSFlagCreate(&sentenceReady, "", 0, &err); } void gps_terminate() { + OS_ERR err; OSFlagDel(&sentenceReady, OS_OPT_DEL_NO_PEND, &err); gps_disable(); @@ -190,6 +192,7 @@ int gps_getNmeaSentence(char *buf, const size_t maxLength) NVIC_EnableIRQ(USART1_IRQn); #endif + OS_ERR err; OS_FLAGS status = OSFlagPend(&sentenceReady, 0x03, 0, OS_OPT_PEND_FLAG_SET_ANY | OS_OPT_PEND_FLAG_CONSUME | diff --git a/platform/drivers/display/HX8353_MDx.c b/platform/drivers/display/HX8353_MDx.c index aea53613..d71175a2 100644 --- a/platform/drivers/display/HX8353_MDx.c +++ b/platform/drivers/display/HX8353_MDx.c @@ -90,10 +90,11 @@ */ static uint16_t frameBuffer[SCREEN_WIDTH * SCREEN_HEIGHT]; OS_FLAG_GRP renderCompleted; -OS_ERR err; void __attribute__((used)) DMA2_Stream7_IRQHandler() { + OS_ERR err; + OSIntEnter(); DMA2->HIFCR |= DMA_HIFCR_CTCIF7 | DMA_HIFCR_CTEIF7; /* Clear flags */ gpio_setPin(LCD_CS); @@ -114,6 +115,7 @@ static inline __attribute__((__always_inline__)) void writeData(uint8_t val) void display_init() { /* Create flag for render completion wait */ + OS_ERR err; OSFlagCreate(&renderCompleted, "", 0, &err); /* Clear framebuffer, setting all pixels to 0xFFFF makes the screen white */ @@ -419,6 +421,7 @@ void display_init() void display_terminate() { + OS_ERR err; OSFlagDel(&renderCompleted, OS_OPT_DEL_NO_PEND, &err); /* Shut off FSMC and deallocate framebuffer */ @@ -486,6 +489,7 @@ void display_renderRows(uint8_t startRow, uint8_t endRow) | DMA_SxCR_TEIE /* Transfer error interrupt */ | DMA_SxCR_EN; /* Start transfer */ + OS_ERR err; OSFlagPend(&renderCompleted, 0x01, 0, OS_OPT_PEND_FLAG_SET_ANY | OS_OPT_PEND_FLAG_CONSUME | OS_OPT_PEND_BLOCKING, NULL, &err);