-
Notifications
You must be signed in to change notification settings - Fork 228
applet.memory._25x_passthrough: new applet #1055
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
applet.memory._25x_passthrough: new applet #1055
Conversation
whitequark
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
After a very brief skim, the impression I get is that this applet isn't really stable or well understood enough to qualify for inclusion in the main branch. I can see quite a lot of "debug-quality" code and code which isn't sure of exactly what it is doing, and given the support commitment of "essentially forever" that's difficult to accept.
f2a6616 to
6ef8b1a
Compare
|
I have extensively tested the applet's capabilities with the combination of a Winbond chip and an RP2040.
Could you point some of it out? I know I have one "TODO" comment, which is basically I need to go searching for more Macronix datasheets, because in the datasheet I found a comment saying that my chip doesn't support command E3. So I need to see what type of command it might be on other Macronix chips, to see if I need to add a switch to tell the applet which one to support. But the rest of the code I'm fairly confident in, the only thing is missing is testing all of it. I have the ability to do more testing, I wrote this applet specifically to be useful for others. |
This has now been implement based on two datasheets: - Winbond W25Q80DVUXIE - Macronix MX25L6436F These chips implement incompatible ways to enter XIP mode. Not all the commands have been tested, only the following: - Non-quad/non-dual commands that go directly to "Wait-Cs-Deassert", and never change the IO directions - Command 0xEB that reads data over 4 i/o pins, and this has only been tested in XIP mode. - Going directly back into XIP mode after CS deassert-assert. - I can get an RP2040 to run through the passthrough, by using the `RX_SAMPLE_DLY` functionality at up to 77.5MHz SPI clock. Higher speeds are not possible on the RP2040, because RX_SAMPLE_DLY can only be set up to `4`, but the applet may be capable of more with other systems.
6ef8b1a to
4f5b13f
Compare
|
The two things that I found concerning were:
If you are confident in it then I will need to take a proper look instead. |
Yeah, I left some question marks there that I forgot to remove before, apologies.
The Works/Fails: stuff? That's the extensive testing I have done. It gives examples to attempt to describe the limits one might face because of the large turn-around latency introduced by glasgow, and how someone might be able to work around them. Fail doesn't mean that the applet fails but it means that the system cannot handle the latency with those particular settings. Just saying that it supports up to x MHz on the test jig is a bit misleading. Even if you say, you aren't allowed to hack on the Edit: newer SDK doesn't hardcode it anymore |
|
I think I need to understand the applet better before commenting on it further. |
|
I found a datasheet of a chip that supports command E3, but this chip is completely different. |
For more information, see https://pre-commit.ci.
|
I have refactored the code, most of the state machine states are now generated based on a chip specification, which should make it a lot more easier to expand it in the future to support more chips. |
This has now been implement based on two datasheets:
These chips implement incompatible ways to enter XIP mode. Not all the commands have been tested, only the following:
RX_SAMPLE_DLYfunctionality at up to 77.5MHz SPI clock. Higher speeds are not possible on the RP2040, because RX_SAMPLE_DLY can only be set up to4, but the applet may be capable of more with other systems.