diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk index 67d4334a08bfc40e56690bc31b3e238fa5c85c9f..ab273c366f2ee6c061aecbe87f81059f4bfef81a 100644 --- a/ch32v003fun/ch32v003fun.mk +++ b/ch32v003fun/ch32v003fun.mk @@ -15,8 +15,11 @@ CFLAGS+= \ -nostdlib \ -I. -Wall -LDFLAGS+=-T $(CH32V003FUN)/ch32v003fun.ld -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc +LINKER_SCRIPT?=$(CH32V003FUN)/ch32v003fun.ld +LDFLAGS+=-T $(LINKER_SCRIPT) -Wl,--gc-sections -L$(CH32V003FUN)/../misc -lgcc + +WRITE_SECTION?=flash SYSTEM_C?=$(CH32V003FUN)/ch32v003fun.c TARGET_EXT?=c @@ -53,9 +56,11 @@ clangd : clangd_clean : rm -f compile_commands.json +FLASH_COMMAND?=$(MINICHLINK)/minichlink -w $< $(WRITE_SECTION) -b + cv_flash : $(TARGET).bin make -C $(MINICHLINK) all - $(MINICHLINK)/minichlink -w $< flash -b + $(FLASH_COMMAND) cv_clean : rm -rf $(TARGET).elf $(TARGET).bin $(TARGET).hex $(TARGET).lst $(TARGET).map $(TARGET).hex || true diff --git a/examples/blink/blink.bin b/examples/blink/blink.bin index eb40bbd2f9458454bc76c9c2604a2d1fa3e077a5..9d2f625331af46afe752e4c674ea3ca6a67b5f49 100755 Binary files a/examples/blink/blink.bin and b/examples/blink/blink.bin differ diff --git a/examples/bootload/Makefile b/examples/bootload/Makefile index dc85199fa0bbfef6e06393db5dc3213810bc88e5..b9b810c429d4f063e22a81da2c367d2a3abbddf2 100644 --- a/examples/bootload/Makefile +++ b/examples/bootload/Makefile @@ -1,6 +1,9 @@ all : flash TARGET:=bootload +LINKER_SCRIPT:=../../ch32v003fun/ch32v003fun-bootloader.ld +WRITE_SECTION:=bootloader +FLASH_COMMAND:=../../minichlink/minichlink -a -U -w $(TARGET).bin $(WRITE_SECTION) -B include ../../ch32v003fun/ch32v003fun.mk diff --git a/examples/bootload/bootload.c b/examples/bootload/bootload.c index a5975940f73027cf267f591b70fca7ff582b05f0..a3c781e69ef5bee6ff64dc581728f39343c5d5c1 100644 --- a/examples/bootload/bootload.c +++ b/examples/bootload/bootload.c @@ -14,8 +14,10 @@ void InterruptVector() { asm volatile( "\n\ .align 2\n\ + .option push;\n\ .option norvc;\n\ - j handle_reset"); + j handle_reset\n\ + .option pop"); } uint32_t count; @@ -40,7 +42,7 @@ int main() // GPIO C0 Push-Pull, 10MHz Output GPIOC->CFGLR &= ~(0xf<<(4*0)); - GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*4); + GPIOC->CFGLR |= (GPIO_Speed_10MHz | GPIO_CNF_OUT_PP)<<(4*0); static const uint32_t marker[] = { 0xaaaaaaaa }; count = marker[0]; diff --git a/minichlink/minichlink.c b/minichlink/minichlink.c index d14c0393f72a9d0d21c335b7b2e8d62dcbe8bc54..4bcae53678cb9d3b4f4c1e04d6ad414e55d35614 100644 --- a/minichlink/minichlink.c +++ b/minichlink/minichlink.c @@ -462,6 +462,11 @@ keep_going: else { FILE * f = fopen( fname, "rb" ); + if( !f ) + { + fprintf( stderr, "Error: Could not open %s\n", fname ); + return -55; + } fseek( f, 0, SEEK_END ); len = ftell( f ); fseek( f, 0, SEEK_SET );