Complete candleLight-compatible gs_usb implementation

- Added full candleLight VID/PID (0x1D50:0x606F) compatibility
- Implemented complete gs_usb protocol structures
- Enhanced bidirectional CAN-USB frame conversion
- Added vendor request handling for device configuration
- Integrated with Zephyr legacy USB device stack
- Support for CAN-FD frames with proper flag handling
- Echo frame functionality for gs_usb compliance
This commit is contained in:
2025-12-08 16:26:02 +01:00
parent b11c9958e8
commit ed6023141a
20 changed files with 8911 additions and 8752 deletions

View File

@@ -570,3 +570,29 @@
4159 5849 7869067194421706 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.hex dba34878a57f7dd2
4159 5849 7869067194421706 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.bin dba34878a57f7dd2
4159 5849 7869067194421706 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.stat dba34878a57f7dd2
547 1188 7869085405318696 CMakeFiles/app.dir/src/main.c.obj ebe0296bb97c2b57
390 1139 7869086286434697 CMakeFiles/app.dir/src/main.c.obj ebe0296bb97c2b57
425 1485 7869087523031292 CMakeFiles/app.dir/src/gs_usb_can.c.obj 76d15082267cbb09
676 2147 7869107481099792 CMakeFiles/app.dir/src/usb_gs_usb_class.c.obj 78f1b0c314e09918
2149 2827 7869107495833251 app/libapp.a 4550d6b7a137e6fc
2827 3591 7869107508693315 zephyr/zephyr_pre0.elf f6779521eb1719fd
2827 3591 7869107508693315 zephyr/zephyr_pre0.map f6779521eb1719fd
2827 3591 7869107508693315 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr_pre0.map f6779521eb1719fd
3592 3915 7869107512698711 zephyr/linker.cmd d9f72909047c7ee5
3592 3915 7869107512698711 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/linker.cmd d9f72909047c7ee5
3916 4698 7869107520846144 zephyr/isr_tables.c e1ecaa2b8677c5e6
3916 4698 7869107520846144 zephyr/isr_tables_vt.ld e1ecaa2b8677c5e6
3916 4698 7869107520846144 zephyr/isr_tables_swi.ld e1ecaa2b8677c5e6
3916 4698 7869107520846144 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/isr_tables.c e1ecaa2b8677c5e6
3916 4698 7869107520846144 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/isr_tables_vt.ld e1ecaa2b8677c5e6
3916 4698 7869107520846144 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/isr_tables_swi.ld e1ecaa2b8677c5e6
4700 5052 7869107521331338 zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj 68626e1fa57865c0
5052 6936 7869107534133454 zephyr/zephyr.elf dba34878a57f7dd2
5052 6936 7869107534133454 zephyr/zephyr.map dba34878a57f7dd2
5052 6936 7869107534133454 zephyr/zephyr.hex dba34878a57f7dd2
5052 6936 7869107534133454 zephyr/zephyr.bin dba34878a57f7dd2
5052 6936 7869107534133454 zephyr/zephyr.stat dba34878a57f7dd2
5052 6936 7869107534133454 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.map dba34878a57f7dd2
5052 6936 7869107534133454 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.hex dba34878a57f7dd2
5052 6936 7869107534133454 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.bin dba34878a57f7dd2
5052 6936 7869107534133454 C:/Users/iteedi/zephyrproject/projects/EWS/firmware/canfd_cdc_composite/build/zephyr/zephyr.stat dba34878a57f7dd2

View File

@@ -46,10 +46,10 @@ const struct _isr_table_entry __sw_isr_table _sw_isr_table[31] = {
{(const void *)0x0, (ISR)z_irq_spurious}, /* 2 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 3 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 4 */
{(const void *)0x8009c04, (ISR)0x80022ad}, /* 5 */
{(const void *)0x8009c02, (ISR)0x80022ad}, /* 6 */
{(const void *)0x8009c00, (ISR)0x80022ad}, /* 7 */
{(const void *)0x0, (ISR)0x8002581}, /* 8 */
{(const void *)0x8009d9c, (ISR)0x8002349}, /* 5 */
{(const void *)0x8009d9a, (ISR)0x8002349}, /* 6 */
{(const void *)0x8009d98, (ISR)0x8002349}, /* 7 */
{(const void *)0x0, (ISR)0x800261d}, /* 8 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 9 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 10 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 11 */
@@ -62,8 +62,8 @@ const struct _isr_table_entry __sw_isr_table _sw_isr_table[31] = {
{(const void *)0x0, (ISR)z_irq_spurious}, /* 18 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 19 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 20 */
{(const void *)0x8008f30, (ISR)0x8002ef5}, /* 21 */
{(const void *)0x8008f30, (ISR)0x8002e69}, /* 22 */
{(const void *)0x8008fe8, (ISR)0x8002f91}, /* 21 */
{(const void *)0x8008fe8, (ISR)0x8002f05}, /* 22 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 23 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 24 */
{(const void *)0x0, (ISR)z_irq_spurious}, /* 25 */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -8,9 +8,9 @@ ELF Header:
Type: EXEC (Executable file)
Machine: ARM
Version: 0x1
Entry point address: 0x8001fdd
Entry point address: 0x8002079
Start of program headers: 52 (bytes into file)
Start of section headers: 1905788 (bytes into file)
Start of section headers: 1918388 (bytes into file)
Flags: 0x5000200, Version5 EABI, soft-float ABI
Size of this header: 52 (bytes)
Size of program headers: 32 (bytes)
@@ -23,44 +23,44 @@ Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
[ 0] NULL 00000000 000000 000000 00 0 0 0
[ 1] rom_start PROGBITS 08000000 0000f4 0000bc 00 AX 0 0 4
[ 2] text PROGBITS 080000bc 0001b0 008c94 00 AX 0 0 4
[ 3] .ARM.exidx ARM_EXIDX 08008d50 008e44 000008 00 AL 2 0 4
[ 4] initlevel PROGBITS 08008d58 008e4c 000098 00 A 0 0 4
[ 5] device_area PROGBITS 08008df0 008ee4 000160 00 A 0 0 4
[ 6] sw_isr_table PROGBITS 08008f50 009044 0000f8 00 A 0 0 4
[ 7] can_driver_a[...] PROGBITS 08009048 00913c 00005c 00 A 0 0 4
[ 8] gpio_driver_[...] PROGBITS 080090a4 009198 000024 00 A 0 0 4
[ 9] reset_driver[...] PROGBITS 080090c8 0091bc 000010 00 A 0 0 4
[10] clock_contro[...] PROGBITS 080090d8 0091cc 00001c 00 A 0 0 4
[11] uart_driver_[...] PROGBITS 080090f4 0091e8 00001c 00 A 0 0 4
[12] log_const_area PROGBITS 08009110 009204 0000b0 00 A 0 0 4
[13] log_backend_area PROGBITS 080091c0 0092b4 000010 00 A 0 0 4
[14] tbss NOBITS 080091d0 0092c4 000004 00 WAT 0 0 4
[15] rodata PROGBITS 080091d0 0092c4 001388 00 A 0 0 4
[16] .ramfunc PROGBITS 20000000 00a788 000000 00 W 0 0 1
[17] datas PROGBITS 20000000 00a64c 000050 00 WA 0 0 4
[18] device_states PROGBITS 20000050 00a69c 000018 00 WA 0 0 1
[19] log_mpsc_pbu[...] PROGBITS 20000068 00a6b4 000038 00 WA 0 0 4
[20] log_msg_ptr_area PROGBITS 200000a0 00a6ec 000004 00 WA 0 0 4
[21] k_heap_area PROGBITS 200000a4 00a6f0 000014 00 WA 0 0 4
[22] k_sem_area PROGBITS 200000b8 00a704 000010 00 WA 0 0 4
[23] usb_descriptor PROGBITS 200000c8 00a714 00006f 00 WA 0 0 1
[24] .comment PROGBITS 00000000 00a788 000020 01 MS 0 0 1
[25] .debug_aranges PROGBITS 00000000 00a7a8 001e20 00 0 0 8
[26] .debug_info PROGBITS 00000000 00c5c8 10e271 00 0 0 1
[27] .debug_abbrev PROGBITS 00000000 11a839 01325c 00 0 0 1
[28] .debug_line PROGBITS 00000000 12da95 03c484 00 0 0 1
[29] .debug_frame PROGBITS 00000000 169f1c 004b4c 00 0 0 4
[30] .debug_str PROGBITS 00000000 16ea68 00d93d 01 MS 0 0 1
[31] .debug_loc PROGBITS 00000000 17c3a5 039a67 00 0 0 1
[32] .debug_ranges PROGBITS 00000000 1b5e10 00a1d8 00 0 0 8
[33] .ARM.attributes ARM_ATTRIBUTES 00000000 1bffe8 000030 00 0 0 1
[34] .last_section PROGBITS 0800a690 00a784 000004 00 WA 0 0 4
[35] bss NOBITS 20000138 00a788 001140 00 WA 0 0 8
[36] noinit NOBITS 20001278 00a788 004000 00 WA 0 0 8
[37] .symtab SYMTAB 00000000 1c0018 0093d0 10 38 1279 4
[38] .strtab STRTAB 00000000 1c93e8 007ea1 00 0 0 1
[39] .shstrtab STRTAB 00000000 1d1289 0001f1 00 0 0 1
[ 2] text PROGBITS 080000bc 0001b0 008d4c 00 AX 0 0 4
[ 3] .ARM.exidx ARM_EXIDX 08008e08 008efc 000008 00 AL 2 0 4
[ 4] initlevel PROGBITS 08008e10 008f04 000098 00 A 0 0 4
[ 5] device_area PROGBITS 08008ea8 008f9c 000160 00 A 0 0 4
[ 6] sw_isr_table PROGBITS 08009008 0090fc 0000f8 00 A 0 0 4
[ 7] can_driver_a[...] PROGBITS 08009100 0091f4 00005c 00 A 0 0 4
[ 8] gpio_driver_[...] PROGBITS 0800915c 009250 000024 00 A 0 0 4
[ 9] reset_driver[...] PROGBITS 08009180 009274 000010 00 A 0 0 4
[10] clock_contro[...] PROGBITS 08009190 009284 00001c 00 A 0 0 4
[11] uart_driver_[...] PROGBITS 080091ac 0092a0 00001c 00 A 0 0 4
[12] log_const_area PROGBITS 080091c8 0092bc 0000b0 00 A 0 0 4
[13] log_backend_area PROGBITS 08009278 00936c 000010 00 A 0 0 4
[14] tbss NOBITS 08009288 00937c 000004 00 WAT 0 0 4
[15] rodata PROGBITS 08009288 00937c 001468 00 A 0 0 4
[16] .ramfunc PROGBITS 20000000 00a920 000000 00 W 0 0 1
[17] datas PROGBITS 20000000 00a7e4 000050 00 WA 0 0 4
[18] device_states PROGBITS 20000050 00a834 000018 00 WA 0 0 1
[19] log_mpsc_pbu[...] PROGBITS 20000068 00a84c 000038 00 WA 0 0 4
[20] log_msg_ptr_area PROGBITS 200000a0 00a884 000004 00 WA 0 0 4
[21] k_heap_area PROGBITS 200000a4 00a888 000014 00 WA 0 0 4
[22] k_sem_area PROGBITS 200000b8 00a89c 000010 00 WA 0 0 4
[23] usb_descriptor PROGBITS 200000c8 00a8ac 00006f 00 WA 0 0 1
[24] .comment PROGBITS 00000000 00a920 000020 01 MS 0 0 1
[25] .debug_aranges PROGBITS 00000000 00a940 001e38 00 0 0 8
[26] .debug_info PROGBITS 00000000 00c778 1105ca 00 0 0 1
[27] .debug_abbrev PROGBITS 00000000 11cd42 0133c6 00 0 0 1
[28] .debug_line PROGBITS 00000000 130108 03c80c 00 0 0 1
[29] .debug_frame PROGBITS 00000000 16c914 004b9c 00 0 0 4
[30] .debug_str PROGBITS 00000000 1714b0 00d96d 01 MS 0 0 1
[31] .debug_loc PROGBITS 00000000 17ee1d 039ea3 00 0 0 1
[32] .debug_ranges PROGBITS 00000000 1b8cc0 00a2f0 00 0 0 8
[33] .ARM.attributes ARM_ATTRIBUTES 00000000 1c2fb0 000030 00 0 0 1
[34] .last_section PROGBITS 0800a828 00a91c 000004 00 WA 0 0 4
[35] bss NOBITS 20000138 00a920 001140 00 WA 0 0 8
[36] noinit NOBITS 20001278 00a920 004000 00 WA 0 0 8
[37] .symtab SYMTAB 00000000 1c2fe0 0094d0 10 38 1294 4
[38] .strtab STRTAB 00000000 1cc4b0 007f13 00 0 0 1
[39] .shstrtab STRTAB 00000000 1d43c3 0001f1 00 0 0 1
Key to Flags:
W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
L (link order), O (extra OS processing required), G (group), T (TLS),
@@ -69,12 +69,12 @@ Key to Flags:
Program Headers:
Type Offset VirtAddr PhysAddr FileSiz MemSiz Flg Align
EXIDX 0x008e44 0x08008d50 0x08008d50 0x00008 0x00008 R 0x4
LOAD 0x0000f4 0x08000000 0x08000000 0x0a558 0x0a558 RWE 0x4
LOAD 0x00a64c 0x20000000 0x0800a558 0x00137 0x00137 RW 0x4
LOAD 0x00a784 0x0800a690 0x0800a690 0x00004 0x00004 RW 0x4
EXIDX 0x008efc 0x08008e08 0x08008e08 0x00008 0x00008 R 0x4
LOAD 0x0000f4 0x08000000 0x08000000 0x0a6f0 0x0a6f0 RWE 0x4
LOAD 0x00a7e4 0x20000000 0x0800a6f0 0x00137 0x00137 RW 0x4
LOAD 0x00a91c 0x0800a828 0x0800a828 0x00004 0x00004 RW 0x4
LOAD 0x000000 0x20000138 0x20000138 0x00000 0x05140 RW 0x8
TLS 0x0092c4 0x080091d0 0x080091d0 0x00000 0x00004 R 0x4
TLS 0x00937c 0x08009288 0x08009288 0x00000 0x00004 R 0x4
Section to Segment mapping:
Segment Sections...

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff