Anyone have a favored (probably nix-based) setup for doing CI-like builds for and tests on an embedded system? Eg, I build and push to a separate box for running tests. I feel like maybe hercules-ci could do this, but I’m not familiar with it.
Conversation
Replying to
Maybe I'm just used to the pain of having no tools, but what do you need besides rsync + ssh?
1
1
Replying to
You’re right, really. I’m not sure if I should cross compile or build on the target. The last time I used cross compilation with nix was maybe two years ago, and I’m not sure how it’s changed since.
1
1
Replying to
Can't say. I rolled my own buildroot Nix wrapper a couple of years ago and that was a real pain. Mostly doing bare metal these days, where the firmware reload + board reset is all custom scripts triggered from the incremental build. I use NFS when possible (pull instead of push).
1
1
Replying to
That sounds like a good setup. Can you say what your target is? I’d love to see a bunch of examples of how people set this up.
1
1
Replying to
Nix+buildroot+ssh+rsync was VF6xx + AM335x. Later raw buildroot+ssh+rsync was SAMA5. Most of that later code I can test on x86, which uses separate build host + test PC mounting NFS. Bare metal is STM32 with gdbstub + relay board for power cycle + udev rule for firmware load.
1
1
My build tool builds on save + runs rsync/ssh test or triggers power cycle relay.
The gdbstub runs on /dev/ttyACMx as a special mode of the device's normal terminal interface, which auto-switches to application protocol once it recognizes a non-gdb packet.
1
Oh one more thing that is useful: I try to always build the full system disk image, then mount that image on build host and rsync that image to target to make sure that fresh image and incremental rsync are the same.
1
Show replies

