3 ms·
This project wouldn't exist without Dmitry's excellent project! Having an m0+ assembly language MIPs emulator makes all the difference...
by rscott2049 2y ago
This project wouldn't exist without Dmitry's excellent project! Having an m0+ assembly language MIPs emulator makes all the difference...
- anyfoo 2y agoAwesome project indeed! Since I have you here, what is the "DMA Sniffer" that you mention in your doc? A very quick search on the Internet didn't reveal too much.
- rscott2049 2y agoThe DMA Sniffer is part of the RP2040 DMA engine. It can perform a variety of functions on the DMA'd data, including CRCs, accumulation, bit-reversal, etc. I use the accumulation function to increment the address contained in the HyperRAM command packet after each scan line is DMA'd from HyperRAM to the scan line buffer. This allows re-use of the HyperRAM command packet, eliminating the need for a per scan line packet (3 uint_32s per scanline). Important for the emulator, as it runs out of RP2040 RAM (vs. flash).
- anyfoo 2y agoThanks. This got me curious enough that I'm now reading the datasheet. It seems exciting enough that I may likely choose it for my next project that requires a microcontroller. (When I don't want to use FPGAs, which I tend to overuse because I'm a big fan of them, and because cost margins usually don't matter private projects.)
- anyfoo 2y agoHaving read the data sheet now, using the DMA Sniffer's accumulation mode to generate PSRAM addresses is pretty genius.
- dmitrygr 2y agoYou made something cooler with that code than I did :)
- rscott2049 2y agoMaybe you'd like to help me get this over the finish line? I'm looking at a steep learning curve, trying to write a Lance chip emulator. I have been able to get LWIP to run on the DECstation HW. (Though Rev 2.1 does exhibit some packet drops which I'm looking at. Hopefully, there's some slight difference between the LAN8720a on the Waveshare boards, and the LAN8742 on rev 2.1 that needs some software...)
- dmitrygr 2y agoI can try to help. I do have some lance code here that works (IIRC). Email me, my email is in my profile