From 4ebaaa6d7b39e78449011fd09f0deb8f0f3268c2 Mon Sep 17 00:00:00 2001 From: cnlohr <lohr85@gmail.com> Date: Mon, 29 May 2023 07:06:05 -0400 Subject: [PATCH] Fix bootloader demo --- ch32v003fun/ch32v003fun.mk | 9 +++++++-- examples/blink/blink.bin | Bin 496 -> 512 bytes examples/bootload/Makefile | 3 +++ examples/bootload/bootload.c | 6 ++++-- minichlink/minichlink.c | 5 +++++ 5 files changed, 19 insertions(+), 4 deletions(-) diff --git a/ch32v003fun/ch32v003fun.mk b/ch32v003fun/ch32v003fun.mk index 67d4334..ab273c3 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 GIT binary patch literal 512 zcmd02V31${f;vVB2C?x0kU9`RreS)iO@r(S6l6QHU7X3moSlJDc@aB<FuOR%jKi&N z=ITriB8Sb{=QGSWZVr@}ah^Oao#F9awtq3s3*A1>p8Q;$A?7eh=M87W?#FW1|IP5< z&i3*DUoqiycIFx9w~I46FfV6!IO@Ra>^NI_!E-QgJCh*8!DQidaR!)3X+Mm0FfA0! zp5eS*jL|{3mCeC%_Kd?boI$E*95#P0#<2Z6!vkS<b~9xSQ3mA|X$(E?yQWTX=k0s! z$M#QIBNQlBh9dTGKjVVwj0_5s8yPc%8yOjdSs6Hr1y~Jw-HIo;HHfn^07X)th4vN; zgc<;O3c{?dPp1Rv$*rtU8Qqe@wlWAD6l8tuxAh-TrvgMK^|3e`P$k>5N68&W8AKeX i098z6eLU;vKalHK-De!0%+A17JVD%~m_fmSfdK%4UWY^g literal 496 zcmd02cp%0A1aBB27{ta0K<YpMnTF}5HVv{TP>}7&c5x;Lb9M$s<wfia!tCN4GY+@9 znX5B7h#WR&pU*Jk_;xl1CUc+~8RxJ4U+>2_FLe7jd-8L2hM2=3oj05fyC2J4|2M<m zobBWPS~1~tcIFx9&BYlVCbP3UOmQ|BWpp^|aB$X?!&97DowqXyGE9CZ#sK0SO#avh zq8-yN0%;NFgR?|{BuG}|@OB_+{+;2$<Tf@l<rU%#${MK*Jnq}33b^z3J@#Y!r@SH@ zC{~Ih_Hh4nMh1n+jf$DVjf@P!tPC8*0;~qTZp9Pa8pK%{fFiBWLwkz_LJfdC1!2~u z&!z+E$*ro-7~PV?wlWAD6l8tuxAh-Tr#wWa^@%teP$e7NljM%03?hzGfGQ@kKAv^- d-*%weSlwqFp3Kg`RXjo5q?kd$fN=o>0|2<#j_Lpa diff --git a/examples/bootload/Makefile b/examples/bootload/Makefile index dc85199..b9b810c 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 a597594..a3c781e 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 d14c039..4bcae53 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 ); -- GitLab