greatscottgadgets / greatfet Goto Github PK
View Code? Open in Web Editor NEWGreatFET firmware and host software
Home Page: https://greatscottgadgets.com/greatfet/
License: BSD 3-Clause "New" or "Revised" License
GreatFET firmware and host software
Home Page: https://greatscottgadgets.com/greatfet/
License: BSD 3-Clause "New" or "Revised" License
We currently have a method of streaming samples from the internal ADC in the MCU, but I would like a Python function on the host that retrieves a single sample. This function should additionally be implemented in greatfet_adc.py as an alternative to continuous streaming.
Support SPI man-in-the-middle. Sniffing should be possible with the command-line tool, and there should be an indication of the direction of communication over the bus. From the Python API it should be possible to block or modify certain SPI transactions.
Implement I2C slave mode. (We currently only support master mode.) This should be accessible from firmware, the Python API, and the I2C command-line tool.
There's a servo on my desk, we should be able to control it from a GreatFET
Use GoodFET as a reference
We should have a tool that supports flash dump, flash erase, flash write, flash verify, peek, and poke. Avoid erasing info flash except as a separate option.
Support running logic analysis while simultaneously doing other things such as I2C or SPI.
Calling set_configuration from pyusb on greatfet resutls in an input/output error.
strace output for a greatfet:
openat(AT_FDCWD, "/dev/bus/usb/003/018", O_RDWR) = -1 EPIPE (Broken pipe)
Same strace for another usb device:
openat(AT_FDCWD, "/dev/bus/usb/002/004", O_RDWR) = 9
ioctl(9, USBDEVFS_GET_CAPABILITIES, 0x21cc594) = 0
ioctl(9, USBDEVFS_SETCONFIGURATION, 0x7fffc97809ac) = 0
The system in question uses an Intel Corporation Wildcat Point-LP USB xHCI Controller (rev 03) and runs Linux kernel 4.14.0-3-amd64 #1 SMP Debian 4.14.17-1 (2018-02-14) x86_64 GNU/Linux.
Versions of pyusb and libusb:
pyusb 1.0.2
libusb 2:1.0.21-2
Add support for peek and poke of MSP430 CPU registers. Is this even possible via JTAG? Do we need to inject little assembly routines to support this? Would that be worth doing?
Support monitor (sniffer) mode from the SPI command-line tool.
Write a page on the wiki explaining our SPI functions and how they can be used from the command-line tool. Point to the command-line tool as sample code for the SPI Python API. See the Bus Pirate SPI guide for inspiration.
Support resuming or restarting execution after, for example, use of peek and poke.
The GPIO drivers need a re-write to avoid issues -- this is needed for the factory test jig.
hi dominicgs
i have made one greatfet myself but i can not find the pc software in
github,in greatfet repository or this repository。 i tried usb goodfet PC python software whrited by goodsman。but it seems not work。PC can not comincation with greatfet。 can you tell me where i can download the pc python software for greatfet。
There should be an easy way to uninstall the host code.
depends on new USB API
needed for sigrok support
Make it easy to use GreatFET as an oscilloscope in sigrok.
I would like an example implementation that can be called from Python (and maybe a command-line tool) on the host that demonstrates USB1 functioning in host mode. For example, it could just read descriptors from a device attached to USB1 and pass those along to the host attached to USB0.
Running python setup.py install
will only copy the .egg
into site-packages/
, but will not unpack it, or install the host utilities anywhere.
I am running OS X 10.10.5 (Yosemite) with Python 2.7 installed with macports into /opt/local
.
On OS X Python's site‑packages/
is located at /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/
.
Support the selection of I2C0 or I2C1. This should be configurable from firmware, the Python API, and the I2C command-line tool.
Allow values to be set in python that are represented in the output from the DAC.
Make GreatFET live up to its name! This could be implemented with either SPI or I2C or both. It could be supported in a command-line tool, or it could just be some example Python code.
Support slave mode from the SPI command-line tool.
Support flash dump, flash erase, flash write, flash verify, peek, and poke.
Provide the capability for a USB-orchestrated self-test mode, which should include:
dmesg
Port Chipcon functions from GoodFET. This will enable programming of YARD Stick One and the IM-Me with Begonia.
Write a page on the wiki explaining our I2C functions and how they can be used from the command-line tool. Point to the command-line tool as sample code for the I2C Python API. See the Bus Pirate I2C guide for inspiration.
There should be a command-line argument to set dac_value.
It would be nice to have a method of managing and keeping track of pin assignments / settings / functions. I think this could be implemented as a pin manager that will allow us to set / query pin settings.
Support I2C man-in-the-middle. Sniffing should be possible with the command-line tool, and there should be an indication of the direction of communication over the bus. From the Python API it should be possible to block or modify certain I2C transactions.
We want to abandon the use of USB vendor requests for most things and implement a GoodFET-style protocol over a bulk endpoint. This protocol should allow for future implementations of control interfaces other than USB, for example a UART or an interface from micropython that allows the same Python API as we have on the host.
Make a general-purpose I2C tool that supports arbitrary I2C transactions and I2C scan.
Use GoodFET as a reference: https://github.com/travisgoodspeed/goodfet/tree/master/firmware/apps/chipcon
Unify all command-line tools into a single command with an initial argument specifying the tool name (similar to how the git command works).
Implement I2C monitor (sniffer) mode. This should be accessible from firmware, the Python API, and the I2C command-line tool.
Implement a host tool that demonstrates and tests maximum speed transfer of data over Hi-Speed USB. This probably has to be done in C. It could be based on hackrf_transfer.
Run micropython on the M0 while providing a shared memory interface to GreatFET functions on the M4.
Make it easy to use GreatFET as a logic analyzer with sigrok.
Specifically there are commands that output things like "Utility for flashing the GreatFET's onboard SPI flash" that have been copied to tools with different functions.
Provide a way to configure the I2C clock speed. This should be configurable from firmware, the Python API, and the I2C command-line tool.
Brute force I2C addresses and report every address that results in an acknowledgement from a slave. The ACK indication can be found in the I2C status register. The scan function should be accessible from firmware and from the Python API.
Try to work out some sort of weight sensor for creme brulee
Implement UART control and bi-directional UART messages accessible from a command-line tool. The tool should support stdin and stdout so that it can be used in a pipeline like netcat.
We currently only support full-chip erase.
Remove I2C stuff. Make sure we're using the API correctly, that it works, and that it is good example code.
Implement support for the DS18B20 temperature sensor
Support triggering of logic analysis via GlitchKit.
Support access of certain functions such as GPIO, UART, SPI, I2C, USB from the Linux kernel. For example, it should be possible to use a GF1 as a USB to serial adapter that gives you a /dev/tty* device file.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.