speeduino/platformio.ini

171 lines
5.6 KiB
INI
Raw Normal View History

2017-02-06 01:56:46 -08:00
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:megaatmega2560]
platform=atmelavr
board=megaatmega2560
framework=arduino
build_unflags = -Os
build_flags = -DUSE_LIBDIVIDE -O3 -ffast-math -fshort-enums -funroll-loops -Wall -Wextra -std=c99
Performance: optimize division (#1082) * Add udiv_32_16 * Apply udiv_32_16() where possible * Convert udiv_32_16 to assembler It's worth 20 loop/s * Remove unused functions * Remove degreesPeruSx2048 - unused * Remove angleToTime - replace with direct calls 1. Drop angleToTime() It's slow, only partially implemented and adds zero value (and has MISRA violations) 2. Consistent function naming 3. Doxygen * triggerPri_Nissan360 shouldn't set timePerDegree. It will be overwritten every loop by doCrankSpeedCalcs() * Use angleToTimeMicroSecPerDegree() instead of timePerDegree No loss in performance Increased injection open/close time accuracy (so unit test values must change) Can remove timePerDegree global. * Hide (encapsulate) crank math globals. * Base all angle to time conversions on decoder computed variables. This is within 2us of the revolution based method and is much faster - which is essentially zero percent change. * Performance: move calculation of degreesPeruSx32768 into decoders. Remove doCrankSpeedCalcs() - it's doing nothing at the moment. * Apply libdivide to triggerSetEndTeeth functions. Since triggerToothAngle is set once at initialization time, we can generate the libdivide struct once and reuse it many times. * Remove lastToothCalcAdvance - unused * Replace 16-bit division with shift * Replace 32-bit divison with 16-bit division * Avoid 32-bit division; use div100() * inline percentage() * Optimize div100() * MISRA fixes * Replace magic numbers with #defs * Replace libdivide structs with inline constants No perf or memory changes * Use fixed types for PWM max count variables * Accurate rounded integer division * Formalise rounding behavior (DIV_ROUND_CORRECT) * Apply DIV_ROUND_CORRECT to DIV_ROUND_CLOSEST(), UDIV_ROUND_CLOSEST(), div100(), div360(), percentage() & halfPercentage() * Add, fix & improve unit tests * Add udiv_32_16_closest() * Perf: Limit percentage calculations to 16-bits * MISRA fixes * Add compare_executiontime() to encapsulate common perf testing code * Signed to unsigned division * Convert ignitionLimits() to an inline function. Slight speed up, probably due to removing multiple evaluations of macro arguments. * Split unit tests up. * udiv_32_16 - check for valid parameters
2023-11-05 14:10:08 -08:00
; Note that fp64lib is only used by unit tests. It isn't referenced by the firmware & will be
; ignored.
lib_deps = EEPROM, Time, fp64lib
2022-06-01 00:06:44 -07:00
;test_build_project_src = true
2022-05-24 18:02:55 -07:00
test_build_src = yes
debug_tool = simavr
test_ignore = test_table3d_native
;This environment is the same as the above, however compiles for 6 channels of fuel and 3 channels of ignition
[env:megaatmega2560-6-3]
extends = env:megaatmega2560
build_flags = ${env:megaatmega2560.build_flags} -DINJ_CHANNELS=6 -DIGN_CHANNELS=3
;As the above, however compiles for 8 channels of fuel and only a single ignition channel
[env:megaatmega2560-8-1]
extends = env:megaatmega2560
build_flags = ${env:megaatmega2560.build_flags} -DINJ_CHANNELS=8 -DIGN_CHANNELS=1
[env:megaatmega2561]
extends = env:megaatmega2560
board=ATmega2561
2017-02-06 01:56:46 -08:00
[env:teensy35]
;platform=teensy
platform=https://github.com/platformio/platform-teensy.git
2017-02-06 01:56:46 -08:00
board=teensy35
framework=arduino
lib_deps = EEPROM, FlexCAN_T4, Time
test_build_src = yes
test_ignore = test_table3d_native
extra_scripts = post:post_extra_script.py
2017-02-06 01:56:46 -08:00
[env:teensy36]
;platform=teensy
platform=https://github.com/platformio/platform-teensy.git
board=teensy36
2019-12-14 14:55:46 -08:00
framework=arduino
lib_deps = EEPROM, FlexCAN_T4, Time
test_build_src = yes
test_ignore = test_table3d_native
2019-12-14 14:55:46 -08:00
[env:teensy41]
;platform=teensy
platform=https://github.com/platformio/platform-teensy.git
board=teensy41
2019-08-21 00:42:01 -07:00
framework=arduino
lib_deps = EEPROM, FlexCAN_T4, Time
test_build_src = yes
test_ignore = test_table3d_native
2019-08-21 00:42:01 -07:00
;STM32 Official core
[env:black_F407VE]
platform = ststm32
;platform = https://github.com/platformio/platform-ststm32.git
framework = arduino
;board = genericSTM32F407VET6
board = black_f407ve
; RTC library fixed to 1.2.0, because in newer than that the RTC fails to keep up time. At least up to 1.3.7 version
lib_deps = stm32duino/STM32duino RTC @ 1.2.0, greiman/SdFat
board_build.core = stm32
build_flags = -DUSE_LIBDIVIDE -std=gnu++11 -UBOARD_MAX_IO_PINS -DENABLE_HWSERIAL2 -DENABLE_HWSERIAL3 -DUSBCON -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_CAN_MODULE_ENABLED -DSERIAL_TX_BUFFER_SIZE=128 -DSERIAL_RX_BUFFER_SIZE=128
upload_protocol = dfu
debug_tool = stlink
monitor_speed = 115200
;STM32 Official core
[env:BlackPill_F401CC]
platform = ststm32
framework = arduino
board = blackpill_f401cc
lib_deps = stm32duino/STM32duino RTC @ 1.2.0
board_build.core = stm32
build_flags = -DUSE_LIBDIVIDE -std=gnu++11 -UBOARD_MAX_IO_PINS -DUSBCON -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC -DHAL_DAC_MODULE_DISABLED -DHAL_ETH_MODULE_DISABLED -DHAL_SD_MODULE_DISABLED -DHAL_QSPI_MODULE_DISABLED
upload_protocol = dfu
debug_tool = stlink
monitor_speed = 115200
;STM32 Official core
[env:BlackPill_F411CE_UART]
platform = ststm32
framework = arduino
board = blackpill_f411ce
lib_deps = stm32duino/STM32duino RTC @ 1.2.0
board_build.core = stm32
build_flags = -DUSE_LIBDIVIDE -O3 -std=gnu++11 -UBOARD_MAX_IO_PINS
upload_protocol = dfu
debug_tool = stlink
monitor_speed = 115200
;STM32 Official core
[env:BlackPill_F411CE_USB]
platform = ststm32
framework = arduino
board = blackpill_f411ce
lib_deps = stm32duino/STM32duino RTC @ 1.2.0
board_build.core = stm32
build_flags = -DUSE_LIBDIVIDE -O3 -std=gnu++11 -UBOARD_MAX_IO_PINS -DUSBCON -DHAL_PCD_MODULE_ENABLED -DUSBD_USE_CDC
upload_protocol = dfu
debug_tool = stlink
monitor_speed = 115200
[env:bluepill_f103c8]
platform = ststm32
framework = arduino
; framework-arduinoststm32
board = bluepill_f103c8_128k
lib_deps = EEPROM, stm32duino/STM32duino RTC @ 1.2.0
;build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11 -Os -ffunction-sections -fdata-sections -Wl,--gc-sections -Wl,-Map,output.map
build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11 -Os -DCORE_STM32_OFFICIAL -UBOARD_MAX_IO_PINS
;SAMD21
[env:samd21]
platform = atmelsam
framework = arduino
board = zeroUSB
;lib_deps = cmaglie/FlashStorage @ ^1.0.0
;build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11 -DUSE_SPI_EEPROM
build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11
upload_protocol = sam-ba
;SAME51
[env:same51]
platform = atmelsam
framework = arduino
board = adafruit_feather_m4_can
;lib_deps = cmaglie/FlashStorage @ ^1.0.0
;build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11 -DUSE_SPI_EEPROM
build_flags = -DUSE_LIBDIVIDE -fpermissive -std=gnu++11
upload_protocol = sam-ba
2019-12-14 14:55:46 -08:00
[env:custom_monitor_speedrate]
monitor_speed = 115200
2017-02-06 01:56:46 -08:00
[platformio]
src_dir=speeduino
default_envs = megaatmega2560
; local.ini is ignored via .gitignore
; This allows developers to make private/local PIO configuration changes without
; triggering Git changes in their dev tooling (E.g. VS Code)
extra_configs = local.ini
2017-02-07 20:40:44 -08:00
;The following lines are for testing / experimentation only. Comment the line above to try them out
;default_envs = black_F407VE
;default_envs = teensy35
;default_envs = teensy40
2017-02-07 20:40:44 -08:00
;env_default = LaunchPad_tm4c1294ncpdt
;env_default = genericSTM32F103RB
;env_default = bluepill_f103c8
2019-12-14 14:55:46 -08:00
[env:native]
platform = native
build_flags = -DUSE_LIBDIVIDE -std=gnu++11
debug_build_flags = -std=gnu++11 -O0 -g3
test_ignore = test_misc2, test_misc, test_decoders, test_schedules, test_fuel
debug_test = test_table3d_native
build_type = debug