Any thoughts on how to handle different binary modes where we don’t control the protocol/software? Not for stuff written for the bus pirate, I mean other projects ported into binary mode.
It’s a cute parlor trick to make a bunch of apps work in a single interface, but the code ends up absolutely filthy and unmaintainable.
Some scenarios:
serial port access
For example GusmanB logic analyzer and pico_sdk_pio logic analyzer. I’ve ported both already and they work, but getting them to play nice on the same serial port is not happening. In this case I think a new menu option under the c
config menu to set the binary mode interface:
- Bus Pirate (compatible) mode
- Logic Analyzer 1
- Other device
- etc
This makes my life a lot easier for serial stuff.
Other USB access
Some devices, like the three JTAG interfaces I’m porting, are USB bulk or USB HID interfaces (not serial port/CDC). Further, most are identified by software that looks for their USB VID/PID.
We can add a USB bulk and HID interface, but it will use our existing USB VID/PID. That means submitting patches in most instances.
As far as I’ve seen, it’s not practical to make a single firmware change USB descriptors (USB VID/PID, interface types). Maybe it could be done with different compiles re-aligned in flash with a jump instruction?
end points
We have 16 USB endpoints.
1 Config
6 (3*2) 2 USB CDC serial
2 USB MSD disk
We have 7 remaining.
Bus Pirate framework
A possible solution is to make our own compiles of other firmwares within a small Bus Pirate framework to handle the LCD, buffers, power supply, etc.
Then the next step is to make compiling and releases efficient. I did some reading on CMake, and it doesn’t seem geared towards multiple builds in the same CMake file. I need to look into this more, it would be really nice to build multiple releases at once and make automation much easier.