Start bluepill skeleton and blinky project.
This commit is contained in:
parent
260a37f13d
commit
71eb73967b
|
@ -0,0 +1,52 @@
|
|||
# configurables
|
||||
OBJS := blinky.o
|
||||
TARGET := blinky
|
||||
|
||||
# targets
|
||||
ELF := $(TARGET).elf
|
||||
BIN := $(TARGET).bin
|
||||
|
||||
# toolchain setup
|
||||
ARMTC := arm-none-eabi
|
||||
ARMCC := $(ARMTC)-gcc
|
||||
CC := $(ARMCC)
|
||||
LD := $(ARMCC)
|
||||
ARMSIZE := $(ARMTC)-size
|
||||
OBJCOPY := $(ARMTC)-objcopy
|
||||
|
||||
# compiler options
|
||||
CPUFLAGS := -mcpu=cortex-m3 -mthumb
|
||||
CFLAGS := -Wall -Wextra -Os -MD $(CPUFLAGS)
|
||||
LDFLAGS := $(CPUFLAGS) -nostartfiles -Wl,-T,bluepill.ld
|
||||
LDLIBS := -lc -lnosys
|
||||
|
||||
# programmer options
|
||||
STARTMEM := 0x8000000
|
||||
|
||||
# targets
|
||||
|
||||
.PHONY: all
|
||||
all: $(BIN)
|
||||
|
||||
$(ELF): $(OBJS)
|
||||
$(ARMCC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
||||
$(ARMSIZE) -A $@
|
||||
|
||||
$(BIN): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
.PHONY: flash
|
||||
flash: $(BIN)
|
||||
st-flash write $(BIN) $(STARTMEM)
|
||||
|
||||
.PHONY: erase
|
||||
erase:
|
||||
st-flash erase
|
||||
|
||||
.PHONY: install
|
||||
install: erase flash
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f *.o *.bin *.elf *.d *.map
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
/* based on example from https://github.com/satoshinm/pill_blink */
|
||||
|
||||
static inline void
|
||||
delay(unsigned long ms)
|
||||
{
|
||||
for (unsigned long i = 0; i < ms; ++i) __asm__("nop");
|
||||
}
|
||||
|
||||
static inline void
|
||||
led_off() {
|
||||
(*(volatile unsigned int *)(0x40011010)) = (1 << 13);
|
||||
}
|
||||
|
||||
static inline void
|
||||
led_on() {
|
||||
(*(volatile unsigned int *)(0x40011014)) = (1 << 13);
|
||||
}
|
||||
|
||||
void __attribute__ ((weak, naked)) reset_handler(void) {
|
||||
(*(volatile unsigned int *)(0x40021018)) |= (1 << 4);
|
||||
|
||||
(*(volatile unsigned int *)(0x40011004)) |= (0x00 << (((13 - 8) * 4) + 2));
|
||||
(*(volatile unsigned int *)(0x40011004)) |= (0x02 << ((13 - 8) * 4));
|
||||
|
||||
while(1) {
|
||||
led_off();
|
||||
delay(1000000);
|
||||
led_on();
|
||||
delay(100000);
|
||||
led_off();
|
||||
delay(100000);
|
||||
led_on();
|
||||
delay(100000);
|
||||
}
|
||||
}
|
||||
|
||||
__attribute__ ((section(".vectors")))
|
||||
struct {
|
||||
unsigned int *initial_sp_value;
|
||||
void (*reset)(void);
|
||||
void (*nmi)(void);
|
||||
void (*hard_fault)(void);
|
||||
void (*memory_manage_fault)(void);
|
||||
void (*bus_fault)(void);
|
||||
void (*usage_fault)(void);
|
||||
void (*reserved_x001c[4])(void);
|
||||
void (*sv_call)(void);
|
||||
void (*debug_monitor)(void);
|
||||
void (*reserved_x0034)(void);
|
||||
void (*pend_sv)(void);
|
||||
void (*systick)(void);
|
||||
void (*irq[68])(void);
|
||||
} vector_table = {
|
||||
.reset = reset_handler,
|
||||
};
|
|
@ -0,0 +1,19 @@
|
|||
/* from https://github.com/satoshinm/pill_blink/ */
|
||||
|
||||
MEMORY
|
||||
{
|
||||
rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K
|
||||
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
|
||||
}
|
||||
|
||||
EXTERN(vector_table);
|
||||
ENTRY(reset_handler);
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.vectors)
|
||||
*(.text*)
|
||||
. = ALIGN(4);
|
||||
} >rom
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
BOARD:
|
||||
|
||||
| |
|
||||
+-+-+-+-+-+
|
||||
| | | |
|
||||
4 3 2 1
|
||||
|
||||
1: ground (black)
|
||||
2: SWCLK (white)
|
||||
3: SWDIO (grey)
|
||||
4: 3V3 (purple)
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
# configurables
|
||||
OBJS :=
|
||||
TARGET :=
|
||||
|
||||
# targets
|
||||
ELF := $(TARGET).elf
|
||||
BIN := $(TARGET).bin
|
||||
|
||||
# toolchain setup
|
||||
ARMTC := arm-none-eabi
|
||||
ARMCC := $(ARMTC)-gcc
|
||||
CC := $(ARMCC)
|
||||
LD := $(ARMCC)
|
||||
ARMSIZE := $(ARMTC)-size
|
||||
OBJCOPY := $(ARMTC)-objcopy
|
||||
|
||||
# compiler options
|
||||
CPUFLAGS := -mcpu=cortex-m3 -mthumb
|
||||
CFLAGS := -Wall -Wextra -Os -MD $(CPUFLAGS)
|
||||
LDFLAGS := $(CPUFLAGS) -nostartfiles -Wl,-T,bluepill.ld
|
||||
LDLIBS := -lc -lnosys
|
||||
|
||||
# programmer options
|
||||
STARTMEM := 0x8000000
|
||||
|
||||
# targets
|
||||
|
||||
.PHONY: all
|
||||
all: $(BIN)
|
||||
|
||||
$(ELF): $(OBJS)
|
||||
$(ARMCC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
|
||||
$(ARMSIZE) -A $@
|
||||
|
||||
$(BIN): $(ELF)
|
||||
$(OBJCOPY) -O binary $< $@
|
||||
|
||||
.PHONY: flash
|
||||
flash: $(BIN)
|
||||
st-flash write $(BIN) $(STARTMEM)
|
||||
|
||||
.PHONY: erase
|
||||
erase:
|
||||
st-flash erase
|
||||
|
||||
.PHONY: install
|
||||
install: erase flash
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
rm -f *.o *.bin *.elf *.d *.map
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# from https://github.com/satoshinm/pill_blink/
|
||||
|
||||
MEMORY
|
||||
{
|
||||
rom (rx) : ORIGIN = 0x08000000, LENGTH = 128K
|
||||
ram (rwx) : ORIGIN = 0x20000000, LENGTH = 20K
|
||||
}
|
||||
|
||||
EXTERN(vector_table);
|
||||
ENTRY(reset_handler);
|
||||
|
||||
SECTIONS
|
||||
{
|
||||
.text : {
|
||||
*(.vectors)
|
||||
*(.text*)
|
||||
. = ALIGN(4);
|
||||
} >rom
|
||||
}
|
Loading…
Reference in New Issue