diff --git a/Gemfile.lock b/Gemfile.lock index 97492d6..e8e57b4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -4,55 +4,56 @@ GEM addressable (2.8.7) public_suffix (>= 2.0.2, < 7.0) base64 (0.2.0) - bigdecimal (3.1.8) + bigdecimal (3.1.9) colorator (1.1.0) - concurrent-ruby (1.3.4) - csv (3.3.0) + concurrent-ruby (1.3.5) + csv (3.3.2) em-websocket (0.5.3) eventmachine (>= 0.12.9) http_parser.rb (~> 0) eventmachine (1.2.7) - faraday (2.10.1) - faraday-net_http (>= 2.0, < 3.2) + faraday (2.12.2) + faraday-net_http (>= 2.0, < 3.5) + json logger - faraday-net_http (3.1.1) - net-http + faraday-net_http (3.4.0) + net-http (>= 0.5.0) faraday-retry (2.2.1) faraday (~> 2.0) - ffi (1.17.0) - ffi (1.17.0-aarch64-linux-gnu) - ffi (1.17.0-aarch64-linux-musl) - ffi (1.17.0-arm-linux-gnu) - ffi (1.17.0-arm-linux-musl) - ffi (1.17.0-arm64-darwin) - ffi (1.17.0-x86-linux-gnu) - ffi (1.17.0-x86-linux-musl) - ffi (1.17.0-x86_64-darwin) - ffi (1.17.0-x86_64-linux-gnu) - ffi (1.17.0-x86_64-linux-musl) + ffi (1.17.1) + ffi (1.17.1-aarch64-linux-gnu) + ffi (1.17.1-aarch64-linux-musl) + ffi (1.17.1-arm-linux-gnu) + ffi (1.17.1-arm-linux-musl) + ffi (1.17.1-arm64-darwin) + ffi (1.17.1-x86-linux-gnu) + ffi (1.17.1-x86-linux-musl) + ffi (1.17.1-x86_64-darwin) + ffi (1.17.1-x86_64-linux-gnu) + ffi (1.17.1-x86_64-linux-musl) forwardable-extended (2.6.0) - google-protobuf (4.27.3) + google-protobuf (4.29.3) bigdecimal rake (>= 13) - google-protobuf (4.27.3-aarch64-linux) + google-protobuf (4.29.3-aarch64-linux) bigdecimal rake (>= 13) - google-protobuf (4.27.3-arm64-darwin) + google-protobuf (4.29.3-arm64-darwin) bigdecimal rake (>= 13) - google-protobuf (4.27.3-x86-linux) + google-protobuf (4.29.3-x86-linux) bigdecimal rake (>= 13) - google-protobuf (4.27.3-x86_64-darwin) + google-protobuf (4.29.3-x86_64-darwin) bigdecimal rake (>= 13) - google-protobuf (4.27.3-x86_64-linux) + google-protobuf (4.29.3-x86_64-linux) bigdecimal rake (>= 13) http_parser.rb (0.8.0) - i18n (1.14.5) + i18n (1.14.6) concurrent-ruby (~> 1.0) - jekyll (4.3.3) + jekyll (4.3.4) addressable (~> 2.4) colorator (~> 1.0) em-websocket (~> 0.5) @@ -84,17 +85,18 @@ GEM sass-embedded (~> 1.54) jekyll-watch (2.2.1) listen (~> 3.0) - kramdown (2.4.0) - rexml + json (2.9.1) + kramdown (2.5.1) + rexml (>= 3.3.9) kramdown-parser-gfm (1.1.0) kramdown (~> 2.0) liquid (4.0.4) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) rb-inotify (~> 0.9, >= 0.9.10) - logger (1.6.0) + logger (1.6.5) mercenary (0.4.0) - net-http (0.4.1) + net-http (0.6.0) uri octokit (4.25.1) faraday (>= 1, < 3) @@ -106,65 +108,53 @@ GEM rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rexml (3.3.5) - strscan - rouge (4.3.0) - rubyzip (2.3.2) + rexml (3.4.0) + rouge (4.5.1) + rubyzip (2.4.1) safe_yaml (1.0.5) - sass-embedded (1.77.8) - google-protobuf (~> 4.26) + sass-embedded (1.83.4) + google-protobuf (~> 4.29) rake (>= 13) - sass-embedded (1.77.8-aarch64-linux-android) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-aarch64-linux-gnu) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-aarch64-linux-musl) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-aarch64-mingw-ucrt) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-arm-linux-androideabi) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-arm-linux-gnueabihf) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-arm-linux-musleabihf) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-arm64-darwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-riscv64-linux-android) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-riscv64-linux-gnu) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-riscv64-linux-musl) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86-cygwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86-linux-android) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86-linux-gnu) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86-linux-musl) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86-mingw-ucrt) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-cygwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-darwin) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-linux-android) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-linux-gnu) - google-protobuf (~> 4.26) - sass-embedded (1.77.8-x86_64-linux-musl) - google-protobuf (~> 4.26) + sass-embedded (1.83.4-aarch64-linux-android) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-aarch64-linux-gnu) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-aarch64-linux-musl) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-aarch64-mingw-ucrt) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-arm-linux-androideabi) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-arm-linux-gnueabihf) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-arm-linux-musleabihf) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-arm64-darwin) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-riscv64-linux-android) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-riscv64-linux-gnu) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-riscv64-linux-musl) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-cygwin) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-darwin) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-linux-android) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-linux-gnu) + google-protobuf (~> 4.29) + sass-embedded (1.83.4-x86_64-linux-musl) + google-protobuf (~> 4.29) sawyer (0.9.2) addressable (>= 2.3.5) faraday (>= 0.17.3, < 3) - strscan (3.1.0) terminal-table (3.0.2) unicode-display_width (>= 1.1.1, < 3) - unicode-display_width (2.5.0) - uri (0.13.0) - webrick (1.8.1) + unicode-display_width (2.6.0) + uri (1.0.2) + webrick (1.9.1) PLATFORMS aarch64-linux @@ -208,4 +198,4 @@ DEPENDENCIES webrick BUNDLED WITH - 2.5.17 + 2.6.3 diff --git a/_pages/todo.md b/_pages/todo.md index 730d5d0..c82bbbb 100644 --- a/_pages/todo.md +++ b/_pages/todo.md @@ -10,7 +10,8 @@ Going into industry and college, I did not expect the sheer number of things tha Projects I'll get to next. - **hardware** - - **wireless solar keyboard** - full size, swappable keys, ch32 w/ nrf24, solar powered, usable in UEFI/BIOS + - **wireless solar keyboard** - full size, swappable keys, samd w/ nrf24, solar powered, usable in UEFI/BIOS + - **security system** - PoE cameras, battery backup, basic app - **Linux board** - probably an NXP or STM32 chip, maybe a Zynq - **software** - **autodbconv** - LDF/DBC parser built in Rust @@ -43,7 +44,6 @@ Projects I'll get to once I finish the others. - **Zynq breakout** - **Intel SoC breakout** - **CAN Sniffer** - no cutting wires, https://www.csselectronics.com/products/cancrocodile-contactless-can-adapter, inject a signal too? -- **Pi Zero Cluster** - got lots of them lying around, no SD cards - **SDR** - deploy the BLE/802.15.4 Chisel code you wrote (zero IF?) # Stuff to Learn diff --git a/_posts/2024/2024-8-26-playing-with-10base.md b/_posts/2024/2024-8-26-playing-with-10base.md index 3ca8c40..3287d82 100644 --- a/_posts/2024/2024-8-26-playing-with-10base.md +++ b/_posts/2024/2024-8-26-playing-with-10base.md @@ -36,3 +36,9 @@ In terms of performance, the driver works pretty well. Measuring on an oscillosc In the future, it would be good to buffer the packets going to and coming from TinyUSB. I'm definitely losing some packets if the OS doesn't read fast enough. It would be fun to play with cut-through mode for OASPI, squeezing a TCP/IP stack on, PoDL for 10BASE-T1S, topology discovery, and IEEE 1588 hardware timestamping. For now, this was a successful exploration. {% include gallery %} + +## update 1-19-25 + +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 😧.