From 0ace1278679b01b5cab7449e2247274265bb8eaf Mon Sep 17 00:00:00 2001 From: the-snork Date: Sat, 4 Nov 2023 20:49:19 +0100 Subject: [PATCH 1/2] sdcc + clean make file --- Makefile | 54 +++++++++++++++++++++++++---------------------------- src/flash.c | 6 +++--- src/flash.h | 4 ++-- src/hal.c | 14 +++++++------- src/hal.h | 14 +++++++------- src/main.c | 18 +++++++++--------- src/usb.c | 34 ++++++++++++++++----------------- src/usb.h | 12 ++++++------ 8 files changed, 76 insertions(+), 80 deletions(-) diff --git a/Makefile b/Makefile index b68b8e2..3187943 100644 --- a/Makefile +++ b/Makefile @@ -20,6 +20,10 @@ ifdef DEBUG CFLAGS += --debug endif +CHRONOS_FLAGS = -DRFCAT_CHRONOS +DONS_FLAGS = -DRFCAT_DONSDONGLE +YS1_FLAGS = -DRFCAT_YARDSTICKONE + SRC = \ src/main.c \ src/usb.c \ @@ -30,13 +34,9 @@ SRC = \ ASM_SRC = src/start.asm -ADB = $(SRC:.c=.c.adb) -ASM = $(SRC:.c=.c.asm) -LNK = $(SRC:.c=.c.lnk) -LST = $(SRC:.c=.c.lst) -REL = $(SRC:.c=.c.rel) -RST = $(SRC:.c=.c.rst) -SYM = $(SRC:.c=.c.sym) +CHRONOS_REL = $(SRC:.c=.c.chronos.rel) +DONS_REL = $(SRC:.c=.c.dons.rel) +YS1_REL = $(SRC:.c=.c.ys1.rel) ASM_ADB = $(ASM_SRC:.asm=.adb) ASM_LNK = $(ASM_SRC:.asm=.lnk) @@ -45,45 +45,41 @@ ASM_REL = $(ASM_SRC:.asm=.rel) ASM_RST = $(ASM_SRC:.asm=.rst) ASM_SYM = $(ASM_SRC:.asm=.sym) -PROGS = CCBootloader.hex CCBootloader-rfcat-chronosdongle.hex CCBootloader-rfcat-donsdongle.hex CCBootloader-rfcat-ys1.hex +PROGS = CCBootloader-rfcat-chronosdongle.hex CCBootloader-rfcat-donsdongle.hex CCBootloader-rfcat-ys1.hex PCDB = $(PROGS:.hex=.cdb) PLNK = $(PROGS:.hex=.lnk) +PLK = $(PROGS:.hex=.lk) PMAP = $(PROGS:.hex=.map) PMEM = $(PROGS:.hex=.mem) PAOM = $(PROGS:.hex=) -%.c.rel : %.c - $(CC) -c $(CFLAGS) -o$*.c.rel $< +%.c.chronos.rel : %.c + $(CC) -c $(CFLAGS) $(CHRONOS_FLAGS) -o$*.c.chronos.rel $< + +%.c.dons.rel : %.c + $(CC) -c $(CFLAGS) $(DONS_FLAGS) -o$*.c.dons.rel $< + +%.c.ys1.rel : %.c + $(CC) -c $(CFLAGS) $(YS1_FLAGS) -o$*.c.ys1.rel $< %.rel : %.asm $(AS) -c $(ASFLAGS) $< all: $(PROGS) -CCBootloader.hex: $(REL) $(ASM_REL) Makefile - $(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o CCBootloader.hex $(ASM_REL) $(REL) +CCBootloader-rfcat-chronosdongle.hex: $(CHRONOS_REL) $(ASM_REL) + $(CC) $(LDFLAGS_FLASH) $(CFLAGS) $(CHRONOS_FLAGS) -o CCBootloader-rfcat-chronosdongle.hex $(ASM_REL) $(CHRONOS_REL) -CCBootloader-rfcat-chronosdongle.hex: CFLAGS += -DRFCAT -DRFCAT_CHRONOS -CCBootloader-rfcat-chronosdongle.hex: $(REL) $(ASM_REL) Makefile - $(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o CCBootloader-rfcat-chronosdongle.hex $(ASM_REL) $(REL) +CCBootloader-rfcat-donsdongle.hex: $(DONS_REL) $(ASM_REL) + $(CC) $(LDFLAGS_FLASH) $(CFLAGS) $(DONS_FLAGS) -o CCBootloader-rfcat-donsdongle.hex $(ASM_REL) $(DONS_REL) -CCBootloader-rfcat-donsdongle.hex: CFLAGS += -DRFCAT -DRFCAT_DONSDONGLE -CCBootloader-rfcat-donsdongle.hex: $(REL) $(ASM_REL) Makefile - $(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o CCBootloader-rfcat-donsdongle.hex $(ASM_REL) $(REL) - -CCBootloader-rfcat-ys1.hex: CFLAGS += -DRFCAT -DRFCAT_YARDSTICKONE -CCBootloader-rfcat-ys1.hex: $(REL) $(ASM_REL) Makefile - $(CC) $(LDFLAGS_FLASH) $(CFLAGS) -o CCBootloader-rfcat-ys1.hex $(ASM_REL) $(REL) +CCBootloader-rfcat-ys1.hex: $(YS1_REL) $(ASM_REL) + $(CC) $(LDFLAGS_FLASH) $(CFLAGS) $(YS1_FLAGS) -o CCBootloader-rfcat-ys1.hex $(ASM_REL) $(YS1_REL) clean: - rm -f $(ADB) $(ASM) $(LNK) $(LST) $(REL) $(RST) $(SYM) + rm -f src/*.c.* rm -f $(ASM_ADB) $(ASM_LNK) $(ASM_LST) $(ASM_REL) $(ASM_RST) $(ASM_SYM) - rm -f $(PROGS) $(PCDB) $(PLNK) $(PMAP) $(PMEM) $(PAOM) - -install: CCBootloader.hex - goodfet.cc erase - goodfet.cc flash CCBootloader.hex - goodfet.cc verify CCBootloader.hex + rm -f $(PROGS) $(PCDB) $(PLNK) $(PLK) $(PMAP) $(PMEM) $(PAOM) installchronosdongle: CCBootloader-rfcat-chronosdongle.hex goodfet.cc erase diff --git a/src/flash.c b/src/flash.c index 9277494..16759cd 100644 --- a/src/flash.c +++ b/src/flash.c @@ -54,7 +54,7 @@ void flash_erase_page(uint8_t page) { //FCTL &= ~FCTL_ERASE; } -void flash_write_trigger() { +void flash_write_trigger(void) { // Enable flash write. Generates a DMA trigger. Must be aligned on a 2-byte // boundary and is therefore implemented in assembly. @@ -161,11 +161,11 @@ void flash_check_erase_and_write(uint16_t buff[], uint16_t len, uint16_t flash_a flash_write(buff, len, flash_addr); } -void flash_reset() { +void flash_reset(void) { erased_page_flags = 0; } -void flash_erase_all_user() { +void flash_erase_all_user(void) { // Erase all user flash pages uint8_t i; for (i=USER_FIRST_PAGE; i Date: Sat, 4 Nov 2023 20:56:08 +0100 Subject: [PATCH 2/2] forgot to commit --- src/main.c | 21 ++------------------- 1 file changed, 2 insertions(+), 19 deletions(-) diff --git a/src/main.c b/src/main.c index 32acc96..57f8e34 100644 --- a/src/main.c +++ b/src/main.c @@ -83,15 +83,7 @@ void jump_to_user(void) { ljmp #USER_CODE_BASE __endasm; while (1) {} - } else { - #ifdef RFCAT - return; // need to run bootloader! - #else - // Oops, no payload. We're stuck now! - led_on(); - while (1) {} - #endif - } + } } #ifdef TIMER @@ -177,7 +169,6 @@ uint8_t want_bootloader(void) { return 0; */ - #ifdef RFCAT // we use the unused I2S SFRs as semaphores. // this would be safe even if I2S is in use as they should be reconfigured by // user code @@ -185,9 +176,6 @@ uint8_t want_bootloader(void) { return 1; // no thanks return 0; - #else - return 1; - #endif } void bootloader_main (void) @@ -196,7 +184,6 @@ void bootloader_main (void) uint8_t ihx_status; uint16_t read_start_addr, read_len; -#ifdef RFCAT // use I2S SFR to signal that bootloader is present I2SCLKF0= 0xF0; I2SCLKF1= 0x0D; @@ -216,14 +203,10 @@ void bootloader_main (void) if (CC1111YSONE_PIN_DC != GROUNDED && !want_bootloader()) #endif -#else - if (!want_bootloader()) -#endif jump_to_user(); -#ifdef RFCAT + // reset semaphore I2SCLKF2= 0x00; -#endif clock_init();