| 1 | PROJECT=main |
| 2 | BUILD_DIR=../build |
| 3 | DEVICES=lpc1768 |
| 4 | |
| 5 | # BUILD_TYPE can be set to the following values: |
| 6 | # Checked - Optimizations enabled with MRI debug monitor support. (Recommended Type) |
| 7 | # Release - Optimizations enabled. |
| 8 | # Debug - Optimization disabled with MRI debug monitor support. |
| 9 | BUILD_TYPE=Checked |
| 10 | |
| 11 | # Set to 1 to tag each heap allocation with the caller's return address. |
| 12 | # NOTE: Can't be enabled with latest build as not compatible with newlib nano. |
| 13 | HEAP_TAGS=0 |
| 14 | |
| 15 | # Set to 1 configure MPU to disable write buffering and eliminate imprecise bus faults. |
| 16 | WRITE_BUFFER_DISABLE=0 |
| 17 | |
| 18 | # Set to non zero value if you want checks to be enabled which reserve a |
| 19 | # specific amount of space for the stack. The heap's growth will be |
| 20 | # constrained to reserve this much space for the stack and the stack won't be |
| 21 | # able to grow larger than this amount. |
| 22 | STACK_SIZE=3072 |
| 23 | |
| 24 | # Set to 1 to allow MRI debug monitor to take full control of UART0 and use it |
| 25 | # as a dedicated debug channel. If you are using the USB based serial port for |
| 26 | # the console then this should cause you no problems. Set MRI_BREAK_ON_INIT to |
| 27 | # 0 if you don't want to break into GDB at startup. |
| 28 | ENABLE_DEBUG_MONITOR?=0 |
| 29 | |
| 30 | # this is the default UART baud rate used if it is not set in config |
| 31 | # it is also the baud rate used to report any errors found while parsing the config file |
| 32 | DEFAULT_SERIAL_BAUD_RATE?=9600 |
| 33 | |
| 34 | ifeq "$(ENABLE_DEBUG_MONITOR)" "1" |
| 35 | # Can add MRI_UART_BAUD=115200 to next line if GDB fails to connect to MRI. |
| 36 | # Tends to happen on some Linux distros but not Windows and OS X. |
| 37 | MRI_UART=MRI_UART_0 |
| 38 | MRI_BREAK_ON_INIT=1 |
| 39 | MRI_SEMIHOST_STDIO=1 |
| 40 | else |
| 41 | MRI_UART=MRI_UART_0 MRI_UART_SHARE |
| 42 | MRI_BREAK_ON_INIT=0 |
| 43 | MRI_SEMIHOST_STDIO=0 |
| 44 | endif |
| 45 | |
| 46 | # generate a git version string |
| 47 | ifneq "$(OS)" "Windows_NT" |
| 48 | DEFINES += -D__GITVERSIONSTRING__=\"$(shell ./generate-version.sh)\" |
| 49 | else |
| 50 | DEFINES += -D__GITVERSIONSTRING__=\"$(shell generate-version.bat)\" |
| 51 | endif |
| 52 | |
| 53 | # use c++11 features for the checksums and set default baud rate for serial uart |
| 54 | DEFINES += -DCHECKSUM_USE_CPP -DDEFAULT_SERIAL_BAUD_RATE=$(DEFAULT_SERIAL_BAUD_RATE) |
| 55 | |
| 56 | ifneq "$(STEPTICKER_DEBUG_PIN)" "" |
| 57 | # Set a Pin here that toggles on end of move |
| 58 | DEFINES += -DSTEPTICKER_DEBUG_PIN=$(STEPTICKER_DEBUG_PIN) |
| 59 | endif |
| 60 | |
| 61 | # include an optional default set of excludes |
| 62 | # add any modules that you do not want included in the build |
| 63 | # e.g for a CNC machine |
| 64 | #export EXCLUDE_MODULES = tools/laser tools/temperaturecontrol tools/extruder |
| 65 | -include default_excludes.mk |
| 66 | |
| 67 | # override any default excludes by setting NODEFAULTEXCLUDES=1 |
| 68 | ifneq "$(NODEFAULTEXCLUDES)" "1" |
| 69 | # if nothing set in the default_excludes.mk file then handle some default excludes for different builds |
| 70 | |
| 71 | ifeq "$(EXCLUDE_MODULES)" "" |
| 72 | |
| 73 | ifeq "$(CNC)" "1" |
| 74 | # CNC build excludes these |
| 75 | export EXCLUDE_MODULES = tools/filamentdetector tools/scaracal tools/temperaturecontrol tools/temperatureswitch tools/extruder |
| 76 | else |
| 77 | # 3D build excludes these |
| 78 | export EXCLUDE_MODULES = tools/drillingcycles tools/spindle |
| 79 | endif |
| 80 | |
| 81 | endif |
| 82 | endif |
| 83 | |
| 84 | ifneq "$(INCLUDE_MODULE)" "" |
| 85 | export EXCLUDED_MODULES = $(filter-out $(INCLUDE_MODULE),$(EXCLUDE_MODULES)) |
| 86 | else |
| 87 | export EXCLUDED_MODULES = $(EXCLUDE_MODULES) |
| 88 | endif |
| 89 | |
| 90 | ifneq "$(EXCLUDED_MODULES)" "" |
| 91 | $(info **NOTE** Excluding modules $(EXCLUDED_MODULES)) |
| 92 | endif |
| 93 | |
| 94 | ifneq "$(AXIS)" "" |
| 95 | DEFINES += -DMAX_ROBOT_ACTUATORS=$(AXIS) |
| 96 | endif |
| 97 | |
| 98 | # define the number of primary (cartesian) axis must be >= MAX_ROBOT_ACTUATORS |
| 99 | ifneq "$(PAXIS)" "" |
| 100 | DEFINES += -DN_PRIMARY_AXIS=$(PAXIS) |
| 101 | endif |
| 102 | |
| 103 | # set to not compile in any network support |
| 104 | #export NONETWORK = 1 |
| 105 | |
| 106 | include $(BUILD_DIR)/build.mk |
| 107 | |
| 108 | CONSOLE?=/dev/arduino |
| 109 | BAUD?=9600 |
| 110 | |
| 111 | ifneq "$(OS)" "Windows_NT" |
| 112 | COPY=cp |
| 113 | else |
| 114 | COPY=copy |
| 115 | endif |
| 116 | |
| 117 | .PHONY: debug-store flash upload debug console dfu |
| 118 | print-% : ; @echo $* = $($*) |
| 119 | |
| 120 | debug-store: ../LPC1768/$(PROJECT).elf |
| 121 | cd .. && cd LPC1768 && $(COPY) $(PROJECT).elf $(PROJECT)_lastupload.elf |
| 122 | |
| 123 | flash: ../LPC1768/$(PROJECT).hex debug-store |
| 124 | lpc21isp $< $(CONSOLE) 115200 12000 |
| 125 | |
| 126 | dfu: ../LPC1768/$(PROJECT).bin |
| 127 | dfu-util -D $< -R |
| 128 | |
| 129 | upload: ../LPC1768/$(PROJECT).bin debug-store |
| 130 | dfu-util -R -d 1d50:6015 -D $< |
| 131 | |
| 132 | debug: ../LPC1768/$(PROJECT)_lastupload.elf |
| 133 | arm-none-eabi-gdb $< -ex "set target-charset ASCII" -ex "set remotelogfile mri.log" -ex "target remote $(CONSOLE)" |
| 134 | |
| 135 | console: |
| 136 | stty raw ignbrk -echo $(BAUD) < $(CONSOLE) |
| 137 | ( cat <&3 & cat >&3 ; kill %% ) 3<>$(CONSOLE) |