From 8d8f4c7fafe84ee198f6794ed4b9aa0a0aecdefe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20Th=C3=B6rnblad?= Date: Thu, 13 Mar 2025 14:32:59 +0100 Subject: [PATCH] ch552: Misc. cleanup - Merge Makefile and Makefile.include into Makefile - Format structure - Remove unused variables, targets etc. - Add missing check if it is ok to send data to the FPGA. - Remove 'baud rate calculator.ods' - Update encode_usb_strings.py to generate strings for CdcCtrlInterfaceDesc, CdcDataInterfaceDesc, FidoHidInterfaceDesc, TkeyCtrlInterfaceDesc. Also store generated strings in UTF-16 instead of hex. - Update usb_strings.h to match new encode_usb_strings.py output. - Remove unused struct SetupReqBuf. --- hw/usb_interface/ch552_fw/Makefile | 99 +++++++++++++----- hw/usb_interface/ch552_fw/Makefile.include | 70 ------------- .../ch552_fw/baud rate calculator.ods | Bin 19487 -> 0 bytes .../ch552_fw/encode_usb_strings.py | 66 +++++++----- hw/usb_interface/ch552_fw/include/debug.h | 2 + .../ch552_fw/include/usb_strings.h | 18 ++-- hw/usb_interface/ch552_fw/main.c | 1 - 7 files changed, 126 insertions(+), 130 deletions(-) delete mode 100644 hw/usb_interface/ch552_fw/Makefile.include delete mode 100644 hw/usb_interface/ch552_fw/baud rate calculator.ods diff --git a/hw/usb_interface/ch552_fw/Makefile b/hw/usb_interface/ch552_fw/Makefile index 71d8183..619b4a8 100644 --- a/hw/usb_interface/ch552_fw/Makefile +++ b/hw/usb_interface/ch552_fw/Makefile @@ -1,37 +1,88 @@ -TARGET = usb_device_cdc +####################################################### -CH554_SDCC=~/ch554_sdcc/ -CHPROG=chprog +# Toolchain +CC = sdcc +OBJCOPY = objcopy +PACK_HEX = packihx +CHPROG = chprog -# Adjust the XRAM location and size to leave space for the USB DMA buffers -# Buffer layout in XRAM: -# 0x0000 Ep0Buffer[8] -# 0x0040 Ep1Buffer[8] -# 0x0080 EP2Buffer[2*64] -# -# This takes a total of 256bytes, so there are 768 bytes left. -#XRAM_SIZE = 0x0300 -#XRAM_LOC = 0x0100 +####################################################### -XRAM_SIZE = 0x0400 -XRAM_LOC = 0x0000 +TARGET = usb_device -FREQ_SYS = 16000000 +ROOT_DIR = $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) + +XRAM_SIZE = 0x0400 # 1 KB on-chip xRAM +XRAM_LOC = 0x0000 # xRAM area starts at address 0 in the External Data Address Space +CODE_SIZE = 0x3800 # 14 KB program storage area +FREQ_SYS = 16000000 # 16 MHz system clock + +EXTRA_FLAGS = -DBUILD_CODE + +CFLAGS = \ + -V \ + -mmcs51 \ + --model-small \ + --xram-size $(XRAM_SIZE) \ + --xram-loc $(XRAM_LOC) \ + --code-size $(CODE_SIZE) \ + -I$(ROOT_DIR)include \ + -DFREQ_SYS=$(FREQ_SYS) \ + $(EXTRA_FLAGS) + +LFLAGS = \ + $(CFLAGS) + +C_FILES = \ + main.c \ + include/debug.c \ + include/print.c + +# Create a .rel file for each .c file +RELS = $(C_FILES:.c=.rel) + +%.rel : %.c + $(CC) -c $(CFLAGS) $< usb_strings.h: encode_usb_strings.py ./encode_usb_strings.py -C_FILES = \ - main.c \ - include/debug.c \ - include/print.c +# Note: SDCC will dump all of the temporary files into this one, +# so strip the paths from RELS +# For now, get around this by stripping the paths off of the RELS list. -pre-flash: +$(TARGET).ihx: $(RELS) + $(CC) $(notdir $(RELS)) $(LFLAGS) -o $(TARGET).ihx +$(TARGET).hex: $(TARGET).ihx + $(PACK_HEX) $(TARGET).ihx > $(TARGET).hex -flash_patched: usb_device_cdc.bin - ./inject_serial_number.py -i usb_device_cdc.bin -o patched.bin - ${CHPROG} patched.bin +$(TARGET).bin: $(TARGET).ihx + $(OBJCOPY) -I ihex -O binary $(TARGET).ihx $(TARGET).bin + +flash: $(TARGET).bin + $(CHPROG) $(TARGET).bin + +flash_patched: $(TARGET).bin + ./inject_serial_number.py -i $(TARGET).bin -o patched.bin + $(CHPROG) patched.bin rm patched.bin -include Makefile.include +.DEFAULT_GOAL := all +all: $(TARGET).bin $(TARGET).hex + +clean: + rm -f \ + $(notdir $(RELS:.rel=.asm)) \ + $(notdir $(RELS:.rel=.lst)) \ + $(notdir $(RELS:.rel=.mem)) \ + $(notdir $(RELS:.rel=.rel)) \ + $(notdir $(RELS:.rel=.rst)) \ + $(notdir $(RELS:.rel=.sym)) \ + $(notdir $(RELS:.rel=.adb)) \ + $(TARGET).lk \ + $(TARGET).map \ + $(TARGET).mem \ + $(TARGET).ihx \ + $(TARGET).hex \ + $(TARGET).bin diff --git a/hw/usb_interface/ch552_fw/Makefile.include b/hw/usb_interface/ch552_fw/Makefile.include deleted file mode 100644 index d4f7a8c..0000000 --- a/hw/usb_interface/ch552_fw/Makefile.include +++ /dev/null @@ -1,70 +0,0 @@ -####################################################### - -# toolchain -CC = sdcc -OBJCOPY = objcopy -PACK_HEX = packihx -WCHISP ?= wchisptool -g -f - -####################################################### - -EXTRA_FLAGS = -D BUILD_CODE - -FREQ_SYS ?= 24000000 - -XRAM_SIZE ?= 0x0400 - -XRAM_LOC ?= 0x0000 - -CODE_SIZE ?= 0x3800 - -ROOT_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) - -CFLAGS := -V -mmcs51 --model-small \ - --xram-size $(XRAM_SIZE) --xram-loc $(XRAM_LOC) \ - --code-size $(CODE_SIZE) \ - -I$(ROOT_DIR)include -DFREQ_SYS=$(FREQ_SYS) \ - $(EXTRA_FLAGS) - -LFLAGS := $(CFLAGS) - -RELS := $(C_FILES:.c=.rel) - -print-% : ; @echo $* = $($*) - -%.rel : %.c - $(CC) -c $(CFLAGS) $< - -# Note: SDCC will dump all of the temporary files into this one, so strip the paths from RELS -# For now, get around this by stripping the paths off of the RELS list. - -$(TARGET).ihx: $(RELS) - $(CC) $(notdir $(RELS)) $(LFLAGS) -o $(TARGET).ihx - -$(TARGET).hex: $(TARGET).ihx - $(PACK_HEX) $(TARGET).ihx > $(TARGET).hex - -$(TARGET).bin: $(TARGET).ihx - $(OBJCOPY) -I ihex -O binary $(TARGET).ihx $(TARGET).bin - -flash: $(TARGET).bin pre-flash - $(WCHISP) $(TARGET).bin - -.DEFAULT_GOAL := all -all: $(TARGET).bin $(TARGET).hex - -clean: - rm -f \ - $(notdir $(RELS:.rel=.asm)) \ - $(notdir $(RELS:.rel=.lst)) \ - $(notdir $(RELS:.rel=.mem)) \ - $(notdir $(RELS:.rel=.rel)) \ - $(notdir $(RELS:.rel=.rst)) \ - $(notdir $(RELS:.rel=.sym)) \ - $(notdir $(RELS:.rel=.adb)) \ - $(TARGET).lk \ - $(TARGET).map \ - $(TARGET).mem \ - $(TARGET).ihx \ - $(TARGET).hex \ - $(TARGET).bin diff --git a/hw/usb_interface/ch552_fw/baud rate calculator.ods b/hw/usb_interface/ch552_fw/baud rate calculator.ods deleted file mode 100644 index e3ec753c76474279019fb448cc4e13593633f7bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19487 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 ZhNGMg@MZ-T@(c`uK$r?Fbe6b-cmS|7Y!3hc diff --git a/hw/usb_interface/ch552_fw/encode_usb_strings.py b/hw/usb_interface/ch552_fw/encode_usb_strings.py index 151d2f6..697514e 100755 --- a/hw/usb_interface/ch552_fw/encode_usb_strings.py +++ b/hw/usb_interface/ch552_fw/encode_usb_strings.py @@ -20,37 +20,51 @@ def descriptor_to_string(descriptor): def string_to_descriptor(string): """ Convert a python string into a bytes object containing a USB string descriptor""" descriptor = bytearray() - descriptor.append(0x00) # placeholder for length - descriptor.append(0x03) + descriptor.append(0x00) # Placeholder for length + descriptor.append(0x03) # Descriptor type (String) descriptor.extend(string.encode('utf-16')[2:]) # crop the BOM - descriptor[0] = len(descriptor) + descriptor[0] = len(descriptor) # Set length of this descriptor (in bytes) return bytes(descriptor) +def format_descriptor(name, value): + descriptor = string_to_descriptor(value) + formatted = [ + 'unsigned char FLASH {}[] = {{ // "{}"'.format(name, value), # Add string as a comment + ' {}, // Length of this descriptor (in bytes)'.format(descriptor[0]), + ' 0x03, // Descriptor type (String)' + ] + + formatted.extend( + [ + ' ' + ', '.join( + ["'{}', 0".format(chr(b)) if b != 0x00 else "0x00" for b in descriptor[2 + i:2 + i + 8:2]] + ) + ',' + for i in range(0, len(descriptor[2:]), 8) # 8 bytes = 4 characters + ] + ) + formatted.append('};\n') + return '\n'.join(formatted) if __name__ == "__main__": - manufacturer = 'Tillitis' - product = 'MTA1-USB-V1' - serial = "68de5d27-e223-4874-bc76-a54d6e84068f" + strings = { + "ProdDesc": "MTA1-USB-V1", + "ManufDesc": "Tillitis", + "SerialDesc": "68de5d27-e223-4874-bc76-a54d6e84068f", + "CdcCtrlInterfaceDesc": "CDC-Ctrl", + "CdcDataInterfaceDesc": "CDC-Data", + "FidoHidInterfaceDesc": "FIDO-HID", + "TkeyCtrlInterfaceDesc": "TKEY-Ctrl" + } + + with open('include/usb_strings.h', 'w') as f: + f.write('#ifndef __USB_STRINGS_H__\n') + f.write('#define __USB_STRINGS_H__\n') + f.write('\n') + f.write('#include "mem.h"\n') + f.write('\n') + + for name, value in strings.items(): + f.write(format_descriptor(name, value) + '\n') - with open('usb_strings.h', 'w') as f: - f.write('#ifndef USB_STRINGS\n') - f.write('#define USB_STRINGS\n') - - f.write('unsigned char __code ProdDesc[]={{ // "{}"\n'.format(product)) - f.write(' ') - f.write(', '.join(['0x{:02x}'.format(i) for i in string_to_descriptor(product)])) - f.write('\n};\n\n') - - f.write('unsigned char __code ManufDesc[]={{ // "{}"\n'.format(manufacturer)) - f.write(' ') - f.write(', '.join(['0x{:02x}'.format(i) for i in string_to_descriptor(manufacturer)])) - f.write('\n};\n\n') - - f.write('unsigned char __code SerialDesc[]={{ // "{}"\n'.format(serial)) - f.write(' ') - f.write(', '.join(['0x{:02x}'.format(i) for i in string_to_descriptor(serial)])) - f.write('\n};\n\n') - - f.write('#endif\n') diff --git a/hw/usb_interface/ch552_fw/include/debug.h b/hw/usb_interface/ch552_fw/include/debug.h index ff406c7..1e443b3 100644 --- a/hw/usb_interface/ch552_fw/include/debug.h +++ b/hw/usb_interface/ch552_fw/include/debug.h @@ -186,6 +186,8 @@ inline uint8_t CH554UART1RcvByte( ) *******************************************************************************/ inline void CH554UART1SendByte(uint8_t SendDat) { + while(gpio_p1_4_get() == 0) + ; SBUF1 = SendDat; // Query sending, the interrupt mode does not need the following two statements, but TI=0 is required before sending while (U1TI == 0) ; diff --git a/hw/usb_interface/ch552_fw/include/usb_strings.h b/hw/usb_interface/ch552_fw/include/usb_strings.h index a36d512..2302329 100644 --- a/hw/usb_interface/ch552_fw/include/usb_strings.h +++ b/hw/usb_interface/ch552_fw/include/usb_strings.h @@ -3,22 +3,22 @@ #include "mem.h" -unsigned char FLASH ProdDesc[]={ // "MTA1-USB-V1" +unsigned char FLASH ProdDesc[] = { // "MTA1-USB-V1" 24, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'M', 0, 'T', 0, 'A', 0, '1', 0, '-', 0, 'U', 0, 'S', 0, 'B', 0, - '-', 0, 'V', 0, '1', 0 + '-', 0, 'V', 0, '1', 0, }; -unsigned char FLASH ManufDesc[]={ // "Tillitis" +unsigned char FLASH ManufDesc[] = { // "Tillitis" 18, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'T', 0, 'i', 0, 'l', 0, 'l', 0, - 'i', 0, 't', 0, 'i', 0, 's', 0 + 'i', 0, 't', 0, 'i', 0, 's', 0, }; -unsigned char FLASH SerialDesc[]={ // "68de5d27-e223-4874-bc76-a54d6e84068f" +unsigned char FLASH SerialDesc[] = { // "68de5d27-e223-4874-bc76-a54d6e84068f" 74, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) '6', 0, '8', 0, 'd', 0, 'e', 0, @@ -32,28 +32,28 @@ unsigned char FLASH SerialDesc[]={ // "68de5d27-e223-4874-bc76-a54d6e84068f" '0', 0, '6', 0, '8', 0, 'f', 0, }; -unsigned char FLASH CdcCtrlInterfaceDesc[] = { +unsigned char FLASH CdcCtrlInterfaceDesc[] = { // "CDC-Ctrl" 18, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'C', 0, 'D', 0, 'C', 0, '-', 0, 'C', 0, 't', 0, 'r', 0, 'l', 0, }; -unsigned char FLASH CdcDataInterfaceDesc[] = { +unsigned char FLASH CdcDataInterfaceDesc[] = { // "CDC-Data" 18, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'C', 0, 'D', 0, 'C', 0, '-', 0, 'D', 0, 'a', 0, 't', 0, 'a', 0, }; -unsigned char FLASH FidoHidInterfaceDesc[] = { +unsigned char FLASH FidoHidInterfaceDesc[] = { // "FIDO-HID" 18, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'F', 0, 'I', 0, 'D', 0, 'O', 0, '-', 0, 'H', 0, 'I', 0, 'D', 0, }; -unsigned char FLASH TkeyCtrlInterfaceDesc[] = { +unsigned char FLASH TkeyCtrlInterfaceDesc[] = { // "TKEY-Ctrl" 20, // Length of this descriptor (in bytes) 0x03, // Descriptor type (String) 'T', 0, 'K', 0, 'E', 0, 'Y', 0, diff --git a/hw/usb_interface/ch552_fw/main.c b/hw/usb_interface/ch552_fw/main.c index 1bfbe6d..33277a9 100644 --- a/hw/usb_interface/ch552_fw/main.c +++ b/hw/usb_interface/ch552_fw/main.c @@ -27,7 +27,6 @@ uint16_t SetupLen = 0; uint8_t SetupReq = 0; uint8_t UsbConfig = 0; const uint8_t *pDescr = NULL; // USB configuration flag -USB_SETUP_REQ SetupReqBuf = { 0 }; // Temporary Setup package #define UsbSetupBuf ((PUSB_SETUP_REQ)Ep0Buffer)