# ch32-node fw fw for a ch32v203 node w/ w5500 ethernet ## current ### SysTick IRQ and DMA issue [Enabling](https://git.hye.su/mira/ch32-node/src/branch/master/src/main.c#L54) 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](https://git.hye.su/mira/ch32-node/src/branch/master/lib/ioLibrary_Driver/socket.c#L563). - With a 100ms interval, the hang occurs during the DNS request. - With a 1s interval it works - [Disabling SPI DMA](https://git.hye.su/mira/ch32-node/src/branch/master/src/w5500.c#L62) solves it (just commenting out `reg_wizchip_spiburst_cbfunc`), so it's most likely DMA related? - SPI DMA only works with [prescalers](https://git.hye.su/mira/ch32-node/src/branch/master/src/spi_dma.c#L140) 8 and 64? - Also, for some reason it needs a ~50ms delay before configuring w5500 when compiled **with** `-O0`, not needed with `-Os`... idk... ![systick_dma](notes/2024-10-14-182212_1566x610_scrot.png) ## ~~previous (DNS Processing)~~ solved by [patching](https://git.hye.su/mira/ch32-node/commit/259d63197e06c1a92b979490d4cd8f0fdb98f8d0#diff-6ba50689ba55dac7cfe3e9b011e594098c931e21) 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](notes/2024-10-10-191033_1876x540_scrot.png) ``` 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](notes/2024-10-10-191043_1891x525_scrot.png) ``` 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`