Idea: gateware with iso7816 + usb #1

Closed
opened 2022-04-28 13:42:38 +00:00 by laforge · 5 comments

It's not that I had any time to use what you developed so far yet (so not urgent by any means), but I think it might be useful to have a ISO7816 + USB gateware at some point, so that a FPGA-noob like myself could work on firmware for e.g. a CCID USB profile.

This in turn would allow us to stress/use the UART using standard tools/applications.

Not sure where we'd go from there, as there is currently no real plan to use this ISO7816 softcore in any specific product/project.

It's not that I had any time to use what you developed so far yet (so not urgent by any means), but I think it might be useful to have a ISO7816 + USB gateware at some point, so that a FPGA-noob like myself could work on firmware for e.g. a CCID USB profile. This in turn would allow us to stress/use the UART using standard tools/applications. Not sure where we'd go from there, as there is currently no real plan to use this ISO7816 softcore in any specific product/project.
laforge added the
enhancement
label 2022-04-28 13:45:17 +00:00

Also FPGA noob here, but if it fits on the Glasgow's ICE40 FPGA (https://www.crowdsupply.com/1bitsquared/glasgow), that board already has a FX2 USB frontend and it'd give this project more exposure?

Also FPGA noob here, but if it fits on the Glasgow's ICE40 FPGA (https://www.crowdsupply.com/1bitsquared/glasgow), that board already has a FX2 USB frontend and it'd give this project more exposure?
Owner

Glasgow is not meant for that. Trying to use it as a CCID device would be very impractical.

Glasgow is not meant for that. Trying to use it as a CCID device would be very impractical.
Owner

Added a gateware build option to include a no2usb core.
And also added another firmware that initializes it and just enumerates.

make USB=1 in the gateware project dir to build the gateware with USB core enabled.

Added a gateware build option to include a no2usb core. And also added another firmware that initializes it and just enumerates. `make USB=1` in the gateware project dir to build the gateware with USB core enabled.
tnt closed this issue 2022-05-02 13:36:14 +00:00

Glasgow is not meant for that. Trying to use it as a CCID device would be very impractical.

Oh, ok, I indeed had no idea :-S ... why would that be impractical? Because of the Glasgow architecture/connections, pure verilog vs applet (nmigen) integration, speed or sth else?

> Glasgow is not meant for that. Trying to use it as a CCID device would be very impractical. Oh, ok, I indeed had no idea :-S ... why would that be impractical? Because of the Glasgow architecture/connections, pure verilog vs applet (nmigen) integration, speed or sth else?
Owner

Because in glasgow applets don't control the FX2 firmware, hence don't control the descriptors. The whole architecture just provides a data pipe between your code in the python control app and your logic inside the FPGA and all the USB stuff is hidden. It's not designed at all to make it appear as any kind of custom/standard usb class device.

And then even if you threw away all the glasgow software stack to just use the hardware, you'd have to write your CCID stuff targetting a FX2, some cursed 8051 based architecture ...

Because in glasgow applets don't control the FX2 firmware, hence don't control the descriptors. The whole architecture just provides a data pipe between your code in the python control app and your logic inside the FPGA and all the USB stuff is hidden. It's not designed at all to make it appear as any kind of custom/standard usb class device. And then even if you threw away all the glasgow software stack to just use the hardware, you'd have to write your CCID stuff targetting a FX2, some cursed 8051 based architecture ...
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: tnt/iso7816-test#1
No description provided.