diff --git a/drivers/0x01_uart_cbm/Makefile b/drivers/0x01_uart_cbm/Makefile index d64d0d4..1ec6ba0 100644 --- a/drivers/0x01_uart_cbm/Makefile +++ b/drivers/0x01_uart_cbm/Makefile @@ -6,6 +6,15 @@ # Compiles, links, and generates UF2 firmware for the RP2350. # ------------------------------------------------------------------------------ +# OS detection +ifeq ($(OS),Windows_NT) + MKDIR = if not exist $(subst /,\\,$(BUILD_DIR)) mkdir $(subst /,\\,$(BUILD_DIR)) + RM = if exist $(subst /,\\,$(BUILD_DIR)) rmdir /s /q $(subst /,\\,$(BUILD_DIR)) +else + MKDIR = mkdir -p $(BUILD_DIR) + RM = rm -rf $(BUILD_DIR) +endif + # Toolchain CC = arm-none-eabi-gcc OBJCOPY = arm-none-eabi-objcopy @@ -46,9 +55,9 @@ OBJS = $(patsubst $(SRC_DIR)/%.c,$(BUILD_DIR)/%.o,$(SRCS)) # Rules .PHONY: all clean flash -all: $(BUILD_DIR)/$(TARGET).uf2 +all: $(BUILD_DIR)/$(TARGET).bin @echo "===================================" - @echo "SUCCESS! Created $(TARGET).bin and $(TARGET).uf2" + @echo "SUCCESS! Created $(TARGET).elf and $(TARGET).bin" @echo "===================================" $(BUILD_DIR)/%.o: $(SRC_DIR)/%.c | $(BUILD_DIR) @@ -61,14 +70,12 @@ $(BUILD_DIR)/$(TARGET).elf: $(OBJS) $(BUILD_DIR)/$(TARGET).bin: $(BUILD_DIR)/$(TARGET).elf $(OBJCOPY) -O binary $< $@ -$(BUILD_DIR)/$(TARGET).uf2: $(BUILD_DIR)/$(TARGET).bin - python3 uf2conv.py -b 0x10000000 -f 0xe48bff59 -o $@ $< $(BUILD_DIR): - mkdir -p $(BUILD_DIR) + $(MKDIR) clean: - rm -rf $(BUILD_DIR) + $(RM) flash: $(BUILD_DIR)/$(TARGET).elf openocd -f interface/cmsis-dap.cfg -f target/rp2350.cfg \ diff --git a/drivers/0x01_uart_cbm/Src/main.c b/drivers/0x01_uart_cbm/Src/main.c index dff47bb..f9d916d 100644 --- a/drivers/0x01_uart_cbm/Src/main.c +++ b/drivers/0x01_uart_cbm/Src/main.c @@ -32,8 +32,10 @@ int main(void) { uart_puts("UART driver ready (115200 8N1)\r\n"); uart_puts("Type characters to echo them back in UPPERCASE:\r\n"); - while (1) { - if (uart_is_readable()) { + while (1) + { + if (uart_is_readable()) + { char c = uart_getchar(); char upper = uart_to_upper(c); uart_putchar(upper); diff --git a/drivers/0x01_uart_cbm/Src/rp2350_reset.c b/drivers/0x01_uart_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x01_uart_cbm/Src/rp2350_reset.c +++ b/drivers/0x01_uart_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x01_uart_cbm/Src/rp2350_uart.c b/drivers/0x01_uart_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x01_uart_cbm/Src/rp2350_uart.c +++ b/drivers/0x01_uart_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x01_uart_cbm/Src/rp2350_xosc.c b/drivers/0x01_uart_cbm/Src/rp2350_xosc.c index 2051745..a55dcc0 100644 --- a/drivers/0x01_uart_cbm/Src/rp2350_xosc.c +++ b/drivers/0x01_uart_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x01_uart_cbm/uf2conv.py b/drivers/0x01_uart_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x01_uart_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x02_blink_cbm/Src/rp2350_uart.c b/drivers/0x02_blink_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x02_blink_cbm/Src/rp2350_uart.c +++ b/drivers/0x02_blink_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x02_blink_cbm/Src/rp2350_xosc.c b/drivers/0x02_blink_cbm/Src/rp2350_xosc.c index 2051745..a55dcc0 100644 --- a/drivers/0x02_blink_cbm/Src/rp2350_xosc.c +++ b/drivers/0x02_blink_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x02_blink_cbm/uf2conv.py b/drivers/0x02_blink_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x02_blink_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x03_button_cbm/Src/rp2350_uart.c b/drivers/0x03_button_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x03_button_cbm/Src/rp2350_uart.c +++ b/drivers/0x03_button_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x03_button_cbm/Src/rp2350_xosc.c b/drivers/0x03_button_cbm/Src/rp2350_xosc.c index 2051745..a55dcc0 100644 --- a/drivers/0x03_button_cbm/Src/rp2350_xosc.c +++ b/drivers/0x03_button_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x03_button_cbm/uf2conv.py b/drivers/0x03_button_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x03_button_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"= 0; duty -= SWEEP_STEP) { + for (int8_t duty = 100; duty >= 0; duty -= SWEEP_STEP) + { pwm_set_duty((uint8_t)duty); _print_duty((uint8_t)duty); delay_ms(SWEEP_DELAY_MS); @@ -94,7 +96,8 @@ static void _sweep_down(void) int main(void) { uart_puts("PWM initialized: GPIO25\r\n"); - while (1) { + while (1) + { _sweep_up(); _sweep_down(); } diff --git a/drivers/0x04_pwm_cbm/Src/rp2350_pwm.c b/drivers/0x04_pwm_cbm/Src/rp2350_pwm.c index 171f4ec..e729721 100644 --- a/drivers/0x04_pwm_cbm/Src/rp2350_pwm.c +++ b/drivers/0x04_pwm_cbm/Src/rp2350_pwm.c @@ -55,8 +55,7 @@ static void _pwm_clear_reset_bit(void) */ static void _pwm_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_PWM_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_PWM_SHIFT)) == 0) {} } /** diff --git a/drivers/0x04_pwm_cbm/Src/rp2350_reset.c b/drivers/0x04_pwm_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x04_pwm_cbm/Src/rp2350_reset.c +++ b/drivers/0x04_pwm_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x04_pwm_cbm/Src/rp2350_uart.c b/drivers/0x04_pwm_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x04_pwm_cbm/Src/rp2350_uart.c +++ b/drivers/0x04_pwm_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x04_pwm_cbm/Src/rp2350_xosc.c b/drivers/0x04_pwm_cbm/Src/rp2350_xosc.c index 2051745..a55dcc0 100644 --- a/drivers/0x04_pwm_cbm/Src/rp2350_xosc.c +++ b/drivers/0x04_pwm_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x04_pwm_cbm/uf2conv.py b/drivers/0x04_pwm_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x04_pwm_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"= 0; angle -= STEP_DEGREES) { + for (int16_t angle = 180; angle >= 0; angle -= STEP_DEGREES) + { servo_set_angle((uint8_t)angle); _print_angle((uint8_t)angle); delay_ms(STEP_DELAY_MS); @@ -96,7 +98,8 @@ int main(void) { uart_puts("Servo driver initialized on GPIO6\r\n"); uart_puts("Sweeping 0 -> 180 -> 0 degrees\r\n"); - while (1) { + while (1) + { _sweep_up(); _sweep_down(); } diff --git a/drivers/0x05_servo_cbm/Src/rp2350_reset.c b/drivers/0x05_servo_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x05_servo_cbm/Src/rp2350_reset.c +++ b/drivers/0x05_servo_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x05_servo_cbm/Src/rp2350_servo.c b/drivers/0x05_servo_cbm/Src/rp2350_servo.c index efaf0a9..beb07ac 100644 --- a/drivers/0x05_servo_cbm/Src/rp2350_servo.c +++ b/drivers/0x05_servo_cbm/Src/rp2350_servo.c @@ -75,8 +75,7 @@ static void _servo_clear_reset_bit(void) */ static void _servo_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_PWM_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_PWM_SHIFT)) == 0) {} } /** diff --git a/drivers/0x05_servo_cbm/Src/rp2350_uart.c b/drivers/0x05_servo_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x05_servo_cbm/Src/rp2350_uart.c +++ b/drivers/0x05_servo_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x05_servo_cbm/Src/rp2350_xosc.c b/drivers/0x05_servo_cbm/Src/rp2350_xosc.c index 2051745..a55dcc0 100644 --- a/drivers/0x05_servo_cbm/Src/rp2350_xosc.c +++ b/drivers/0x05_servo_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x05_servo_cbm/uf2conv.py b/drivers/0x05_servo_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x05_servo_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"CS |= (1U << ADC_CS_START_ONCE_SHIFT); - while (!(ADC->CS & (1U << ADC_CS_READY_SHIFT)) && timeout > 0U) { + while (!(ADC->CS & (1U << ADC_CS_READY_SHIFT)) && timeout > 0U) + { timeout--; } - if (timeout == 0U) { + if (timeout == 0U) + { return 0U; } return (uint16_t)(ADC->RESULT & 0xFFFU); @@ -126,7 +128,8 @@ void adc_release_reset(void) RESETS->RESET |= (1U << RESETS_RESET_ADC_SHIFT); uint32_t timeout = ADC_READY_TIMEOUT; RESETS->RESET &= ~(1U << RESETS_RESET_ADC_SHIFT); - while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_ADC_SHIFT)) && timeout > 0U) { + while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_ADC_SHIFT)) && timeout > 0U) + { timeout--; } } diff --git a/drivers/0x06_adc_cbm/Src/rp2350_reset.c b/drivers/0x06_adc_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x06_adc_cbm/Src/rp2350_reset.c +++ b/drivers/0x06_adc_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x06_adc_cbm/Src/rp2350_uart.c b/drivers/0x06_adc_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x06_adc_cbm/Src/rp2350_uart.c +++ b/drivers/0x06_adc_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x06_adc_cbm/Src/rp2350_xosc.c b/drivers/0x06_adc_cbm/Src/rp2350_xosc.c index 92eba2f..02afcc3 100644 --- a/drivers/0x06_adc_cbm/Src/rp2350_xosc.c +++ b/drivers/0x06_adc_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x06_adc_cbm/uf2conv.py b/drivers/0x06_adc_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x06_adc_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b" 0x77) { + if (addr < 0x08 || addr > 0x77) + { uart_puts(" "); - } else if (i2c_probe(addr)) { + } else if (i2c_probe(addr)) + { _print_hex8(addr); uart_puts(" "); } else { @@ -135,8 +137,7 @@ void i2c_release_reset(void) { RESETS->RESET |= (1U << RESETS_RESET_I2C1_SHIFT); RESETS->RESET &= ~(1U << RESETS_RESET_I2C1_SHIFT); - while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_I2C1_SHIFT))) { - } + while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_I2C1_SHIFT))) {} } void i2c_init(void) @@ -180,7 +181,8 @@ static void _probe_send_read(void) static bool _probe_wait_response(void) { uint32_t timeout = I2C_TIMEOUT; - while (timeout > 0U) { + while (timeout > 0U) + { if (I2C1->RAW_INTR_STAT & I2C_RAW_INTR_TX_ABRT) return true; if (I2C1->RXFLR) @@ -217,7 +219,8 @@ void i2c_scan(void) { uart_puts("\r\nI2C bus scan:\r\n"); uart_puts(" 0 1 2 3 4 5 6 7 8 9 A B C D E F\r\n"); - for (uint8_t addr = 0; addr < 128; addr++) { + for (uint8_t addr = 0; addr < 128; addr++) + { _print_scan_entry(addr); } } diff --git a/drivers/0x07_i2c_cbm/Src/rp2350_reset.c b/drivers/0x07_i2c_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x07_i2c_cbm/Src/rp2350_reset.c +++ b/drivers/0x07_i2c_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x07_i2c_cbm/Src/rp2350_uart.c b/drivers/0x07_i2c_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x07_i2c_cbm/Src/rp2350_uart.c +++ b/drivers/0x07_i2c_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x07_i2c_cbm/Src/rp2350_xosc.c b/drivers/0x07_i2c_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x07_i2c_cbm/Src/rp2350_xosc.c +++ b/drivers/0x07_i2c_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x07_i2c_cbm/uf2conv.py b/drivers/0x07_i2c_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x07_i2c_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b" 0) { + while (val > 0) + { tmp[i++] = (char)('0' + (val % 10)); val /= 10; } @@ -143,7 +144,8 @@ int main(void) { uint32_t count = 0; _lcd_setup(); - while (1) { + while (1) + { _display_count(count); count++; delay_ms(COUNT_DELAY_MS); diff --git a/drivers/0x08_lcd1602_cbm/Src/rp2350_i2c.c b/drivers/0x08_lcd1602_cbm/Src/rp2350_i2c.c index a663367..595b85e 100644 --- a/drivers/0x08_lcd1602_cbm/Src/rp2350_i2c.c +++ b/drivers/0x08_lcd1602_cbm/Src/rp2350_i2c.c @@ -89,7 +89,8 @@ static void _i2c_config_timing(void) */ static bool _check_abort(void) { - if (I2C1->RAW_INTR_STAT & I2C_RAW_INTR_TX_ABRT) { + if (I2C1->RAW_INTR_STAT & I2C_RAW_INTR_TX_ABRT) + { (void)I2C1->CLR_TX_ABRT; return true; } @@ -102,7 +103,8 @@ static bool _check_abort(void) */ static bool _check_stop(void) { - if (I2C1->RAW_INTR_STAT & I2C_RAW_INTR_STOP_DET) { + if (I2C1->RAW_INTR_STAT & I2C_RAW_INTR_STOP_DET) + { (void)I2C1->CLR_STOP_DET; return true; } @@ -116,7 +118,8 @@ static bool _check_stop(void) static void _i2c_wait_done(void) { uint32_t timeout = I2C_TIMEOUT; - while (timeout > 0U) { + while (timeout > 0U) + { if (_check_abort() || _check_stop()) break; timeout--; @@ -127,8 +130,7 @@ void i2c_release_reset(void) { RESETS->RESET |= (1U << RESETS_RESET_I2C1_SHIFT); RESETS->RESET &= ~(1U << RESETS_RESET_I2C1_SHIFT); - while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_I2C1_SHIFT))) { - } + while (!(RESETS->RESET_DONE & (1U << RESETS_RESET_I2C1_SHIFT))) {} } void i2c_init(void) diff --git a/drivers/0x08_lcd1602_cbm/Src/rp2350_reset.c b/drivers/0x08_lcd1602_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x08_lcd1602_cbm/Src/rp2350_reset.c +++ b/drivers/0x08_lcd1602_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x08_lcd1602_cbm/Src/rp2350_uart.c b/drivers/0x08_lcd1602_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x08_lcd1602_cbm/Src/rp2350_uart.c +++ b/drivers/0x08_lcd1602_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x08_lcd1602_cbm/Src/rp2350_xosc.c b/drivers/0x08_lcd1602_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x08_lcd1602_cbm/Src/rp2350_xosc.c +++ b/drivers/0x08_lcd1602_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x08_lcd1602_cbm/uf2conv.py b/drivers/0x08_lcd1602_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x08_lcd1602_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) {} } /** diff --git a/drivers/0x09_dht11_cbm/Src/rp2350_reset.c b/drivers/0x09_dht11_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x09_dht11_cbm/Src/rp2350_reset.c +++ b/drivers/0x09_dht11_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x09_dht11_cbm/Src/rp2350_uart.c b/drivers/0x09_dht11_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x09_dht11_cbm/Src/rp2350_uart.c +++ b/drivers/0x09_dht11_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x09_dht11_cbm/Src/rp2350_xosc.c b/drivers/0x09_dht11_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x09_dht11_cbm/Src/rp2350_xosc.c +++ b/drivers/0x09_dht11_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x09_dht11_cbm/uf2conv.py b/drivers/0x09_dht11_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x09_dht11_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b" __attribute__((section(".embedded_block"), used)) -const uint8_t picobin_block[] = { +const uint8_t picobin_block[] = +{ 0xD3, 0xDE, 0xFF, 0xFF, 0x42, 0x01, 0x21, 0x10, 0xFF, 0x01, 0x00, 0x00, diff --git a/drivers/0x0a_ir_cbm/Src/main.c b/drivers/0x0a_ir_cbm/Src/main.c index c91a6a2..a6a83c3 100644 --- a/drivers/0x0a_ir_cbm/Src/main.c +++ b/drivers/0x0a_ir_cbm/Src/main.c @@ -111,7 +111,8 @@ int main(void) { int command; _ir_setup(); - while (1) { + while (1) + { command = ir_getkey(); if (command >= 0) _print_command((uint8_t)command); diff --git a/drivers/0x0a_ir_cbm/Src/rp2350_ir.c b/drivers/0x0a_ir_cbm/Src/rp2350_ir.c index 7c07b0f..4e7d5fe 100644 --- a/drivers/0x0a_ir_cbm/Src/rp2350_ir.c +++ b/drivers/0x0a_ir_cbm/Src/rp2350_ir.c @@ -56,7 +56,8 @@ static bool _read_pin(void) static int32_t _wait_for_level(bool level, uint32_t timeout_us) { uint32_t start = _time_us(); - while (_read_pin() != level) { + while (_read_pin() != level) + { if ((_time_us() - start) > timeout_us) return -1; } @@ -174,8 +175,7 @@ static void _timer_clear_reset(void) */ static void _timer_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) {} } /** diff --git a/drivers/0x0a_ir_cbm/Src/rp2350_reset.c b/drivers/0x0a_ir_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x0a_ir_cbm/Src/rp2350_reset.c +++ b/drivers/0x0a_ir_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0a_ir_cbm/Src/rp2350_uart.c b/drivers/0x0a_ir_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0a_ir_cbm/Src/rp2350_uart.c +++ b/drivers/0x0a_ir_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0a_ir_cbm/Src/rp2350_xosc.c b/drivers/0x0a_ir_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0a_ir_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0a_ir_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0a_ir_cbm/Src/vector_table.c b/drivers/0x0a_ir_cbm/Src/vector_table.c index 091894b..96fc150 100644 --- a/drivers/0x0a_ir_cbm/Src/vector_table.c +++ b/drivers/0x0a_ir_cbm/Src/vector_table.c @@ -29,7 +29,8 @@ extern void Reset_Handler(void); typedef void (*vector_func_t)(void); __attribute__((section(".vectors"), used)) -const void *_vectors[2] = { +const void *_vectors[2] = +{ &_stack_top, Reset_Handler }; diff --git a/drivers/0x0a_ir_cbm/uf2conv.py b/drivers/0x0a_ir_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0a_ir_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0b_spi_cbm/Src/rp2350_spi.c b/drivers/0x0b_spi_cbm/Src/rp2350_spi.c index 537e8c5..7ee21ce 100644 --- a/drivers/0x0b_spi_cbm/Src/rp2350_spi.c +++ b/drivers/0x0b_spi_cbm/Src/rp2350_spi.c @@ -47,8 +47,7 @@ static void _spi_clear_reset(void) */ static void _spi_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_SPI0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_SPI0_SHIFT)) == 0) {} } /** @@ -148,8 +147,7 @@ static void _enable_spi(void) */ static void _wait_tx_not_full(void) { - while ((SPI0->SSPSR & SPI_SSPSR_TNF_MASK) == 0) { - } + while ((SPI0->SSPSR & SPI_SSPSR_TNF_MASK) == 0) {} } /** @@ -158,8 +156,7 @@ static void _wait_tx_not_full(void) */ static void _wait_rx_not_empty(void) { - while ((SPI0->SSPSR & SPI_SSPSR_RNE_MASK) == 0) { - } + while ((SPI0->SSPSR & SPI_SSPSR_RNE_MASK) == 0) {} } void spi_release_reset(void) @@ -214,7 +211,8 @@ void spi_cs_deselect(void) void spi_transfer(const uint8_t *tx, uint8_t *rx, uint32_t len) { - for (uint32_t i = 0; i < len; i++) { + for (uint32_t i = 0; i < len; i++) + { _wait_tx_not_full(); SPI0->SSPDR = tx[i]; _wait_rx_not_empty(); diff --git a/drivers/0x0b_spi_cbm/Src/rp2350_uart.c b/drivers/0x0b_spi_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0b_spi_cbm/Src/rp2350_uart.c +++ b/drivers/0x0b_spi_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0b_spi_cbm/Src/rp2350_xosc.c b/drivers/0x0b_spi_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0b_spi_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0b_spi_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0b_spi_cbm/uf2conv.py b/drivers/0x0b_spi_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0b_spi_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b" 0) { + while (value > 0) + { tmp[i++] = '0' + (char)(value % 10); value /= 10; } @@ -110,7 +111,8 @@ static void _print_counter_line(uint32_t sent, uint32_t received) */ static void _core1_main(void) { - while (1) { + while (1) + { uint32_t value = multicore_fifo_pop(); multicore_fifo_push(value + 1); } diff --git a/drivers/0x0c_multicore_cbm/Src/rp2350_multicore.c b/drivers/0x0c_multicore_cbm/Src/rp2350_multicore.c index 3ff0065..ecd4f97 100644 --- a/drivers/0x0c_multicore_cbm/Src/rp2350_multicore.c +++ b/drivers/0x0c_multicore_cbm/Src/rp2350_multicore.c @@ -50,8 +50,7 @@ static void _fifo_drain(void) */ static void _fifo_push_blocking(uint32_t data) { - while (!(SIO[SIO_FIFO_ST_OFFSET] & SIO_FIFO_ST_RDY_MASK)) { - } + while (!(SIO[SIO_FIFO_ST_OFFSET] & SIO_FIFO_ST_RDY_MASK)) {} SIO[SIO_FIFO_WR_OFFSET] = data; __asm__ volatile ("sev"); } @@ -62,8 +61,7 @@ static void _fifo_push_blocking(uint32_t data) */ static uint32_t _fifo_pop_blocking(void) { - while (!(SIO[SIO_FIFO_ST_OFFSET] & SIO_FIFO_ST_VLD_MASK)) { - } + while (!(SIO[SIO_FIFO_ST_OFFSET] & SIO_FIFO_ST_VLD_MASK)) {} return SIO[SIO_FIFO_RD_OFFSET]; } @@ -75,8 +73,7 @@ static void _set_frce_off_proc1(void) { volatile uint32_t *set = (volatile uint32_t *)((uintptr_t)&PSM->FRCE_OFF + ATOMIC_SET_OFFSET); *set = (1U << PSM_FRCE_OFF_PROC1_SHIFT); - while (!(PSM->FRCE_OFF & (1U << PSM_FRCE_OFF_PROC1_SHIFT))) { - } + while (!(PSM->FRCE_OFF & (1U << PSM_FRCE_OFF_PROC1_SHIFT))) {} } /** @@ -107,7 +104,8 @@ static void _reset_core1(void) */ static void _send_handshake_word(uint32_t cmd) { - if (!cmd) { + if (!cmd) + { _fifo_drain(); __asm__ volatile ("sev"); } diff --git a/drivers/0x0c_multicore_cbm/Src/rp2350_reset.c b/drivers/0x0c_multicore_cbm/Src/rp2350_reset.c index b0e18e8..6f09550 100644 --- a/drivers/0x0c_multicore_cbm/Src/rp2350_reset.c +++ b/drivers/0x0c_multicore_cbm/Src/rp2350_reset.c @@ -28,6 +28,5 @@ void reset_init_subsystem(void) value = RESETS->RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0c_multicore_cbm/Src/rp2350_uart.c b/drivers/0x0c_multicore_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0c_multicore_cbm/Src/rp2350_uart.c +++ b/drivers/0x0c_multicore_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0c_multicore_cbm/Src/rp2350_xosc.c b/drivers/0x0c_multicore_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0c_multicore_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0c_multicore_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0c_multicore_cbm/uf2conv.py b/drivers/0x0c_multicore_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0c_multicore_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0d_timer_cbm/Src/rp2350_timer.c b/drivers/0x0d_timer_cbm/Src/rp2350_timer.c index 37c71e1..c210a78 100644 --- a/drivers/0x0d_timer_cbm/Src/rp2350_timer.c +++ b/drivers/0x0d_timer_cbm/Src/rp2350_timer.c @@ -51,8 +51,7 @@ static void _timer_clear_reset_bit(void) */ static void _timer_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_TIMER0_SHIFT)) == 0) {} } /** diff --git a/drivers/0x0d_timer_cbm/Src/rp2350_uart.c b/drivers/0x0d_timer_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0d_timer_cbm/Src/rp2350_uart.c +++ b/drivers/0x0d_timer_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0d_timer_cbm/Src/rp2350_xosc.c b/drivers/0x0d_timer_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0d_timer_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0d_timer_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0d_timer_cbm/Src/vector_table.c b/drivers/0x0d_timer_cbm/Src/vector_table.c index 4989a70..7ec217c 100644 --- a/drivers/0x0d_timer_cbm/Src/vector_table.c +++ b/drivers/0x0d_timer_cbm/Src/vector_table.c @@ -34,8 +34,7 @@ extern void TIMER0_IRQ_0_Handler(void); */ static void _default_handler(void) { - while (1) { - } + while (1) {} } typedef void (*vector_func_t)(void); diff --git a/drivers/0x0d_timer_cbm/uf2conv.py b/drivers/0x0d_timer_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0d_timer_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0e_watchdog_cbm/Src/rp2350_uart.c b/drivers/0x0e_watchdog_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0e_watchdog_cbm/Src/rp2350_uart.c +++ b/drivers/0x0e_watchdog_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0e_watchdog_cbm/Src/rp2350_xosc.c b/drivers/0x0e_watchdog_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0e_watchdog_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0e_watchdog_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0e_watchdog_cbm/uf2conv.py b/drivers/0x0e_watchdog_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0e_watchdog_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b"RESET; value &= ~(1U << RESETS_RESET_IO_BANK0_SHIFT); RESETS->RESET = value; - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_IO_BANK0_SHIFT)) == 0) {} } diff --git a/drivers/0x0f_flash_cbm/Src/rp2350_uart.c b/drivers/0x0f_flash_cbm/Src/rp2350_uart.c index 44e67a9..a24827a 100644 --- a/drivers/0x0f_flash_cbm/Src/rp2350_uart.c +++ b/drivers/0x0f_flash_cbm/Src/rp2350_uart.c @@ -42,8 +42,7 @@ static void _uart_clear_reset_bit(void) */ static void _uart_wait_reset_done(void) { - while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) { - } + while ((RESETS->RESET_DONE & (1U << RESETS_RESET_UART0_SHIFT)) == 0) {} } /** @@ -99,21 +98,20 @@ bool uart_is_readable(void) char uart_getchar(void) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_RXFE_MASK) {} return (char)(UART_BASE[UART_DR_OFFSET] & 0xFF); } void uart_putchar(char c) { - while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) { - } + while (UART_BASE[UART_FR_OFFSET] & UART_FR_TXFF_MASK) {} UART_BASE[UART_DR_OFFSET] = (uint32_t)c; } void uart_puts(const char *str) { - while (*str) { + while (*str) + { uart_putchar(*str++); } } diff --git a/drivers/0x0f_flash_cbm/Src/rp2350_xosc.c b/drivers/0x0f_flash_cbm/Src/rp2350_xosc.c index 3383559..324bf96 100644 --- a/drivers/0x0f_flash_cbm/Src/rp2350_xosc.c +++ b/drivers/0x0f_flash_cbm/Src/rp2350_xosc.c @@ -26,8 +26,7 @@ void xosc_init(void) { XOSC->STARTUP = 0x00C4U; XOSC->CTRL = 0x00FABAA0U; - while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) { - } + while ((XOSC->STATUS & (1U << XOSC_STATUS_STABLE_SHIFT)) == 0) {} } void xosc_enable_peri_clk(void) diff --git a/drivers/0x0f_flash_cbm/uf2conv.py b/drivers/0x0f_flash_cbm/uf2conv.py deleted file mode 100644 index 529dd96..0000000 --- a/drivers/0x0f_flash_cbm/uf2conv.py +++ /dev/null @@ -1,438 +0,0 @@ -#!/usr/bin/env python3 -import sys -import struct -import subprocess -import re -import os -import os.path -import argparse -import json -from time import sleep - - -UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" -UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected -UF2_MAGIC_END = 0x0AB16F30 # Ditto - -INFO_FILE = "/INFO_UF2.TXT" - -appstartaddr = 0x2000 -familyid = 0x0 - - -def is_uf2(buf): - w = struct.unpack(" 476: - assert False, "Invalid UF2 data size at " + ptr - newaddr = hd[3] - if (hd[2] & 0x2000) and (currfamilyid == None): - currfamilyid = hd[7] - if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): - currfamilyid = hd[7] - curraddr = newaddr - if familyid == 0x0 or familyid == hd[7]: - appstartaddr = newaddr - padding = newaddr - curraddr - if padding < 0: - assert False, "Block out of order at " + ptr - if padding > 10 * 1024 * 1024: - assert False, "More than 10M of padding needed at " + ptr - if padding % 4 != 0: - assert False, "Non-word padding size at " + ptr - while padding > 0: - padding -= 4 - outp.append(b"\x00\x00\x00\x00") - if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): - outp.append(block[32 : 32 + datalen]) - curraddr = newaddr + datalen - if hd[2] & 0x2000: - if hd[7] in families_found.keys(): - if families_found[hd[7]] > newaddr: - families_found[hd[7]] = newaddr - else: - families_found[hd[7]] = newaddr - if prev_flag == None: - prev_flag = hd[2] - if prev_flag != hd[2]: - all_flags_same = False - if blockno == (numblocks - 1): - print("--- UF2 File Header Info ---") - families = load_families() - for family_hex in families_found.keys(): - family_short_name = "" - for name, value in families.items(): - if value == family_hex: - family_short_name = name - print( - "Family ID is {:s}, hex value is 0x{:08x}".format( - family_short_name, family_hex - ) - ) - print("Target Address is 0x{:08x}".format(families_found[family_hex])) - if all_flags_same: - print("All block flag values consistent, 0x{:04x}".format(hd[2])) - else: - print("Flags were not all the same") - print("----------------------------") - if len(families_found) > 1 and familyid == 0x0: - outp = [] - appstartaddr = 0x0 - return b"".join(outp) - - -def convert_to_carray(file_content): - outp = "const unsigned long bindata_len = %d;\n" % len(file_content) - outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" - for i in range(len(file_content)): - if i % 16 == 0: - outp += "\n" - outp += "0x%02x, " % file_content[i] - outp += "\n};\n" - return bytes(outp, "utf-8") - - -def convert_to_uf2(file_content): - global familyid - datapadding = b"" - while len(datapadding) < 512 - 256 - 32 - 4: - datapadding += b"\x00\x00\x00\x00" - numblocks = (len(file_content) + 255) // 256 - outp = [] - for blockno in range(numblocks): - ptr = 256 * blockno - chunk = file_content[ptr : ptr + 256] - flags = 0x0 - if familyid: - flags |= 0x2000 - hd = struct.pack( - b" 10*1024*1024: + if padding > 10 * 1024 * 1024: assert False, "More than 10M of padding needed at " + ptr if padding % 4 != 0: assert False, "Non-word padding size at " + ptr @@ -95,7 +97,11 @@ def convert_from_uf2(buf): for name, value in families.items(): if value == family_hex: family_short_name = name - print("Family ID is {:s}, hex value is 0x{:08x}".format(family_short_name,family_hex)) + print( + "Family ID is {:s}, hex value is 0x{:08x}".format( + family_short_name, family_hex + ) + ) print("Target Address is 0x{:08x}".format(families_found[family_hex])) if all_flags_same: print("All block flag values consistent, 0x{:04x}".format(hd[2])) @@ -107,6 +113,7 @@ def convert_from_uf2(buf): appstartaddr = 0x0 return b"".join(outp) + def convert_to_carray(file_content): outp = "const unsigned long bindata_len = %d;\n" % len(file_content) outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" @@ -117,6 +124,7 @@ def convert_to_carray(file_content): outp += "\n};\n" return bytes(outp, "utf-8") + def convert_to_uf2(file_content): global familyid datapadding = b"" @@ -126,13 +134,21 @@ def convert_to_uf2(file_content): outp = [] for blockno in range(numblocks): ptr = 256 * blockno - chunk = file_content[ptr:ptr + 256] + chunk = file_content[ptr : ptr + 256] flags = 0x0 if familyid: flags |= 0x2000 - hd = struct.pack(b"