Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Test firmware changes on a PandA

This guide covers the workflow for building and deploying server or FPGA firmware changes to a live PandA for manual testing.

Simulation-mode testing (server)

Server changes can be unit-tested natively in simulation mode — no PandA required. The only dependencies are make and gcc.

cd PandABlocks-server
make sim

Simulation mode runs the server against a software model of the block hardware. See the PandABlocks-server documentation for the full test flow.

Live testing with devtool (server and FPGA)

To test changes against real hardware, use the Yocto devtool workflow inside the kas build container:

  1. Open a shell in the kas container:

    KAS_MACHINE=<machine> kas-container --ssh-agent shell kas.yml
  1. Use devtool to build an updated package in the Yocto workspace:

    devtool modify <recipe-name>
    # make your changes in the workspace source tree
    devtool build <recipe-name>
  2. Deploy the built .ipk to the PandA:

    devtool deploy-target <recipe-name> root@<panda-hostname>
  3. Restart the relevant service on the PandA:

    ssh root@<panda-hostname> systemctl daemon-reload
    ssh root@<panda-hostname> systemctl restart <service-name>
  4. Test your changes on the live hardware.

Deploying a custom FPGA bitstream

To test a custom FPGA bitstream:

  1. Build the .ipk containing the bitstream in PandABlocks-FPGA (see the FPGA repo docs).

  2. Install it on the PandA:

    scp panda-fpga_<version>.ipk root@<panda-hostname>:/tmp/
    ssh root@<panda-hostname> opkg install --force-reinstall /tmp/panda-fpga_<version>.ipk
  3. Override the active bitstream if needed — see Choose the FPGA bitstream.

  4. Restart the relevant service:

    ssh root@<panda-hostname> systemctl restart panda-fpga