-
Notifications
You must be signed in to change notification settings - Fork 17
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
IS25LP080 on v0.3 is broken #29
Comments
Interesting. Can you tell us what board you are running, and at what clock speed? If you say 0.2 works, which exact 0.2 version did you try? v0.2.1? Besides some build infrastructure, the only real difference between v0.2.1 and v0.3.0 is that the clock divisor was changed from 4 to 2, essentially doubling the flash access speed. Perhaps that's too fast for your chip? |
The board is custom, the specific model of the flash chip is Datasheet lists
That seems pretty quick to me. |
Yes, as I understand it that should (in theory) be fine unless you overclock the rp2040 significantly. Still, this clock divider is the only difference between the two versions. Comparing the binary files shows:
That's a diff of the disassembly generated using However, at these frequencies, signal quality also matters. Perhaps something is distorting the signal too much when running at 62MHz, while at 31MHz the signal quality is still sufficient? While it would be great to find the root cause, the immediate fix probably is to stay with v0.2.1. The only advantage v0.3.0 would offer you is increased flash read speed. (EDIT: Just saw "RF systems" in your profile, so you probably know much more about signal quality at those frequencies than I do 😄 ) |
Very strange indeed! I have no problems with v0.2.1, just wanted to bring this up. This chip has also been pretty flaky, I had a small USON version of it on my old board that really had a hard time - lots of programming errors. I've since switched to the larger SOIC as I thought this was a solder reflow issue (and the programming problems did go away), but this still may just be a supplier problem (I ordered these from China). As far as signal integrity is concerned, I don't think that's it - I more or less copied Pico's layout, properly decoupled power lines and all. If there's anything I can read off the device that's useful, please let me know and I'd be more than happy to, however, I can't even get a breakpoint to set. |
Yes, correctly diagnosing this seems difficult. One approach could be loading a test firmware directly into RAM, and then trying to access flash from that firmware. But I wonder if that's worth the effort. It might even happen that the flash is perfectly readable that way: In raspberrypi/pico-sdk#1304 (comment) there is a case were just waiting a little bit longer for the oscillator to stabilize makes the problem go away. The important thing we know now is that there are situations where the faster clock doesn't work, even without overclocking. We shouldn't ignore that. As long as it's only happening in rare cases, I don't think we should revert to the slower frequency. (It's not like we are overclocking the flash chip, or clock it faster than the C SDK would.) But we should improve our documentation, and ideally provide a better way to reduce the access speed if necessary. "Downgrade to v0.2.1" is a reasonable short-term solution, but I feel like we should aim for something better. |
Hey!
I've been working on some firmware for a custom board that utilizes the
IS25LP080
chip. Using 0.2 of this crate works fine, but simply switching to 0.3 prevents my design from booting. All I get back from probe-rs isFrame 1's address doesn't even look to be valid. Not sure what to make of this, maybe something upstream broke the bootloader?
The text was updated successfully, but these errors were encountered: