add coreos migration post

This commit is contained in:
Matthew Tran
2025-05-22 01:12:14 -07:00
parent f36aa2316c
commit bf74966191
3 changed files with 38 additions and 0 deletions
@@ -42,3 +42,11 @@ In the future, it would be good to buffer the packets going to and coming from T
Since the initial completion of this project, I've continued work on it and it has become something I'm quite proud of. Using task notifcations instead of binary semaphores improves speed, although I haven't measured by exactly how much. I did a massive refactor of the code to decouple the TinyUSB application from the Ethernet layer, creating portable `Eth` and `OASPI` classes in the process. To minimize copying, packets are now allocated and deallocated from a fixed size pool of maximum length packets. Doing this also made buffering packets between TinyUSB and the Ethernet layer easy. Since WSL doesn't come with RNDIS/ECM drivers, I also switched to NCM for true driverless use everywhere. Even more, I modified the HID interface to allow arbitrary OASPI register options, which even allows a webpage to access it using WebHID. As a proof of concept, I also implemented my `Eth` class in macOS using `libpcap`.
Currently I'm limited to about 6Mbps due to my use of USB FS. If a MAC-PHY with topology discovery ever becomes publicly available, I'll definitely build a new board with it and USB HS. If I get paid to do it though, it might have to be closed-source 😧.
## update 5-21-25
Well looks like `$DAYJOB` needed an in-house USB to 10BASE-T1S dongle. The full design will never be open-source, but I'll discuss high level details here. For the hardware, I switched to a microcontroller from the STM32U5 family since it has USB HS with a built-in PHY and USB PD. The not-yet-publicly-available MAC-PHY importantly supports topology discovery. To support powering 48V/5A devices, I added a beefy PoDL injector circuit and associated HSD. From a raw parts perspective, that board is one of my most expensive.
On the firmware side, the first change was supporting multiple microcontrollers, board configurations, and applications. I then expanded the HID RPC significantly to support the HSD and topology discovery controls. I also fixed the macOS `BIOCPROMISC` issue which was a capabilities advertisement issue. As you might guess, the intention of the `Eth` class was to also implement it on Windows, macOS, and Linux so I could build applications that run cross-platform. Without revealing too much, I can say that the custom protocol library I'm working on at `$DAYJOB` works seamlessly across embedded and desktop OSes.
In terms of performance, I can hit 9.5Mbps in CSMA/CD mode which is about the maximum one can expect for 10BASE-T1S. Topology discovery also works well after tweaking the PoDL circuit inductance a bit to fix ringing issues with some MAC-PHYs (Onsemi cough-cough). As my first Altium/mouse board in almost 4 years, I'm quite proud of it. If I ever leave `$DAYJOB` I might talk more about it, but this is where the open-source side of the story ends for now.