-
Notifications
You must be signed in to change notification settings - Fork 358
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
Add support for Cypress FX3 (Explorer) device with F/LOSS firmware (WIP) #154
base: master
Are you sure you want to change the base?
Conversation
I don't particularly see the issue with #148 - Where are you seeing the limitation? A while ago, Cypress released the full source of their SDK (fx3_sdk_1_3_3_src.zip) |
@cnlohr What @zeldin said but there's an important detail: the FX3 firmware from Infineon (naturally) depends on their SDK, which contains an OS that Infineon obtained a license for. The SDK doesn't work without the OS and the OS cannot be redistributed, which forces anyone who wants to work on the FX3 firmware to first agree to the license terms of the SDK and download the SDK. The solution created by @zeldin and improved on by @zougloub works without the OS and doesn't need the SDK at all. Hence, all of the FX3 firmware code is redistributable and anyone can build it as-is. To me, this difference is significant and perfectly aligns with the goals of sigrok. |
@zougloub , @zeldin How would you rank the maturity of the driver and the firmware? Is it usable and robust enough to merge it? What are the current limitations and which parts need major work? From what I understand, streaming doesn't yet work, which from my point of view is the killer feature of the FX2, so supporting it on the FX3 is equally essential. Is this something one of you can work towards? |
@zeldin Oh, my bad, I didn't realize. Even better then! |
Can we please have this merged? Is there any blocker? |
Hello Daniel, we currently don't have an expert available to review this PR and we don't have the manpower to merge PRs that will cause users to ask us for support. We do very much want to support the FX3 but it's not trivial and if users need to apply a patch to get support for it, it's at least understood that it's not officially supported. |
Well, if there was the possibility to merge this as a second-class driver, with delegated support [1] that would work for me. I don't think the extra code in here represents a big potential source of maintenance nightmare for the core contributors (there's one merge conflict in 2 and a half years). [1] the wiki / code could indicate a maintainer (eg. myself) with any issue or bug assigned to them |
Hi @abraxa , thanks for the explanation, that is a fair point. |
I'd like to help review this driver and get it merged. I don't have an FX3 board, but I can comment on C code like a champ. I also wrote the original fx2lafw driver. I don't understand where this F/LOSS firmware is though. Is the idea to develop this driver and only then develop fully free firmware for it to talk to, or am I missing something? |
It is right here ^^^ |
I'm doing some testing of this after a rebase onto master and noticed a few things with the "EZ-USBFX3" I picked up on AliExpress. It's described as "New FX3 USB3.0 Mini Type-C USB 100MHz 16 Channel Logic Analyzer Work With Sigrok PulseView" and is similar in form factor to the cheap FX2 ones.
Haven't done anything beyond capturing zeroes yet; will report back if I encounter anything else. |
A while ago @zeldin made fx3lafw, an adaption of fx2lafw for the Cypress FX3 chip, supporting in particular CYUSB3KIT-003 "SuperSpeed Explorer Kit", and a libsigrok fork supporting it. I have used it and took a few minutes to rebase it, but didn't follow up.
Recently #148 has support for the same hardware, but it takes a different firmware, which I find has two downsides:
So I'm taking some time to test #148 but also rebase the fx3lafw changes on the latest libsigrok.
What this provides, is a 32-channel LA:
And the acquisition performance is strange, but good enough for tests:
There is one extra feature but it is not perfect (cf. zeldin/libsigrok#1): to use of the device when it hasn't been flashed yet (case of an FX3 booting from USB eg. CYUSB3KIT-003 PMODE aka J4 jumper shorted), sigrok can use it (how to flash then use the firmware in one shot), but not always because the blank FX3 is presented as USB2 but then switches to USB3, which may be on a different bus:
And this only works if the bus topology is mirrored between USB2 and USB3.
Alternatively, the user can flash the firmware (with this or eg. https://git.code.sf.net/p/fx3load/code) and use it after.