The controller software for the CAERUS project, a toolset for reverse engineering legacy embedded systems.
- Windows (recommended)
- Python 3 (https://www.python.org/downloads/)
- Check "Add Python to PATH"
- Ensure Python's pip package manager is installed (enabled by default under "Customize Installation")
- Saleae Logic Software (https://www.saleae.com/downloads/)
- Git (optional)
- Clone the CAERUS controller software repository using git, or download a zipped archive from the repository
- Navigate to the top-level of the controller software repository
- Run the command
pip install -r requirements.txt
to install the required Python libraries - Open the Saleae Logic Software
Figure 1. Enabling Saleae Logic Software scripting socket server
- Open the "Options" menu, select "Preferences", select the "Developer" tab, and check the "Enable scripting socket server" check box, shown in Figure 1
- Click the "Save" button
Figure 2: Zybo board
- Ensure the board power switch is set to ON position (Switch outlined in Yellow in Figure 2)
- Connect micro side of the USB-A to USB-micro cable (Port outlined in Orange in Figure 2)
- Connect USB-A side of the USB-A to USB-micro to an available USB port on PC
Figure 3: Zybo Pmod Port Interface (Outlined in Red in Figure 2)
- CAERUS produces signals on the pin outlined in Green in Figure 3 for each channel in Figure 2; this pin should be used to connect to target device inputs.
- Connect the GND pin outlined in Blue in Figure 3 to the target device for a common ground
- Connect the Saleae Logic Analyzer via USB to an available USB port on PC
- When connecting the Saleae Logic Analyzer to a target device, ensure a ground pin is connected
- Open the Saleae Logic Software
- Ensure the Zybo board has been programmed. See section titled "Ephemerally Programming the Zybo board"
- Open the Controller Software
- Open the Windows command prompt or other terminal emulator
- Navigate to the top-level of the controller software repository
- Run with the command
python -m controller [saved profile]
- If the software crashes, it will attempt to save a profile in the current directory named crash[current date].profile. This profile can be loaded to resume work.
- When defining a signal, it uses the global sample rate setting. Set the global sample rate setting with the sample command before defining any signals; it defaults to 25 MHz in a new profile, which is too fast for most signals.
- A bug in the HDL implementation currently results in a hang when any channel other than I1 is selected as the "stop channel" or the channel whose address is observed as the condition to stop playback. This results in the software waiting forever to playback to finish. To avoid this, ensure the test set-up always has a non-looping signal with the shortest-duration signal on I1.
- A bug exists where using sample rates below 200 Hz usually results in incorrect playback. Use higher sample rates (> 300 Hz?) to avoid this.