Conductor Planning - angry-goose-initiative/wiki GitHub Wiki
Overview
Conductor is a project to help/control LETC and consists of two parts:
- A CLI tool that runs on a personal computer
- Software running on the Cora Z7 ARM core receives commands from the CLI and performs the specified operation. This software also performs any initialization required for LETC.
Command ideas
- Reset and pause execution
- Pause execution
- Step instruction (This may be difficult RTL-wise)
- Read from a memory location
- Write a memory location
- Load a binary/kernel from the host/the sd card
- Read from the register file (This may be difficult RTL-wise)
- Read the pc (This may be difficult RTL-wise)
- Read the current instruction (This may be difficult RTL-wise)
- Potentially option to reprogram the PL with a new bitstream on the fly? So we don't have to reload conductor or anything, enabling faster iteration/testing
Conductor UART Protocol
Command Steps
- Conductor CLI sends full command
- Conductor ARM sends ACK and any needed data or sends NACK
Command structure
- Start of transmission byte
- Command byte
- Any command specific data
- End of transmission byte
Response structure
- Start of transmission byte
- Echo command byte
- Ack/Nack byte
- If Nack, the Nack reason byte
- If Ack, any command specific data
- End of transmission byte