Recommendations for constrained embedded Linux environment
I have a constrained Zynq development platform with embedded Linux. First, I can't remove and reinstall the uSD as the platform is a card within a chassis and repeated mate/demate cycles on the backplane connection will degrade the connections for the connections for the GTs that are operating at 5.0 Gbps. Second, I can't modify the QSPI boot setup like the U-boot commands, initial bitstream, device tree, or Linux kernel and root filesystem as I have to remain compatible with another group's hardware setup. I can only develop bitstreams for the PL and stand alone applications for PL-PS interactions.
Current development has essentially used a modified peek/poke application. The problem with this that it has required a user to have low level knowledge of the design in the PL and every project is restricted to the same methods. We have recently been using gawk as a method to make a pseudo API around our peek/poke utility, but some complex functions have been slow.
I'm looking for any recommendations on how to make things more suitable for the dynamic PL but static PS setup. I have thought about tables at known addresses in the PL to trigger the loading of drivers with insmod. I also have thought about making our existing utility something that is started after the PL is programmed and then commanded via a socket or named pipe. But if anyone else has a recommended methodology that suits this type of development environment, I'm looking for advice.