Work Done
I couldn’t get the RPi to flash the RM46. Uniflash isn’t supported and I couldn’t get the config file to work for OpenOCD.
- [x] Setup a Raspberry Pi and a private GitHub repo for experimenting
- I’m running Ubuntu 20.04 Server (ARM64) on the Pi
- [x] Configure the RPi as a self-hosted runner. Tests should be run on pull requests to main
- [x] Build a basic program on the RPi (A Blinky program is good enough)
- I built the OBC-firmware code. I basically just followed what’s described in OBC Firmware Development Workflow
- I also made a workflow to build the code on pull requests/pushes to the main branch
- [ ] Flash the LaunchPad using the RPi (Try OpenOCD or Uniflash)
- Apparently, UniFlash supports CLI commands, so I’ll try that first.
- Looks like UniFlash doesn’t work on ARM64 architectures, so I’m going to try OpenOCD. I’ll probably have to make some changes to the config file.
- [ ] Establish communication between the RPi and LaunchPad (Send serial data between them)
- [ ] Test the pipeline developed so far. Make a pull request → RPi builds image → RPi flashes MCU → MCU sends some data back to the RPi → Received data is shown on GitHub
- Once this is done, we can probably consider this our MVP Testing Setup
- [ ] Connect an Arduino or Nucleo Board to the RPi and LaunchPad
- [ ] Establish basic communication between the Arduino/Nucleo and the LaunchPad
- For example, the Arduino/Nucleo writes to a pin → LaunchPad reads from the pin
- [ ] Establish a system of communication between the RPi, Nucleo/Arduino, and the LaunchPad
- RPi flashes the MCU → RPi sends instructions to the Nucleo/Arduino → RPi receives feedback from LaunchPad
- The instructions that the RPi sends could be something simple for now. It could tell the Nucleo/Arduino to write High to a pin which activates an interrupt on the LaunchPad
- [ ] Tie it all together
- The complexity of the system can be increased over time. For example, we’ll want to be able to run more complex tests in the future, so more sophisticated communication between the LaunchPad and Arduino/Nucleo will be needed.
- Once the OBC is assembled, we can replace the LaunchPad in this setup with the OBC
Research
Ideas
- Look into QEMU Emulator?
- Using FreeRTOS for the Application Layer and Services Framework
- Remote testing setup using a Raspberry Pi to flash the OBC
Remote Testing Setup