From 098cd7ff5a8b61641ae96db6188d33cee5a6add2 Mon Sep 17 00:00:00 2001 From: Alexander Date: Tue, 12 Dec 2017 13:03:01 +0300 Subject: [PATCH 1/4] Endstop Trigger FIX Change triggering of the endstop by the front. It is necessary when the endstop are normally closed, to the rising edge. Also compatibility with the falling front is maintained. --- grbl/limits.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/grbl/limits.c b/grbl/limits.c index 3bd1c44b..b226ecf3 100644 --- a/grbl/limits.c +++ b/grbl/limits.c @@ -69,9 +69,11 @@ void limits_init() GPIO_EXTILineConfig(GPIO_LIMIT_PORT, Z_LIMIT_BIT); EXTI_InitTypeDef EXTI_InitStructure; - EXTI_InitStructure.EXTI_Line = LIMIT_MASK; // - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //Interrupt mode, optional values for the interrupt EXTI_Mode_Interrupt and event EXTI_Mode_Event. - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //Trigger mode, can be a falling edge trigger EXTI_Trigger_Falling, the rising edge triggered EXTI_Trigger_Rising, or any level (rising edge and falling edge trigger EXTI_Trigger_Rising_Falling) + EXTI_InitStructure.EXTI_Line = LIMIT_MASK; + //Interrupt mode, optional values for the interrupt EXTI_Mode_Interrupt and event EXTI_Mode_Event. + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; + //Trigger mode, can be a falling edge trigger EXTI_Trigger_Falling, the rising edge triggered EXTI_Trigger_Rising, or any level (rising edge and falling edge trigger EXTI_Trigger_Rising_Falling) + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure); From 222e043b384b27504329b8e7c658f2d2b8033f31 Mon Sep 17 00:00:00 2001 From: Alexander Date: Wed, 27 Dec 2017 02:30:43 +0300 Subject: [PATCH 2/4] Probe pin invert FIX --- grbl/probe.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grbl/probe.c b/grbl/probe.c index 985d5872..09996a88 100644 --- a/grbl/probe.c +++ b/grbl/probe.c @@ -22,7 +22,7 @@ // Inverts the probe pin state depending on user settings and probing cycle mode. -uint8_t probe_invert_mask; +uint16_t probe_invert_mask; // Probe pin initialization routine. From 8c1da2cd408b5e6ee89237d6da2193afb284e404 Mon Sep 17 00:00:00 2001 From: Christian Rinn Date: Mon, 8 Jan 2018 13:08:53 +0100 Subject: [PATCH 3/4] fix build directory and readd linker script --- Makefile | 4 +- STM32F103C8T6.ld | 132 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+), 2 deletions(-) create mode 100644 STM32F103C8T6.ld diff --git a/Makefile b/Makefile index 78dc6c1b..4aac2aa5 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ endif # Find first cross compilation tools -XTOOLS_DIR = $(abspath $(shell dirname `${WHICH} arm-none-eabi-gcc`)/..) +XTOOLS_DIR ?= $(abspath $(shell dirname `${WHICH} arm-none-eabi-gcc`)/..) # Set tool & Lib paths X_LIBC_DIR = $(XTOOLS_DIR)/arm-none-eabi/lib/armv7e-m/fpu @@ -21,7 +21,7 @@ X_AR = $(XTOOLS_DIR)/bin/arm-none-eabi-ar X_LD = $(XTOOLS_DIR)/bin/arm-none-eabi-ld X_GDB = $(XTOOLS_DIR)/bin/arm-none-eabi-gdb -OUT_DIR = debug +OUT_DIR = build OUTPUT = grbl-stm32 diff --git a/STM32F103C8T6.ld b/STM32F103C8T6.ld new file mode 100644 index 00000000..e352167d --- /dev/null +++ b/STM32F103C8T6.ld @@ -0,0 +1,132 @@ +OUTPUT_FORMAT ("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") +/* Internal Memory Map*/ +MEMORY +{ + rom (rx) : ORIGIN = 0x08000000, LENGTH = 0x00020000 + ram (rwx) : ORIGIN = 0x20000000, LENGTH = 0x00005000 +} + +_eram = 0x20000000 + 0x00005000; +SECTIONS +{ + .text : + { + KEEP(*(.isr_vector)) + *(.text*) + + KEEP(*(.init)) + KEEP(*(.fini)) + + /* .ctors */ + *crtbegin.o(.ctors) + *crtbegin?.o(.ctors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .ctors) + *(SORT(.ctors.*)) + *(.ctors) + + /* .dtors */ + *crtbegin.o(.dtors) + *crtbegin?.o(.dtors) + *(EXCLUDE_FILE(*crtend?.o *crtend.o) .dtors) + *(SORT(.dtors.*)) + *(.dtors) + + *(.rodata*) + + KEEP(*(.eh_fram e*)) + } > rom + + .ARM.extab : + { + *(.ARM.extab* .gnu.linkonce.armextab.*) + } > rom + + __exidx_start = .; + .ARM.exidx : + { + *(.ARM.exidx* .gnu.linkonce.armexidx.*) + } > rom + __exidx_end = .; + __etext = .; + + /* _sidata is used in coide startup code */ + _sidata = __etext; + + .data : AT (__etext) + { + __data_start__ = .; + + /* _sdata is used in coide startup code */ + _sdata = __data_start__; + + *(vtable) + *(.data*) + + . = ALIGN(4); + /* preinit data */ + PROVIDE_HIDDEN (__preinit_array_start = .); + KEEP(*(.preinit_array)) + PROVIDE_HIDDEN (__preinit_array_end = .); + + . = ALIGN(4); + /* init data */ + PROVIDE_HIDDEN (__init_array_start = .); + KEEP(*(SORT(.init_array.*))) + KEEP(*(.init_array)) + PROVIDE_HIDDEN (__init_array_end = .); + + . = ALIGN(4); + /* finit data */ + PROVIDE_HIDDEN (__fini_array_start = .); + KEEP(*(SORT(.fini_array.*))) + KEEP(*(.fini_array)) + PROVIDE_HIDDEN (__fini_array_end = .); + + KEEP(*(.jcr*)) + . = ALIGN(4); + /* All data end */ + __data_end__ = .; + + /* _edata is used in coide startup code */ + _edata = __data_end__; + } > ram + + .bss : + { + . = ALIGN(4); + __bss_start__ = .; + _sbss = __bss_start__; + *(.bss*) + *(COMMON) + . = ALIGN(4); + __bss_end__ = .; + _ebss = __bss_end__; + } > ram + + .heap (COPY): + { + __end__ = .; + _end = __end__; + end = __end__; + *(.heap*) + __HeapLimit = .; + } > ram + + /* .stack_dummy section doesn't contains any symbols. It is only + * used for linker to calculate size of stack sections, and assign + * values to stack symbols later */ + .co_stack (NOLOAD): + { + . = ALIGN(8); + *(.co_stack .co_stack.*) + } > ram + + /* Set stack top to end of ram , and stack limit move down by + * size of stack_dummy section */ + __StackTop = ORIGIN(ram ) + LENGTH(ram ); + __StackLimit = __StackTop - SIZEOF(.co_stack); + PROVIDE(__stack = __StackTop); + + /* Check if data + heap + stack exceeds ram limit */ + ASSERT(__StackLimit >= __HeapLimit, "region ram overflowed with stack") +} From 01f209a92daaa98ad42718db22629e167ad2bac5 Mon Sep 17 00:00:00 2001 From: ChristianRinn Date: Thu, 15 Feb 2018 23:00:58 +0100 Subject: [PATCH 4/4] Revert "Endstop Trigger FIX" --- grbl/limits.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/grbl/limits.c b/grbl/limits.c index b226ecf3..3bd1c44b 100644 --- a/grbl/limits.c +++ b/grbl/limits.c @@ -69,11 +69,9 @@ void limits_init() GPIO_EXTILineConfig(GPIO_LIMIT_PORT, Z_LIMIT_BIT); EXTI_InitTypeDef EXTI_InitStructure; - EXTI_InitStructure.EXTI_Line = LIMIT_MASK; - //Interrupt mode, optional values for the interrupt EXTI_Mode_Interrupt and event EXTI_Mode_Event. - EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; - //Trigger mode, can be a falling edge trigger EXTI_Trigger_Falling, the rising edge triggered EXTI_Trigger_Rising, or any level (rising edge and falling edge trigger EXTI_Trigger_Rising_Falling) - EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling; + EXTI_InitStructure.EXTI_Line = LIMIT_MASK; // + EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt; //Interrupt mode, optional values for the interrupt EXTI_Mode_Interrupt and event EXTI_Mode_Event. + EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling; //Trigger mode, can be a falling edge trigger EXTI_Trigger_Falling, the rising edge triggered EXTI_Trigger_Rising, or any level (rising edge and falling edge trigger EXTI_Trigger_Rising_Falling) EXTI_InitStructure.EXTI_LineCmd = ENABLE; EXTI_Init(&EXTI_InitStructure);