diff --git a/Makefile b/Makefile
index 8a925f4aa2..46f3ca1b5e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,16 @@
#Derived from Atollic True Studio Makefile by Prof. Greg Egan 2012
-SHELL=cmd
+#SHELL=bash
# System configuration - UNCOMMENT AS DESIRED
+#Code Sourcery current gcc 4.6.x
+#Specify full path below including trailing / to your arm-gcc toolchain unless it's in PATH
+TCHAIN=
+CC = $(TCHAIN)arm-none-eabi-gcc
+OPT = -Os
+OBJCOPY = $(TCHAIN)arm-none-eabi-objcopy
+
#Atollic TrueStudio
#CC = "C:\Program Files (x86)\Atollic\TrueSTUDIO for STMicroelectronics STM32 Lite 2.3.0\ARMTools\bin\arm-atollic-eabi-gcc"
# OBJCOPY NOT PERMITTED IN FREEBY!
@@ -15,22 +22,17 @@ SHELL=cmd
#OBJCOPY = "C:\Program Files (x86)\yagarto\bin\arm-none-eabi-objcopy"
#OPT = -Os
-#Code Sourcery current gcc 4.6.1
-CC = arm-none-eabi-gcc
-OPT = -Os
-OBJCOPY = arm-none-eabi-objcopy
-
RM = rm -rf
# Define output directory
OBJECT_DIR = obj
BIN_DIR = $(OBJECT_DIR)
-LINK_SCRIPT="stm32_flash.ld"
+LINK_SCRIPT=stm32_flash.ld
# Assembler, Compiler and Linker flags and linker script settings
LINKER_FLAGS=-lm -mthumb -mcpu=cortex-m3 -Wl,--gc-sections -T$(LINK_SCRIPT) -static -Wl,-cref "-Wl,-Map=$(BIN_DIR)/baseflight.map" -Wl,--defsym=malloc_getpagesize_P=0x1000
-ASSEMBLER_FLAGS=-c $(OPT) -mcpu=cortex-m3 -mthumb -x assembler-with-cpp -Isrc -Ilib/STM32F10x_StdPeriph_Driver/inc -Ilib/CMSIS\CM3/CoreSupport -Ilib/CMSIS/CM3/DeviceSupport/ST\STM32F10x
-COMPILER_FLAGS=-c -mcpu=cortex-m3 $(OPT) -Wall -ffunction-sections -fdata-sections -mthumb -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -Isrc -Ilib/STM32F10x_StdPeriph_Driver/inc -Ilib/CMSIS\CM3/CoreSupport -Ilib/CMSIS/CM3/DeviceSupport/ST\STM32F10x
+ASSEMBLER_FLAGS=-c $(OPT) -mcpu=cortex-m3 -mthumb -x assembler-with-cpp -Isrc -Ilib/STM32F10x_StdPeriph_Driver/inc -Ilib/CMSIS/CM3/CoreSupport -Ilib/CMSIS/CM3/DeviceSupport/ST/STM32F10x
+COMPILER_FLAGS=-c -mcpu=cortex-m3 $(OPT) -Wall -ffunction-sections -fdata-sections -mthumb -DSTM32F10X_MD -DUSE_STDPERIPH_DRIVER -Isrc -Ilib/STM32F10x_StdPeriph_Driver/inc -Ilib/CMSIS/CM3/CoreSupport -Ilib/CMSIS/CM3/DeviceSupport/ST/STM32F10x
# Define sources and objects
SRC := $(wildcard */*/*/*/*/*/*/*.c) \
@@ -63,17 +65,18 @@ clean:
# $(RM) $(OBJS) "$(BIN_DIR)/baseflight.elf" "$(BIN_DIR)/baseflight.map" "$(BIN_DIR)/src/*.*" "$(BIN_DIR)/lib/*.*"
$(OBJECT_DIR)/main.o: main.c
- @mkdir $(subst /,\,$(dir $@)) 2> NUL || echo off
+ @mkdir -p $(dir $@)
$(CC) $(COMPILER_FLAGS) main.c -o $(OBJECT_DIR)/main.o
$(OBJECT_DIR)/%.o: %.c
- @mkdir $(subst /,\,$(dir $@)) 2> NUL || echo off
+ @mkdir -p $(dir $@)
$(CC) $(COMPILER_FLAGS) $< -o $@
$(OBJECT_DIR)/%.o: %.s
- @mkdir $(subst /,\,$(dir $@)) 2> NUL || echo off
+ @mkdir -p $(dir $@)
$(CC) $(ASSEMBLER_FLAGS) $< -o $@
$(OBJECT_DIR)/%.o: %.S
- @mkdir $(subst /,\,$(dir $@)) 2> NUL || echo off
+ @mkdir -p $(dir $@)
$(CC) $(ASSEMBLER_FLAGS) $< -o $@
+
diff --git a/baseflight.uvopt b/baseflight.uvopt
index fdcefc9ec1..d0f789eddf 100755
--- a/baseflight.uvopt
+++ b/baseflight.uvopt
@@ -495,128 +495,30 @@
0
1
- 1
+ 0
1
0
0
0
0
- 1
- 16
+ 0
+ 0
0
- .\main.c
- main.c
+ .\src\cli.c
+ cli.c
1
- 2
- 5
- 0
- 0
- 26
- 0
- 14
- 38
- 0
- .\board.h
- board.h
-
-
- 1
- 3
- 1
- 0
- 0
- 52
- 0
- 85
- 113
- 0
- .\imu.c
- imu.c
-
-
- 1
- 4
+ 0
1
0
0
0
0
- 660
- 679
+ 0
+ 0
0
- .\mw.c
- mw.c
-
-
- 1
- 5
- 5
- 0
- 0
- 48
- 0
- 72
- 72
- 0
- .\mw.h
- mw.h
-
-
- 1
- 6
- 1
- 0
- 0
- 1
- 0
- 121
- 159
- 0
- .\sensors.c
- sensors.c
-
-
- 1
- 7
- 1
- 0
- 0
- 0
- 0
- 268
- 268
- 0
- .\mixer.c
- mixer.c
-
-
- 1
- 8
- 1
- 0
- 0
- 0
- 0
- 12
- 25
- 0
- .\serial.c
- serial.c
-
-
- 1
- 9
- 1
- 0
- 0
- 15
- 0
- 109
- 122
- 0
- .\config.c
+ .\src\config.c
config.c
@@ -625,13 +527,111 @@
1
0
0
- 47
+ 0
0
- 58
- 90
+ 0
+ 0
0
- .\cli.c
- cli.c
+ .\src\imu.c
+ imu.c
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\main.c
+ main.c
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\mixer.c
+ mixer.c
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\mw.c
+ mw.c
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\sensors.c
+ sensors.c
+
+
+ 1
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\serial.c
+ serial.c
+
+
+ 1
+ 0
+ 5
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\board.h
+ board.h
+
+
+ 1
+ 0
+ 5
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\mw.h
+ mw.h
@@ -642,49 +642,21 @@
0
2
- 10
+ 0
1
0
0
0
0
- 122
- 131
- 0
- .\drv_i2c.c
- drv_i2c.c
-
-
- 2
- 11
- 1
- 0
- 0
- 8
- 0
0
0
0
- .\drv_pwm.c
- drv_pwm.c
-
-
- 2
- 12
- 1
- 0
- 0
- 6
- 0
- 0
- 0
- 0
- .\drv_adc.c
+ .\src\drv_adc.c
drv_adc.c
2
- 13
+ 0
1
0
0
@@ -693,84 +665,112 @@
0
0
0
- .\drv_bmp085.c
- drv_bmp085.c
-
-
- 2
- 14
- 1
- 0
- 0
- 0
- 0
- 0
- 0
- 0
- .\drv_adxl345.c
+ .\src\drv_adxl345.c
drv_adxl345.c
2
- 15
- 1
- 0
- 0
- 39
- 0
- 0
- 0
- 0
- .\drv_mpu3050.c
- drv_mpu3050.c
-
-
- 2
- 16
+ 0
1
0
0
0
0
- 110
- 144
+ 0
+ 0
0
- .\drv_uart.c
- drv_uart.c
+ .\src\drv_bmp085.c
+ drv_bmp085.c
2
- 17
+ 0
1
0
0
- 16
- 0
- 142
- 159
- 0
- .\drv_system.c
- drv_system.c
-
-
- 2
- 18
- 1
- 0
- 0
- 22
+ 0
0
0
0
0
- .\drv_hmc5883l.c
+ .\src\drv_hmc5883l.c
drv_hmc5883l.c
+
+ 2
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\drv_i2c.c
+ drv_i2c.c
+
+
+ 2
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\drv_mpu3050.c
+ drv_mpu3050.c
+
+
+ 2
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\drv_pwm.c
+ drv_pwm.c
+
+
+ 2
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\drv_system.c
+ drv_system.c
+
+
+ 2
+ 0
+ 1
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ 0
+ .\src\drv_uart.c
+ drv_uart.c
+
System
- 0
+ 1
0
0
@@ -943,16 +943,16 @@
3
- 31
+ 0
2
0
0
0
0
- 133
- 150
+ 0
+ 0
0
- .\startup_stm32f10x_md.s
+ .\src\baseflight_startups\startup_stm32f10x_md.s
startup_stm32f10x_md.s
diff --git a/baseflight.uvproj b/baseflight.uvproj
index a550dc3071..c895db4267 100755
--- a/baseflight.uvproj
+++ b/baseflight.uvproj
@@ -387,104 +387,104 @@
App
- main.c
+ cli.c
1
- .\main.c
-
-
- board.h
- 5
- .\board.h
-
-
- imu.c
- 1
- .\imu.c
-
-
- mw.c
- 1
- .\mw.c
-
-
- mw.h
- 5
- .\mw.h
-
-
- sensors.c
- 1
- .\sensors.c
-
-
- mixer.c
- 1
- .\mixer.c
-
-
- serial.c
- 1
- .\serial.c
+ .\src\cli.c
config.c
1
- .\config.c
+ .\src\config.c
- cli.c
+ imu.c
1
- .\cli.c
+ .\src\imu.c
+
+
+ main.c
+ 1
+ .\src\main.c
+
+
+ mixer.c
+ 1
+ .\src\mixer.c
+
+
+ mw.c
+ 1
+ .\src\mw.c
+
+
+ sensors.c
+ 1
+ .\src\sensors.c
+
+
+ serial.c
+ 1
+ .\src\serial.c
+
+
+ board.h
+ 5
+ .\src\board.h
+
+
+ mw.h
+ 5
+ .\src\mw.h
Drivers
-
- drv_i2c.c
- 1
- .\drv_i2c.c
-
-
- drv_pwm.c
- 1
- .\drv_pwm.c
-
drv_adc.c
1
- .\drv_adc.c
-
-
- drv_bmp085.c
- 1
- .\drv_bmp085.c
+ .\src\drv_adc.c
drv_adxl345.c
1
- .\drv_adxl345.c
+ .\src\drv_adxl345.c
- drv_mpu3050.c
+ drv_bmp085.c
1
- .\drv_mpu3050.c
-
-
- drv_uart.c
- 1
- .\drv_uart.c
-
-
- drv_system.c
- 1
- .\drv_system.c
+ .\src\drv_bmp085.c
drv_hmc5883l.c
1
- .\drv_hmc5883l.c
+ .\src\drv_hmc5883l.c
+
+
+ drv_i2c.c
+ 1
+ .\src\drv_i2c.c
+
+
+ drv_mpu3050.c
+ 1
+ .\src\drv_mpu3050.c
+
+
+ drv_pwm.c
+ 1
+ .\src\drv_pwm.c
+
+
+ drv_system.c
+ 1
+ .\src\drv_system.c
+
+
+ drv_uart.c
+ 1
+ .\src\drv_uart.c
@@ -554,7 +554,7 @@
startup_stm32f10x_md.s
2
- .\startup_stm32f10x_md.s
+ .\src\baseflight_startups\startup_stm32f10x_md.s
@@ -941,104 +941,104 @@
App
- main.c
+ cli.c
1
- .\main.c
-
-
- board.h
- 5
- .\board.h
-
-
- imu.c
- 1
- .\imu.c
-
-
- mw.c
- 1
- .\mw.c
-
-
- mw.h
- 5
- .\mw.h
-
-
- sensors.c
- 1
- .\sensors.c
-
-
- mixer.c
- 1
- .\mixer.c
-
-
- serial.c
- 1
- .\serial.c
+ .\src\cli.c
config.c
1
- .\config.c
+ .\src\config.c
- cli.c
+ imu.c
1
- .\cli.c
+ .\src\imu.c
+
+
+ main.c
+ 1
+ .\src\main.c
+
+
+ mixer.c
+ 1
+ .\src\mixer.c
+
+
+ mw.c
+ 1
+ .\src\mw.c
+
+
+ sensors.c
+ 1
+ .\src\sensors.c
+
+
+ serial.c
+ 1
+ .\src\serial.c
+
+
+ board.h
+ 5
+ .\src\board.h
+
+
+ mw.h
+ 5
+ .\src\mw.h
Drivers
-
- drv_i2c.c
- 1
- .\drv_i2c.c
-
-
- drv_pwm.c
- 1
- .\drv_pwm.c
-
drv_adc.c
1
- .\drv_adc.c
-
-
- drv_bmp085.c
- 1
- .\drv_bmp085.c
+ .\src\drv_adc.c
drv_adxl345.c
1
- .\drv_adxl345.c
+ .\src\drv_adxl345.c
- drv_mpu3050.c
+ drv_bmp085.c
1
- .\drv_mpu3050.c
-
-
- drv_uart.c
- 1
- .\drv_uart.c
-
-
- drv_system.c
- 1
- .\drv_system.c
+ .\src\drv_bmp085.c
drv_hmc5883l.c
1
- .\drv_hmc5883l.c
+ .\src\drv_hmc5883l.c
+
+
+ drv_i2c.c
+ 1
+ .\src\drv_i2c.c
+
+
+ drv_mpu3050.c
+ 1
+ .\src\drv_mpu3050.c
+
+
+ drv_pwm.c
+ 1
+ .\src\drv_pwm.c
+
+
+ drv_system.c
+ 1
+ .\src\drv_system.c
+
+
+ drv_uart.c
+ 1
+ .\src\drv_uart.c
@@ -1108,7 +1108,7 @@
startup_stm32f10x_md.s
2
- .\startup_stm32f10x_md.s
+ .\src\baseflight_startups\startup_stm32f10x_md.s