-
Notifications
You must be signed in to change notification settings - Fork 44
Py3 pcie transport #108
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
Open
darbymccauley
wants to merge
107
commits into
ska-sa:master
Choose a base branch
from
casper-astro:py3-pcie-transport
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Py3 pcie transport #108
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This emulates the tapcp transport but funnels TFTP messages through a redis PUBSUB connection. This (hopefully) allows multiple users to talk to SNAP boards without having issues with multiple tftp links to the SNAP's microblaze. It also means that devices not on the SNAP-net can talk to the boards, provided they have access to the redis gateway
Otherwise things get noisy.
Hardcode response timeout to 1s (should never happen unless the server isn't running)
So that it's consistent with the other read/writes, and we can replace the tftp instance with a redistftp class
With one thread dealing with each host
Hardcoded 1 isn't enough for some cases (flash erase)
Removed shared access to the connections dictionary from the processors. Now each has their own connection to their host.
Raise IOError when there is a sign that i2c operation fails Reset i2c bus after each i2c operation failure
Remove rampTest from init() and make it as an optional test Improve logging style init() return True or False, instead of error code
Improve I2C in terms of IO error
Make Si7051 based on Si70XX Add Si7021 Add model(), which identifies the model of the chip, e.g. 7021 or 7051
Improve snapadc initialization
Redis transport
Add Si7021
Otherwise lots of rogue redis connections build up. Without manually invoking the garbage collector this isn't guaranteed to save the day. However, in practice, it does.
…puts Also surn off synth A output which is unused. And... fix chip sepection logic, which was foiled by an inconsistent variable name
Empirical evidence suggests that sometimes the SNAP ADC(s) will initialize such that one of the cores is a sample offset from the others. This commit adds a test **not automatically checked** so that the user can quickly see if all cores are aligned. Strictly, for normal functionality (i.e. "good" spectra) one doesn't need _all_ the cores to be mutually aligned, just cores operating together as a single interleaved sampler. The implemented test does the easiest thing, and makes sure everything is aligned whether it needs to be or not. This is probably a pleasant feature anyway.
Since init now takes care of the demux mode
Add an option (and set to default behaviour) to only make sure lanes of each chip are synchronized in chip groups. Allow different chips to operate some number of clock cycles apart. This should be reasonable behaviour for all interleaving modes, but leads to far fewer calibration failures than enforcing inter-chip sync.
The following all needed to happen: - Relative imports need to be specified as such, python2's ambiguous importing no longer works. (https://www.python.org/dev/peps/pep-0328/#guido-s-decision) - The Queue module now is lowercase queue. (https://stackoverflow.com/questions/29687837/queue-importerror-in-python-3/29688081#29688081) - A few print statements that needed to become print functions. - StringIO module is now io.StringIO. (https://stackoverflow.com/questions/11914472/stringio-in-python3) - A few changes to the underlying symbols in the C implementation of progska needed to be made. As of this commit, I can import the module in an ipython session without it crashing. I haven't tested to see whether it works just yet.
The main change has been in skarab_definitions.py, the create_payload() function - previously in p2, a string was just a set of ASCII, representable in memory as you see it. Now with p3's unicode-by-default, you have to encode and unpack (using struct) to get the equivalent bytes. Also, dict.iteritems() becomes dict.items(), and changed the string formatting to be p3 version in a few more places. There are still exceptions that have e.message in them though, that will need to be changed before the port can be considered complete.
Turns out it only worked previously in very narrow circumstances.
time package is used during several exception handling
Fixes to setup.py, debug/test_rapid_katcp.py, and src/transport_katcp.py
Reworked layout for read-the-docs Updated installation guide
Reworked layout for read-the-docs Updated installation guide
Updated README with latest install information Updated index.rst to include some info from the README Cleaned up How-to-install-casperfpga
Fixed spelling error
Docs update (round 2)
…nto pcie-transport
…into pcie-transport
Like all good casperfpga arguments, this keyword isn't defined in the docstring, so who knows what it does. Probably it relates to the Ethernet memory map which changed [relatively] recently.
Without this functionality, the removal of the Gbe.setup() method means there isn't a good way to configure a gbe core's internal registers.
…_program() to program fpga, specific to when using katcp transport
Fixup snapadc
Consume iterator in ramp test
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
For review by Aaron Parsons