Skip to content

Commit 8a6e257

Browse files
committed
[STM32] an optimization of internal flash memory usage
1 parent 0cce9b7 commit 8a6e257

5 files changed

Lines changed: 31 additions & 8 deletions

File tree

software/firmware/source/SoftRF/src/driver/GNSS.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -558,6 +558,7 @@ static byte ublox_version() {
558558
// uBlox 7 - page 153 : https://www.u-blox.com/sites/default/files/products/documents/u-blox7-V14_ReceiverDescriptionProtocolSpec_%28GPS.G7-SW-12001%29_Public.pdf
559559
// uBlox M8 - page 300 : https://www.u-blox.com/sites/default/files/products/documents/u-blox8-M8_ReceiverDescrProtSpec_%28UBX-13003221%29_Public.pdf
560560

561+
#if !defined(EXCLUDE_LOG_GNSS_VERSION)
561562
Serial.print(F("INFO: GNSS module HW version: "));
562563
Serial.println((char *) &GNSSbuf[30]);
563564

@@ -570,6 +571,7 @@ static byte ublox_version() {
570571
Serial.println((char *) &GNSSbuf[i]);
571572
}
572573
#endif
574+
#endif /* EXCLUDE_LOG_GNSS_VERSION */
573575

574576
if (GNSSbuf[33] == '4')
575577
rval = GNSS_MODULE_U6;

software/firmware/source/SoftRF/src/driver/radio/radiolib.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5259,6 +5259,7 @@ static void lr20xx_setup()
52595259
float br, fdev, bw;
52605260
switch (rl_protocol->modulation_type)
52615261
{
5262+
#if !defined(EXCLUDE_FANET) || defined(ENABLE_PROL)
52625263
case RF_MODULATION_TYPE_LORA:
52635264
#if RADIOLIB_DEBUG_BASIC
52645265
Serial.print(F("[LR20XX] Initializing LoRa ... "));
@@ -5323,7 +5324,9 @@ static void lr20xx_setup()
53235324
rl_state = radio_g4->explicitHeader();
53245325
rl_state = radio_g4->setCRC(true);
53255326
break;
5327+
#endif /* EXCLUDE_FANET */
53265328

5329+
#if !defined(EXCLUDE_ES1090)
53275330
case RF_MODULATION_TYPE_PPM:
53285331
#if RADIOLIB_DEBUG_BASIC
53295332
Serial.print(F("[LR20XX] Initializing OOK ... "));
@@ -5444,6 +5447,7 @@ static void lr20xx_setup()
54445447

54455448
rl_state = radio_g4->setOokDetectionThreshold(-80); /* TODO */
54465449
break;
5450+
#endif /* EXCLUDE_ES1090 */
54475451

54485452
case RF_MODULATION_TYPE_2FSK:
54495453
default:

software/firmware/source/SoftRF/src/platform/STM32.cpp

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -337,8 +337,12 @@ static void STM32_setup()
337337
hw_info.model = SOFTRF_MODEL_RETRO;
338338

339339
#if !defined(ARDUINO_WisDuo_RAK3172_Evaluation_Board)
340+
#if !defined(EXCLUDE_BMP180) || !defined(EXCLUDE_BMP280) || \
341+
!defined(EXCLUDE_BME680) || !defined(EXCLUDE_BME280AUX) || \
342+
!defined(EXCLUDE_MPL3115A2) || defined(USE_OLED)
340343
Wire.setSCL(SOC_GPIO_PIN_SCL);
341344
Wire.setSDA(SOC_GPIO_PIN_SDA);
345+
#endif
342346
#endif /* ARDUINO_WisDuo_RAK3172_Evaluation_Board */
343347

344348
#if defined(ARDUINO_NUCLEO_L073RZ)
@@ -418,10 +422,6 @@ static void STM32_setup()
418422
stm32_board = STM32_EBYTE_E80_900MBL_02;
419423
hw_info.model = SOFTRF_MODEL_RETRO_MK2;
420424

421-
#if defined(EXCLUDE_BMP280) && !defined(USE_OLED)
422-
Wire.begin();
423-
#endif /* BMP280 */
424-
425425
if (STM32_probe_pin(SOC_GPIO_PIN_MODE_SW, INPUT_PULLUP) == LOW) {
426426
STM32_enforce_uav_mode = true;
427427
}
@@ -951,7 +951,12 @@ static void STM32_fini(int reason)
951951
#endif /* GENERIC_WL55CCUX || BLUEPILL_F103CB */
952952

953953
Serial_GNSS_In.end();
954+
955+
#if !defined(EXCLUDE_BMP180) || !defined(EXCLUDE_BMP280) || \
956+
!defined(EXCLUDE_BME680) || !defined(EXCLUDE_BME280AUX) || \
957+
!defined(EXCLUDE_MPL3115A2) || defined(USE_OLED)
954958
Wire.end();
959+
#endif
955960

956961
#if !defined(ARDUINO_WisDuo_RAK3172_Evaluation_Board)
957962
pinMode(SOC_GPIO_PIN_SDA, INPUT_ANALOG);

software/firmware/source/SoftRF/src/platform/STM32.h

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -325,12 +325,12 @@ typedef struct stm32_backup_struct {
325325
#define EXCLUDE_LR11XX
326326

327327
//#define EXCLUDE_LR20XX
328-
#define EXCLUDE_OGNTP
328+
//#define EXCLUDE_OGNTP
329329
#define EXCLUDE_P3I
330-
#define EXCLUDE_FANET
330+
//#define EXCLUDE_FANET
331331
//#define EXCLUDE_ES1090
332332
#define EXCLUDE_UAT978
333-
//#define ENABLE_ADSL
333+
#define ENABLE_ADSL
334334

335335
#define EXCLUDE_CC1101
336336
#define EXCLUDE_SI443X
@@ -340,6 +340,12 @@ typedef struct stm32_backup_struct {
340340

341341
#define USE_TIME_SLOTS
342342

343+
/* trade performance for flash memory usage (-4 Kb) */
344+
#define cosf(x) cos ((double) (x))
345+
#define sinf(x) sin ((double) (x))
346+
//#define sqrtf(x) sqrt ((double) (x))
347+
//#define atan2f(y,x) atan2((double) (y), (double) (x))
348+
343349
#endif /* USBCON */
344350

345351
#elif defined(ARDUINO_GENERIC_WLE5CCUX)

software/firmware/source/libraries/adsb_encoder/adsb_encoder.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,9 @@ unsigned int modes_crc(unsigned char *buf, size_t len)
9191
return rem;
9292
}
9393

94+
#if defined(ARDUINO_ARCH_STM32) && defined(ARDUINO_BLUEPILL_F103CB)
95+
extern "C" int cprNLFunction(double lat);
96+
#endif /* ARDUINO_BLUEPILL_F103CB */
9497

9598
int CPR_NL(double lat)
9699
{
@@ -106,6 +109,9 @@ int CPR_NL(double lat)
106109
return static_cast<int>(floor(2.0*M_PI* 1.0 / (acos(1 - U / (T*T)))));
107110
#endif
108111

112+
#if defined(ARDUINO_ARCH_STM32) && defined(ARDUINO_BLUEPILL_F103CB)
113+
return cprNLFunction(lat);
114+
#else
109115
if (lat < 0) lat = -lat;
110116
if (lat < 10.47047130) return 59;
111117
if (lat < 14.82817437) return 58;
@@ -166,7 +172,7 @@ int CPR_NL(double lat)
166172
if (lat < 86.53536998) return 3;
167173
if (lat < 87.00000000) return 2;
168174
else return 1;
169-
175+
#endif /* ARDUINO_BLUEPILL_F103CB */
170176
}
171177

172178
int CPR_N(double lat, int odd)

0 commit comments

Comments
 (0)