2024-10-15 00:16:50 +06:00
_
2024-10-14 13:45:28 +06:00
2024-10-14 02:13:05 +06:00
2024-10-14 02:13:05 +06:00
2024-10-15 00:16:50 +06:00
2024-10-15 00:16:50 +06:00
2024-10-10 00:45:09 +06:00
2024-10-15 00:16:50 +06:00
2024-10-10 00:45:09 +06:00
2024-10-13 05:32:44 +06:00
2024-10-14 15:32:44 +06:00
2024-10-15 00:16:50 +06:00

ch32-node fw

fw for a ch32v203 node w/ w5500 ethernet

current

SysTick IRQ and DMA issue

Enabling the SysTick IRQ leads to a permanent hang of the socket.

  • With a 1ms IRQ interval, the hang occurs at DHCP_ACK during the check_DHCP_leasedIP -> sendto() ARP request.
  • With a 100ms interval, the hang occurs during the DNS request.
  • With a 1s interval it works
  • Disabling SPI DMA solves it (just commenting out reg_wizchip_spiburst_cbfunc), so it's most likely DMA related?
  • SPI DMA only works with prescalers 8 and 64?
  • Also, for some reason it needs a ~50ms delay before configuring w5500 when compiled with -O0, not needed with -Os...

Not an interrupt priority issue?: LA

previous (DNS Processing)

solved by patching the korean bloatlib (dns_makequery in DNS.c)

w/ ch32v003fun

Partial DNS message: 11 23 81 82 00 01 00 00 00 00 00 00 03 68 79 65 00 00 00 02 73 DNS_run() failed, res = 0

w/ WCH HAL (none-os).. I get a full response

Receive DNS message from 192.168.102.1(53). len = 56 Partial DNS message: 11 23 81 80 00 01 00 02 00 00 00 00 03 68 79 65 02 73 75 00 00 01 00 01 C0 0C 00 01 00 01 00 00 01 2C 00 04 68 15 33 7F C0 0C 00 01 00 01 00 00 01 2C 00 04 AC 43 B4 9A Result: 172.67.180.154

RCC_CTLR, GPIO Registers, SPIx_CTLR1 registers are identical

LA

ch32v003fun

ch32v003fun

00 00 34 11 27 01 00 00 01 00 00 00 00 00 00 03 68 79 65 00 00 00 02 73 75 00 00 00 00 01 00 01
  • 32 bytes long
  • (Post 68 79 65): 00 00 00 02 73 75 00 00 00 00 01 00 01

none-os

none-os

00 00 34 11 27 01 00 00 01 00 00 00 00 00 00 03 68 79 65 02 73 75 00 00 01 00 01
  • 27 bytes long
  • (Post 68 79 65): 02 73 75 00 00 01 00 01
Description
ch32v203 + w5500 eth node
Readme 7.1 MiB
Languages
C 97.6%
Assembly 2.1%
Makefile 0.3%